Kod: Markera allt
start
banksel OSCCON
movlw b'00010001' ; Intosc, 125kHz
movwf OSCCON
clrf ANSEL ; No analog inputs
clrf OPTION_REG ; Disable WPU, INT falling edge
movlw b'00000100' ; GP2 IOC
movwf IOC
clrf INTCON
bsf INTCON, PEIE ; Enable peripheral interrupts
bsf INTCON, GPIE ; IOC interrupt
clrf PIE1
bsf PIE1, TMR1IE ; Enable Timer1-interrupt
movlw b'10011000' ; Timer1 LP, 1:2 prescale
movwf T1CON
movlw b'00000110' ; GP0 out, GP1/2 in
movwf TRISIO
banksel GPIO
clrf GPIO
Kretskoden fungerar inte som det är tänkt, så jag scopar GP1 och GP2. Nivåerna på GP1 är som förväntat; 0V utan knapp, respektive 5V med knapp.
GP2 däremot visar ~3.9V när knappen inte trycks, och spänningen pendlar upp och ner till 5V lite då och då. Trycker jag på knappen blir det låst på 5V. Se bild. Gul linje = GP1, grön = GP2.
Jag fattar inget. Beteendet känns lite som att det är en analog ingång, men ANSEL är helt rensat så pinnarna är digitala.
Vad händer här?