Använder UARTEN för att ta imot inställningar från PC.
För att förklara problem-symptomen först:
Vid vissa tillfällen (kan köra igenom koden flera gånger innan det buggar ur), så verkar min interruptrutin inte lyckas tömma RCREG, så senast mottagna datan skrivs i hela mitt "cylinder-minne" för alltid.. och den vill inte gå ur interrupt, mao mikrodatorn har därmed hängt sig.
Mottagningen av data från UART är interrupt-styrd.
Så när någon data trillar in så utförs den här rutinen, för att spara ner datan
i ett cylindriskt minne, (nedan interrupt-rutin & co):
Kod: Markera allt
org 0 ; Här börjar vi vid reset
clrf PCLATH ; ensure page bits are cleared
goto main
org 8 ; Här börjar vi vid interrupt
movwf W_TEMP ; Spara undan W
swapf STATUS,W ; Swapa status och släng in i W
movwf STATUS_TEMP ; Spara undan STATUS
;----------- INTERRUPT RUTIN START ---------------
rc_interrupt
movff RCREG,INDF1 ; Spara mottagen data i ett cylinder-minne
call oka_fsr1 ; Bläddra fram nästa adress i förväg för cylinderminnet
btfsc PIR1,5 ; Kontrollerar RC-interrupt flaggan, Finns mer data att hämta?
goto rc_interrupt ; Ja
bsf bitar,7 ; Indikera att data tagits imot från UART
;----------- INTERRUPT RUTIN SLUT ----------------
swapf STATUS_TEMP,W ; Swapa STATUS och släng in i W
movwf STATUS ; Återställ STATUS
swapf W_TEMP,F ; Swapa W_TEMP
SWAPF W_TEMP,W ; Swapa W_TEMP, och återställer till W
retfie ; Återvänder från interupt
Jag återkommer med mer information.. Täntke bara få lite första reaktioner från folk innan det blir för sent på kvällen..
edit: Rubrik