Forum: Mikrocontroller und Digitale Elektronik Fehler beim Counter!


von Johannes Meyer (Gast)


Angehängte Dateien:

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ß!

von Ingo Henze (Gast)


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

von Johannes Meyer (Gast)


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ß!

von Ingo Henze (Gast)


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

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
Noch kein Account? Hier anmelden.