IOC på PIC12F1572
Postat: 7 januari 2016, 17:04:51
Tidigare, på andra PIC, har det varit INTCON's GIE & GPIE och GPIO's IOC som ställdes in för att nyttja avbrotsrutin på I/O-portarna.
Och sedan styrs avbrotten över INTCON, GPIF etc.
På PIC12F1572 är det fortfarande samma vad gäller INTCON, med GIE & IOCIE.
Men sedan blir det betydligt mer, som det verkar.
IOCIF är fortfarande vad som utlöser avbrottet, men den slås inte av manuellt utan av att IOCAF nollas ner via ANDWF & XORWF. Om jag förstått rätt...?
Sedan kommer det riktigt besvärliga, tills man kan det...
IOC är inte IOC, utan reaktion på positiv och/eller negativ kant.
Ska det vara en IOC ska både IOCAP och IOCAN sättas, eller...?
Om jag nu då vill ha en IOC på RA5, som exempel, så borde det betyda följande:
(Jag har exkluderat BANKSEL för läsbarhets skull och radix är hex.)
BCF OPTION-REG, 7 ; ¬WPUEN
CLRF PORTA ; initiera PORTA
BSF TRISA, 5 ; RA5 för input
BCF ANSELA, 5 ; RA5 som digital
BSF WPUA, 5 ; RA5 med weak pull-up
BSF IOCAP, 5 ; RA5 med IOC på positiv kant
BSF IOCAN, 5 ; RA5 med IOC på negativ kant
CLRF IOCAF ; ta bort innevarande flaggor för PORTA
BCF INTCON, IOCIF ; ta bort innevarande IOC avbrottsanrop
BSF INTCON, GIE ; slå på allmän avbrottshantering
BSF INTCON, IOCIE ; slå avbrottshantering för IOC
Är detta korrekt?
Fattas det något just här?
Och sedan styrs avbrotten över INTCON, GPIF etc.
På PIC12F1572 är det fortfarande samma vad gäller INTCON, med GIE & IOCIE.
Men sedan blir det betydligt mer, som det verkar.
IOCIF är fortfarande vad som utlöser avbrottet, men den slås inte av manuellt utan av att IOCAF nollas ner via ANDWF & XORWF. Om jag förstått rätt...?
Sedan kommer det riktigt besvärliga, tills man kan det...
IOC är inte IOC, utan reaktion på positiv och/eller negativ kant.
Ska det vara en IOC ska både IOCAP och IOCAN sättas, eller...?
Om jag nu då vill ha en IOC på RA5, som exempel, så borde det betyda följande:
(Jag har exkluderat BANKSEL för läsbarhets skull och radix är hex.)
BCF OPTION-REG, 7 ; ¬WPUEN
CLRF PORTA ; initiera PORTA
BSF TRISA, 5 ; RA5 för input
BCF ANSELA, 5 ; RA5 som digital
BSF WPUA, 5 ; RA5 med weak pull-up
BSF IOCAP, 5 ; RA5 med IOC på positiv kant
BSF IOCAN, 5 ; RA5 med IOC på negativ kant
CLRF IOCAF ; ta bort innevarande flaggor för PORTA
BCF INTCON, IOCIF ; ta bort innevarande IOC avbrottsanrop
BSF INTCON, GIE ; slå på allmän avbrottshantering
BSF INTCON, IOCIE ; slå avbrottshantering för IOC
Är detta korrekt?
Fattas det något just här?