MPLAB SIM: Simulera ett timer-interrupt? *Löst*
Postat: 10 juni 2010, 16:17:02
Kort sagt: Jag vill se vad som händer i koden när jag får ett interrupt på TMR0.
Har läst kapitel 6 i manualen (PDF-fil) men behöver något mer "hands on" för att jag ska fatta.
Jag lyckas helt enkelt inte komma på hur man ska göra.
I Simulus -> Asynch testade jag att lägga till en "action" som ökar T0CKI med 10 cykler när jag trycker "Fire" (>).
Jag har även en annan "action" som togglar RA4 för att simulera en knapp som ska läsas av när jag får ett timer0-interrupt.
Efter att jag lagt till dessa actions så tryckte jag "Save" och fick då:
"Stimulus: Please define some synchronous stimulus first."
Fråga 1) Vad innebär det och var jag hittar det?
Provade ändå att simulera (med "Animation") och körde den förstnämnda action. Då fick jag:
SIM-N0001 Note: Asynchronous Stimulus Pulse High T0CKI fired.
IOPORT-W0001: Pin(s) (0x04) on PORTA can not be stimulated due to being controlled by the A/D converter
IOPORT-W0001: Pin(s) (0x04) on PORTA can not be stimulated due to being controlled by the A/D converter
"due to being".. Säger man verkligen så? Det låter som grammatikfel i mina öron.
Därför förstår jag inte heller vad den raden vill säga mig. Det är fråga 2.
Kodklipp som visar att AD'n är disabled; (ifall det är det som meddelandet säger.)
(Jaha ja.. även denna gång blir tabbarna åt skogen när man klistra in kod här...)
Tips och svar mottages som vanligt med stor nyfikenhet.
Har läst kapitel 6 i manualen (PDF-fil) men behöver något mer "hands on" för att jag ska fatta.
Jag lyckas helt enkelt inte komma på hur man ska göra.

I Simulus -> Asynch testade jag att lägga till en "action" som ökar T0CKI med 10 cykler när jag trycker "Fire" (>).
Jag har även en annan "action" som togglar RA4 för att simulera en knapp som ska läsas av när jag får ett timer0-interrupt.
Efter att jag lagt till dessa actions så tryckte jag "Save" och fick då:
"Stimulus: Please define some synchronous stimulus first."
Fråga 1) Vad innebär det och var jag hittar det?
Provade ändå att simulera (med "Animation") och körde den förstnämnda action. Då fick jag:
SIM-N0001 Note: Asynchronous Stimulus Pulse High T0CKI fired.
IOPORT-W0001: Pin(s) (0x04) on PORTA can not be stimulated due to being controlled by the A/D converter
IOPORT-W0001: Pin(s) (0x04) on PORTA can not be stimulated due to being controlled by the A/D converter
"due to being".. Säger man verkligen så? Det låter som grammatikfel i mina öron.
Därför förstår jag inte heller vad den raden vill säga mig. Det är fråga 2.

Kodklipp som visar att AD'n är disabled; (ifall det är det som meddelandet säger.)
Kod: Markera allt
; Interrupt
banksel INTCON
bsf INTCON, GIE ;Global interrupt enable bit <--
bsf INTCON, PEIE ;Enable unmasked peripheral interrupts <--
bsf INTCON, T0IE ;Enable the Timer0 interrupt <--
bcf INTCON, INTE ;Disable the RA2/INT external interrupt
bcf INTCON, RAIE ;Disable the PORTA change interrupt <--
bcf INTCON, T0IF ;Timer0 did not overflow <--
bcf INTCON, INTF ;RA2/INT external interrupt did not occur
bcf INTCON, RAIF ;None of the PORTA-pins have changed state <--
banksel IOCA
movlw b'00000000' ;Inga interrupt on change på PORTA. <--
movwf IOCA
banksel PIE1
bcf PIE1, EEIE ;Disable the EE write complete interrupt
bcf PIE1, ADIE ;Disable the ADC-interrupt <-- DISABLED
bcf PIE1, RCIE ;Disable the EUSART receive interrupt
bcf PIE1, C2IE ;Disable the comparator C2 interrupt
bcf PIE1, C1IE ;Disable the comparator C1 interrupt
bcf PIE1, OSFIE ;Disable the oscillator fail interrupt
bcf PIE1, TXIE ;Disable the EUSART transmit interrupt
bcf PIE1, TMR1IE ;Disable the Timer1 overflow interrupt
banksel PIR1
clrf PIR1 ;Cleara alla interrupt
bcf PIR1, ADIF ;AD interrupt clear <--
; ADC
banksel ANSEL
movlw b'00000100' ;AN2 (pin 11) analog. Resten digitala
movwf ANSEL
banksel ADCON0
bsf ADCON0, ADFM ;Högerjusterad AD
bcf ADCON0, VCFG ;Vdd som referens
bcf ADCON0, CHS2 ;Channel: AN2 (pin 11)
bsf ADCON0, CHS1 ;Channel: AN2 (pin 11)
bcf ADCON0, CHS0 ;Channel: AN2 (pin 11)
bcf ADCON0, ADON ;ADC disabled <-- DISABLED!!
bcf ADCON0, GO_DONE ;AD-conversion NOT in progress <--
Tips och svar mottages som vanligt med stor nyfikenhet.
