PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger braucht Hilfe, Ledsteuerung



blaxkin
15.04.2011, 23:57
Hallo ich bin ganz neu im Bereich Microprozessoren und wollte euch
deshalb um eure Hilfe bitten !

Ich habe zwar in der Schule assembler gelernt aber das ist leider zu
lange her :(

Also es geht darum ich will über einen Taster eine Led ansteuern und
zwar wie folgt:

Taster kurz gedrückt led aktiviert sich für 30 sekunden

Tester nochmals gedrückt wieder 30 sekunden

Taster 2 Sekunden gedrückt Led schaltet sich an und bleibt an.

Taster nochmals 2 Sekunden gedrückt Led geht aus und aktiviert wieder
das mit den 30 Sekunden

Ich habe es versucht zu prgrammieren und kann es aber leider erst
ausprobieren wenn ich alles zusammen habe, muss mir alles neu kaufen für
AVR

Könntet ihr vielleicht kurz in das Programm sehen ob das so
funktionieren kann ?

MFG Daniel


18562

Besserwessi
16.04.2011, 16:02
So wird das Programm noch nicht funktionieren:

Man kann nicht einfach aus dem Interrupt ins Hauptprogramm springen. Dadurch läuft der Stack über, und ein Sleep-Befehl mit gelöschtem Interrupt Bit dürfte eine Sackgasse sein. Der Befehl rjmp loop ; Schlafen legen , ist einfach zu viel - für den sleep Mode ist das Hauptprogramm zuständig.

Auch sonst stimmt da wohl was noch nicht ganz. Die LED wird am Ende nur ganz kurz eingeschaltet unter LEDon.

In de ISR sollte man zu erst das Status Register retten und am ende auch wieder Herstellen. Das gleiche gilt für Register die in der ISR und dem Hauptprogramm verändert werden. Hier geht es ausnahmsweise wohl ohne, weil das Hauptprogramm effektiv nichts macht.

In ASM sollte man sich um etwas mehr Lesbarkeit bemühen. Es wird auch einfacher wenn man ein Unterprogramm hat, für eine definierte Wartezeit von z.B. 1 ms oder 10 ms oder auch N (in einem Register) ms. Dann muss man nicht jede Wartezeit von Grund auf aufbauen.

blaxkin
16.04.2011, 16:54
Hey !

Danke erstmal für die Hilfe :-) wie gesagt ich bin ganz am Anfang und blicke mich da leider noch nicht so ganz durch :-(

Ich werde versuchen mich an alle deine Dinge zu halten und werde es mal komplett durcharbeiten vor allem die lesbarkeit und dann neu posten !

Mfg Daniel