PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega16 macht nicht was er soll.....



Pollin
28.01.2007, 14:23
Ich habe ja nun dieses Pollin Board.

Wenn ich nun die TESTOOL.hex einspiele funktioniert das auch.

Im AVR-Studio habe ich nun erste Versuche ein getippt und im Simulator getestet.

Keine Fehlermeldung und Programm läuft (Ausgang PORTD 7 blinkt).
Wenn ich dann eine HEX erstelle und die mit PONYPROG übertrage, wird zwar der Taster abgefragt und die LED geht an.

Aber sie BLINKT nicht, wenn ich den Taster wieder los lasse geht die LED auch wieder aus.


.include "m16def.inc"

.def temp1 = r16
.def temp2 = r17

ldi temp1, 0b11100000
out ddrd, temp1

LEDaus: ; Schaltet die LED beim Start aus
cbi PORTB, 7

Taster: ; Fragt den Taster ab
ldi temp2, 0x22
sbis pind, 2
rjmp LEDaus
rjmp LEDan

LEDan: ; Schaltet die LED ein
sbi PORTD, 7

Schleife: ; Schaltet die verzögert aus
dec temp2
brne Schleife
cbi PORTD, 7
ldi temp2, 0x09

Schleife2: ; Springt verzögert zur Tasterabfage zurück
dec temp2
brne Schleife2
rjmp Taster

Wo liegt der nun der Fehler, das es im Simulator läuft und im Board nicht.

Rofo88
28.01.2007, 14:37
Naja, ich habe keine Ahnung was für ein Takt du hast aber bei geschätzten 4MhZ wird deine Schleife in ca. 36 us abgearbeitet. Macht also ne Blinkfrequenz von ca.27kHz. Ich glaube das kannst Du ganz schlecht erkennen.

PicNick
28.01.2007, 14:42
DIe LED soll wohl "blinken", solange die Taste gedrückt ist.
Jetzt ist aber eine Schleife mit Zähler von 0x22 runter saumäßig kurz.

Die schleife

dec temp2
brne schleife

brauch 3 Zyklen, also insgsamt 3 mal 0x22 = dez. 102 Zyklen.
Bei 8 MHZ sind das ein paar zerquetsche µS

Da wird nix zu sehen sein.

Du mußt einen größeren Zähler nehmen (r24 + r25) und ein bißchen mehr reinladen.


EDIT: oops, da war schon einer. Naja, wenn wir zu zweit sind, glaubt er es uns vielleicht eher :-)

Pollin
28.01.2007, 15:18
AAAAAAAAAAAAAAAAh!

Hatte mir schon sowas gedacht, nur nicht so extrem.
Weil beim Simulator steht 4 MHZ und auf den BORD ist eine 8 MHZ Quarz.

Ich she schon ihr werdet noch einige Fragen von ertragen müssen.

Rofo88
28.01.2007, 15:22
Mit Alt+O kannst Du die Taktfrequenz im Simulator ändern