Hallo zusammen!
Ich beschäftige mich erst seit kurzen mit dem Thema Mikrokotroller. Ich
habe mir das Entwicklungsboard "Evolution Board 2.0" von Pollin in der
schon zusammen gebauten Version besorgt. Auf diesem befinden sich eine
Reihe von Taster und LEDs. Als Mikrokontroller verwende ich den
ATmega32.
Ich habe nun ein Programm geschrieben, bei dem kontinuierlich die LEDs
vor sich hin blinken. Durch den einen Tastendruck kann ich die LEDs
"anhalten" und durch einen weiteren wieder starten. Softwaretechnisch
wird durch drücken der Taste ein Interrupt ausgelöst, der einen Wert
verändert, so dass das Programm in eine Endlosschleife geht. Durch
nochmaliges drücken der Taste wird dieser Wert wieder verändert, so dass
das Programm die Endlosschleife verlässt und weiter läuft.
Bei einer Triggerung des ATmega32 auf interne 1 MHz funktioniert dies
auch sehr gut. Jedoch bei der Triggerung auf externe 16 MHz funktioniert
dies nicht mehr. Die LEDs blinken einfach weiter ohne vom Taster
beeindruckt zu sein.
Kann es sein, dass das Interrupt für den Taster zu schnell ist und der
Taster irgendwelche Oszillationen verursacht, die dann ein erneutes
Interrupt auslösen, so dass das Programm einfach nicht in der
Endlosschleife bleibt? Allerdings müsste es in diesem Fall nicht
irgendwann doch in eine Endlosschleife springen?
Ich hoffe ihr könnt mir in diesem Punkt weiter helfen. Wie oben bereits
erwähnt bin ich recht neu auf diesem Gebiet, weiß also nicht ob es für
dieses Problem einen Fachbegriff gibt, nach dem ich suchen kann. Für
Hinweise bin ich dankbar.
Ein weiterer Punkt der mich beschäftigt ist folgender:
Ich möchte per UART einen Befehl an den Mikrokontroller schicken (drei
Zeichen) und damit denn Mirkokontroller irgendetwas tun lassen. Gibt es
für den Empfang von mehreren Zeichen irgendeinen vorgefertigten Code (in
Assembler)? Hier einmal schematisch was ich mir vorstelle:
1. Mikrokontroller tut irgendetwas.
2. Interrupt wird ausgelöst durch Empfang von Zeichen über UART.
3. Zeichen werden empfangen und mit Vorgabe verglichen.
4. Je nach Zeichensequenz soll Mikrokotroller etwas tun:
Sequenz A -> Tut A
Sequenz B -> Tut B
Ich hoffe ihr könnt mir auch bei diesem Problem weiter helfen.
Vielen Dank,
Mathias