ATmega128 Ports schalten?

Gast #854415
Lesenswert?
• ▲
▼
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
Gast #854421
Lesenswert?
• ▲
▼
>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.
Gast #854425
Lesenswert?
• ▲
▼
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?
Gast #854449
Lesenswert?
• ▲
▼
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.
Gast #854460
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren