PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Blinkprogramm für ATTINY 13 klappt nicht



Barthimaeus
06.09.2007, 17:05
Ich habe einen AVR vom Typ ATTINY13, an dessen IO Port 3 zusammen mit einem Vorwiederstand eine Verbindung zu GND gebildet wird. Für diese Schaltung habe ich ein Blinkprogramm geschrieben, doch es funktioniert nicht, denn die LED bleibt permanent an. Warum? Wie müsste es richtig aussehen?


.include "tn13def.inc"

rjmp Anfang

Anfang:
sbi ddrb, 3
ldi r16,255
sch1:
dec r16
brne sch1
ldi r16,255
sch2:
dec r16
brne sch2
ldi r16,255
sch3:
dec r16
brne sch3
ldi r16,255
sch4:
dec r16
brne sch4
sbi portb,3
ldi r16,255
sch5:
dec r16
brne sch5
ldi r16,255
sch6:
dec r16
brne sch6
ldi r16,255
sch7:
dec r16
brne sch7
ldi r16,255
sch8:
dec r16
brne sch8
cbi portb,3
ldi r16,255
rjmp sch1

grumpf
07.09.2007, 13:38
Hai,

wenn ich mir deinen Code ansehe würde ich sagen, deine Schleifen sind einfach vviiiiieeellll zu kurz. Die LED wird wahrscheinlich blinken aber mit ner Menge Hertz. Nimm doch mal anstatt 4 Schleifen für an und aus (insgesamt jeweils ~1000 Zyklen) nur zwei Schleifen und verschachtel sie. Dann hast du anstatt 1000 Zyklen 65000 zyklen. Vielleicht kommst du damit weiter.

Gruß
Stefan

Barthimaeus
07.09.2007, 14:04
Du hattest Recht was das Problem betraf. (Danke) So klappt's:



.include "tn13def.inc"

rjmp Anfang
Anfang:
sbi ddrb, 3
Schleife:
sbi portb,3
rcall Warten
rcall Warten
cbi portb,3
rcall Warten
rcall Warten
rjmp Schleife

Warten:
Ldi r16,250
Warten1: ;äußere Schleife
Ldi r17,250
Warten2: ;innere Schleife
dec r17
brne Warten2
dec r16
brne Warten1
ret ;Rücksprung




Kannst du mir villeicht noch sagen wie man die Brownout detection aktiviert?

MartinFunk
07.09.2007, 14:26
die brownout detection kannst du in den fuse bits aktivieren siehe datenblatt!

MfG Martin