|
|
|
|
#1 |
|
Registered User
|
errore mplab sim
Ciao, stavo provando a simulare un programmino con mplab sim ma mi da questo errore:
ADC-W0008: No stimulus file attached to ADRESL for A/D. CORE-E0002: Stack under flow error occurred from instruction at 0x000020 il programma è il seguente: Codice:
processor 16f876a
#include "p16f876a.inc"
__CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
radix DEC
errorlevel -302
org 0x00
movlw 0
bsf STATUS,RP0 ; Banco 1
movlw 11000000b
movwf TRISC
movlw 20
movwf SPBRG ; 57600 BAUD
bsf TXSTA,BRGH
bsf TXSTA,TXEN
movlw 00000000b
movwf ADCON1 ; AN7-AN0 tutti ing. analogici Vref+/Vref-=Vdd,Vss
bcf STATUS,RP0 ; Banco 0
bsf RCSTA,SPEN ; ABILITA SERIALE
clrf PORTC
Cho_an0
movlw 10000001b ;Freq=625Khz(20Mhz/32),CH0 AN0, MODULO A/D ABILITATO
movwf ADCON0
bsf ADCON0,2 ;ABILITO BIT 2 PER INIZIO CONVERSIONE
btfsc ADCON0,2 ;VADO A TESTARE SE la trasmissione è finita
goto $-1
movfw ADRESH ;METTO IL RISULTATO DELLA CONVERSIONE IN W
call txdato
Ch1_an1
movlw 10001001b ;Freq=625Khz(20Mhz/32),CH1 AN1, MODULO A/D ABILITATO
movwf ADCON0
bsf ADCON0,2 ;ABILITO BIT 2 PER INIZIO CONVERSIONE
btfsc ADCON0,2 ;VADO A TESTARE SE la trasmissione è finita
goto $-1
movfw ADRESH ;METTO IL RISULTATO DELLA CONVERSIONE IN W
call txdato
txdato
movwf TXREG ;muovo il valore dI W in txreg
bsf STATUS,RP0
btfss TXSTA,TRMT ;testo se la trasmissione è finita
goto $-1
bcf STATUS,RP0
return
END
-Il programma non "dovrebbe" fare altro che leggere il valore analogico su AN0, convertirlo e inviarlo via seriale e poi passare a AN1 e fare la stessa cosa. Posso simulare un ingresso A/D con mplabsim? GRAZIE |
|
|
|
| Advertising | |
|
|
|
|
|
#2 |
|
Registered User
|
Non mi occupo di simulazione per cui del primo errore non ne so niente anche se mi pare di capire che al simulatore devi dare in pasto qualcosa (stimulus) che dica il valore letto dal convertitore.
__________________Per quanto riguarda il secondo è dovuto al fatto che fa un return senza chiamata e quindi si trova lo stack vuoto. Codice:
call txdato txdato movwf TXREG ;muovo il valore dI W in txreg bsf STATUS,RP0 btfss TXSTA,TRMT ;testo se la trasmissione è finita goto $-1 bcf STATUS,RP0 return
Camillo
Il VeroProgrammatore può contare fino a 1024 con le dita delle mani. Grazie a .mau. Le donne e i gatti fanno quello che vogliono, gli uomini e i cani dovrebbero rilassarsi e abituarsi all'idea. R.A.Heinlein |
|
|
|
|
|
#3 |
|
Registered User
|
ciao grazie per la risposta, cioè che tipo di loop dovrei fare?
cosi com'è il programma farebbe solo 2 conversioni e poi si fermerebbe giusto? se dopo la return ci mettesi un goto ch0_an0 andrebbe bene? sai per caso dov'è che posso immettere qualche valore de inserire nel conv per provarlo in simulazione? GRAZIE mille scusami per le mille domande! Buonaserata!!!!!! |
|
|
|
|
|
#4 | |
|
Registered User
|
Ciao ho modificato il programma e cosi non mi da più il problema con lo stack, dovrebbe fare un loop infinito tra ch0 e ch1
Quote:
Grazie mille spero possiate aiutarmi |
|
|
|
|
![]() |
Per le vostre immagini su questo forum potete usare PcTunerUp! Iscriviti gratuitamente alla nostra newsletter. |
| Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori) | |
| Strumenti Discussione | |
| Modalità Visualizzazione | |
|
|