Hallo, ich hab ein sonderbares Problem mit dem Befehl sbis(c) beim ATmega16. Ich versuche am PortC den Zustand der Pins abzufragen, PortC wurde mit 0x00 im DDRC als Eingang definiert. Hier der Ausschnitt aus dem Porgramm: ... ldi temp1, 0x00 ;Port c = Eingang out DDRC, temp1 ldi temp1, 0x00 ;Port d = Eingang out DDRD, temp1 ldi temp1, 0xFF ;Port b = Ausgang out DDRB, temp1 ldi temp1, 0xFF ;Port a = Ausgang out DDRA, temp1 rcall lcd_init ;Display initialisieren loop: rcall lcd_clear ;Display löschen sbis PINC, 4 rcall LabelA sbis PINC, 1 rcall LabelB sbis PINC, 2 rcall LabelC sbic PINC, 0 rcall LabelD rjmp loop ... Mein Problem: Nur Pin 0 und 1 werden quasi vom Controller erfasst!! Bei den restlichen Pins kann ich machen was ich will, er überspringt nicht den nächsten Befehl!! z.B. Pin (Bit) Nr. 4, ich lege +5V an den Pin aber er überspringt nicht den Befehl "rcall LabelA"!! So ist es auch bei den restlichen außer Pin 1 und 0. Selbst wenn ich die Bits vertausche, also Bit 0 oder 1 auf LabelA beziehen lasse, funktioniert dann zwar das überspringen von LabelA aber das war's auch schon. Die Reihenfolge ist auch egal nur Pin 0 und 1 funktionieren. Ich habe den Controller schon getauscht und die Spannungen nachgemessen. Also am Controller und der Spannung scheint es dann wohl nicht zu liegen. Hab ich irgendwas nicht beachtet? Wo liegt der Hund begraben?
>Hab ich irgendwas nicht beachtet? Wo liegt der Hund begraben? Schaut ganz danach aus, als hättest Du die JTAG-Schnittstelle aktiviert. Pins 2-5 am PORTC sind JTAG-Pins.
Wow, du hast recht!! Danke, darauf wäre ich nie gekommen! Man muß JTAG disablen, ist anscheinend immer an. Im MCUCSR Bit Nr.7 auf 1 setzen. Wichtig: man muss das ganze zweimal hintereinander machen!!! ldi temp1, 0b10000000 out MCUCSR, temp1 out MCUCSR, temp1
Du kannst auch das JTAGEN-Fusebit auf 1 setzen, dann brauchst Du es nicht immer per JTD-Bit abschalten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.