Fehler beim Counter!

Gast #91115
Lesenswert?
• ▲
▼
Hallo!

In den Anlagen hab ich die Source von meinem ersten kleine Programm.
Es soll ungefähr 1 sekunde warten, bis sich die LEDs an PortB
anschalten. (Mein Atmel ist mit 8 Mhz getaktet)

Aber wenn ich dass Programm dann geladen hab und ich den Prozessor
einschalte leuchten die LEDs sofort.

Was mach ich falsch`?


Gruß!
Angehängte Dateien:
Gast #91116
Lesenswert?
• ▲
▼
Naja, die Ausgänge des Ports ist ja per Initialisiserung erstmal auf 0.
Da Du die LED wohl mit 0 schalten willst, mußt du zum Programmstart
zunächst mal die Ausgänge auf 1 setzen.

start:
ldi temp, 0xFF
out DDRB, temp
out PORTB, temp
Gast #91117
Lesenswert?
• ▲
▼
also wenn ich 0xFF auf DDRB ausgebe sind alle Pins als Ausgänge
konfiguriert. Richtig?

Aber wieso muss ich dann erstmal 0xFF auf PORTB ausgeben, um später
alles auf null zu setzen?


Gruß!
Gast #91118
Lesenswert?
• ▲
▼
Ja, soweit ok.
Da aber die Ausgänge "von Hause aus" erstmal auf 0 sind, leuchtet
Deine LEDs sofort, da diese "Low-Aktiv" geschaltet werden (wie z.B
hier im Tutorial). Das nehme ich zumindest an, da Du sie ja dann mit
 ldi temp, 0b00000000
 out PORTB, temp
nach einer Sekunde einschalten willst.
Wenn Sie zum Programmstart erstaml aus sein sollen, mußt Du sie mit dem
 Ausgeben von 0xFF ausschalten.

Das ganze Problem liegt also nicht bei Deine Zeitschleifen, die
funktionieren so. Nur Du siehst nicht das Anschalten, weil die LEDs
schon an sind.

Gruß
Ingo

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