Hallo zusammen,
ich versuch mich gerade an einem Pic 12F683 und hab Probleme mit den GPIO (IO-Pins):
Ich will hier testweise mal jeden Pin einzeln anschalten und dann wieder ausschalten. Seltsamerweise werden alle Pins auf 0 gesetzt sobald ein zugriff auf einen anderen Pin geschieht. Also ich sehe am Oszi das z.B. GPIO.0 auf high geht aber dann sofort mit dem nächsten Befehl wieder auf low, obwohl der nächste Befehl ("bcf GPIO,1") nichts mit diesen Pin zu tun hat.
Bei Pin "GPIO.5 sehe ich aber das der Pin länger auf high bleibt weil wohl erst noch der Sprungbefehl kommt und dann erst wieder auf low geht.
Ist es etwa nicht möglich die Pins einzeln via "bsf" / "bcf" zu manipulieren?
Ein anderes Problem was ich noch habe ist das der Pin GPIO.3 nicht gesetzt werden kann. Habe ich etwas in der Konfiguration vergessen?
Code:
;**************************************************************
; los gehts mit dem Programm
org 0
goto Init
; Das Programm beginnt mit der Initialisierung
Init
bsf STATUS, RP0 ; Bank 1
movlw B'00110001' ; µC läuft mit 500kHz, Oscilator running from internal
movwf OSCCON
movlw B'00000000' ; alle Pins sind Input
movwf TRISIO
movlw B'00110111' ; aktiviere alle pull-up
movwf WPU
movlw B'00000111' ; enable pull-up, IRQ on falling edge, timer0 get clock internal, prescaler set to timer0 1:256
movwf OPTION_REG
bcf STATUS, RP0 ; Bank 0
main
bcf GPIO,0
bcf GPIO,1
bcf GPIO,2
bcf GPIO,3
bcf GPIO,4
bcf GPIO,5
bsf GPIO,0
bsf GPIO,1
bsf GPIO,2
bsf GPIO,3
bsf GPIO,4
bsf GPIO,5
goto main
end
Lesezeichen