Hallo, wenn ich an meinem ATmega128 die Ports schalten will geht das erst beim zweiten mal! Was ist da falsch??? Das ist auch schon im Simulator so, also dürfte es kein HW Problem sein. z.B.: DDRC = 0xFF; -> DDRC bleibt 0x00 DDRC = 0x00; -> DDRC bleibt 0x00 DDRC = 0xFF; -> Endlich hat’s der Port gerafft (oder ich raff es nicht ;) Das gleiche Problem habe ich auch bei den PORT Registern Gruß Andi
>hm, hast du die Portstruktur der AVRs begriffen oder probierst du nur so >rum? Jein, bis jetzt hatte ich das Problem noch nicht (ATmega8). Prinzipell hab ich das schon begriffen (Dachte ich zumindest :) Komisch ist auch das der Simulator das gleiche macht. Optimierung hab ich aus un im assabler steht auch die richtigen Befehle.
Was du da machst, hat nichts mit Ports-Schalten zu tun, du schaltest somit die Datenrichtung der Ports um. Und es kann gut sein, dass es am Simulator liegt. Hast du schon mal probiert die breakpoints eine Zeile früher zu setzen?
die DDRx Register dienen dazu, um zu bestimmen, ob die PIN's des Ports Eingänge oder Ausgänge sind. Bei als Ausgänge bestimmte PIN's musst du mit PORTx die Zustände schalten.
Das ich Die DDR hingeschrieben habe war nur als Beispiel gedacht. ich hab da was im Datenblatt gefunden: When switching between tri-state ({DDxn, PORTxn} = 0b00) and output high ({DDxn, PORTxn} = 0b11), an intermediate state with either pull-up enabled ({DDxn, PORTxn} = 0b01) or output low ({DDxn, PORTxn} = 0b10) must occur. .... Switching between input with pull-up and output low generates the same problem. The user must use either the tri-state ({DDxn, PORTxn} = 0b00) or the output high state ({DDxn, PORTxn} = 0b11) as an intermediate step. ich schaue mal ob es damit zusammenhängt, wobei mir das komisch erscheint. Da ich ja sowieso nicht in beiden Registern gleichzeitig rumfummel kann. Da ist ja klar das ich einen zwischen Zustand bekomme.
Bitte nicht Schlagen.... ich hab das Problem gefunden.... ich sag nur: if(...) // tuwas PORTA = 0x00; man sollte halt das if(...) mit auskommentieren, wenn es nicht zutrifft. ist schon blöd wenn man so doof ist ;) Vielen Dank an alle Gruß Andi
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.