Hallo, ich versuche den atmega128 mit AVR-Studio4 zu programmieren und habe nun einige mini-testprogramme geschrieben: z.B: Signal durchschalten #include <avr/io.h> int main(void) { DDRB=0xFF; PORTB=0xFF; DDRE=0x00; PORTE=0xFF; while(1) { if(PORTE==0xFF) { PORTB=0xFF; } else { PORTB=0x00; } } } jedoch ändert sich der Ausgang nicht, ich habe zwar schon vermutet, dass der Eingangsport defekt ist, jedoch funktioniert es mit einem anderen Port auch nicht. Ist in der Software irgend ein Fehler???
@Michael H.
> if(PORTE==0xFF)
Klassischer Fehler. ;-)
Versuch mal
if(PINE==0xFF)
MFG
Falk
Dein Quelltext soll also dann alle Pins an PORTB hochziehen, wenn ALLE Pins an PORTE high sind, und sonst alle Pins an PORTB runterziehen ? Wie ziehst Du denn alle Pins von PORTE auf "1" ?
> Wie ziehst Du denn alle Pins von PORTE auf "1" ?
das problem ist, dass wenn ich den PORTE auf 0 ziehe, PORTB gar nicht
erst reagiert, also zu dem fall bin ich noch nicht gekommen,
und es stimmt schon ich muss "if(PINE==0xFF)" schreiben, doch das habe
ich auch schon versucht und es hat nicht funktioniert.
@Michael H. >> Wie ziehst Du denn alle Pins von PORTE auf "1" ? >das problem ist, dass wenn ich den PORTE auf 0 ziehe, PORTB gar nicht Das sind aber 8 Pins, das ist dir hoffentlich klar? >erst reagiert, also zu dem fall bin ich noch nicht gekommen, In deiner Routine reagiert er nur, wenn du alle 8 Pins (=PORTE) auf 0 ziehst, mittels Taster oder so. Denn du schaltest bei PORTE die internen Pull-ups ein. >und es stimmt schon ich muss "if(PINE==0xFF)" schreiben, doch das habe >ich auch schon versucht und es hat nicht funktioniert. Schreib mal if((PINE & 0x01) ==0x01) dann regiert dein Prgramm nur auf EINEN PIN, nämlich PE0. MfG Falk
> In deiner Routine reagiert er nur, wenn du alle 8 Pins (=PORTE) auf 0 > ziehst, Nein, es reicht, wenn ein Pin 0 ist, weil dann PINE nicht mehr 0xFF ist...
ich habe das problem schon behoben, k.a. was da nicht funktioniert hat, beim ca. 8. mal probieren hats geklappt, trotzdem danke an alle
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.