Forum: Mikrocontroller und Digitale Elektronik hilfe attiny13 blink_led


von c0sta (Gast)


Angehängte Dateien:

Lesenswert?

so moin moin erstmal :D
hab da so ein problem:
habe seit einigen tagen das "micrcontrollerlernpaket" von franzis...
bin da auch fleißig am lesen und machen aber bei mir kommen so langsam 
zweifel auf...

ich möchte eine led mithilfe von schleifen und prescaler eine blinkdauer 
von etwa einer sek erzielen...das funktioniert theoretisch auch...
nunja aber paraktisch nicht!

habe schon diverse möglichkeiten durch wie ich pb3 anschalte ne sek 
anlasse und dann wider aus mache...

aber es funktioniert alles nur wenn ich es simuliere (avr studio4)
 im anhang is eine der möglichkeiten...so habe ich mir das vorgestellt

bin für anregungen aller art offen ;) bin schon total verzweifel und 
hoffe auf schnelle hilfe

wie gesagt das prog funktioniert bei mir wenn ich es simuliere ..ein 
durchlauf (aun-aus) dauert ca 2s....aber wenn ich es aufspiele passiert 
nix...diverse testschaltungen aus dem "lernpaket" habe ich auch 
aufgespielt... die funktionieren teilweise ^^
ich hab keine ahnung wo hier der fehler liegt..(die übersichtlichkeit 
sinkt proportional zum frust.. hab mir da nich mehr soo viel mühe 
gegeben...)

von c0sta (Gast)


Lesenswert?

; last_try,.. ne da kommen noch ein paar xD

          ; mal wida der versuch ne led zum blinken zu bringen ;)

.include "tn13def.inc"

.def count0  =  r16
.def count1  =  r22
.def count2  =  r18
.def count3  =  r19
.def count4  =  r20
.def count5  =  r21


    ;prescale
    ldi count0  , 5
    out tccr0b  , count0


rjmp start
start:

    ldi count1  , 235
    ldi count2  , 155
    ldi count3  , 20

    ldi count5  , 52

    sbi portb  , 0        ;  AN

loop3:
loop1:  ldi  count0  , 255
loop0:  dec count0
    brne loop0
    dec count1
    brne loop1
    dec count3
    brne loop3

    cbi portb  , 0        ;   AUS

loop6:
loop5:  ldi count4  , 20
loop4:  dec count4
    brne loop4
    dec count5
    brne loop5
    dec count0
    brne loop6

    rjmp start

von spess53 (Gast)


Lesenswert?

Hi

Bitte die *.asm, nicht die Projektdatei.

MfG Spess

von c0sta (Gast)


Lesenswert?

thx habs schon germerkt :D

von spess53 (Gast)


Lesenswert?

Hi

Port auf Ausgang setzen!

>    ;prescale
>    ldi count0  , 5
>    out tccr0b  , count0

Hat keine Funktion:

MfG Spess

von Michael U. (amiga)


Lesenswert?

Hallo,

was macht oder soll diese Passage machen?
    ;prescale
    ldi count0  , 5
    out tccr0b  , count0


Ansonsten: wenn die LED leuchten soll, sollte man den Portpin auch als 
Ausgang schalten.
z.B. mit
sbi ddrb,0
nach Start:
bevor man versucht, L oder H auf den Ausgang zu bekommen.

PS: da war doch spess53 (Gast) schon wieder schneller... ;-)))

Gruß aus Berlin
Michael

von c0sta (Gast)


Lesenswert?

oh man geht das hier schnell :D
ja da stimme ich euch zu
man muss den laut euch und buch ddrb und portb setzen...
wenn ich aber

"sbi ddrb, 3"

sage dann setzt er nachdem er den 2. register der schleifen geladen hat
pinb, 3 ... also macht es zu einem ausgang soweit ichs verstanden hab..
das darf ja auch nich sein dann leuchtet nix,
wenn ich ddrb, 3 weglasse macht er pinb, 3 nich an

ich vertsehs nich...
also das bezieht sich auf die simulation ..nich auf die praxis ^^

von avr (Gast)


Lesenswert?

Hallo c0sta,

du setzt einen Prescale für den Timer verwendest diesen aberv nicht.

Dein Programm startet mit dieser Aktion, den Jump der auf diesen
Sprungvektor gehört hast du verschoben.

Du schreibst von PB3, setzt/löscht jedoch PB0 und da PB0 nicht als
Ausgang definiert ist schaltest du damit nur den PullUp.

Bei deinen Schleifen fehlen teilweise die Nachladewerte.

Ich nehme an, daß ein teil der Fehler auf Frust beruht.
Außerdem ist aller Anfang schwer.

Hier gibt es einige gute Hilfestellungen, auch deinen Sekundenblinker:


http://www.avr-asm-tutorial.net/avr_de/index.html

avr

von spess53 (Gast)


Lesenswert?

Hi

>also das bezieht sich auf die simulation ..nich auf die praxis ^^

Nein. Du kannst PortB,0 setzen (Real und in der Simulation), aber wenn 
es nicht auf Ausgang gesetzt ist, kommt nichts an. Wenn man bei einem 
Eingang PortX,y setzt, wird der interne Pull-Up-Widerstand 
eingeschaltet. Bei einem Ausgang wird das Portpin gesetzt.

MfG Spess

von c0sta (Gast)


Lesenswert?

Okay vielen dank :D

werde mich erst noch mal gründlich informieren bevor ich alles 
hinwerfe...ja aller anfang is schwer ;D ... aber ich gebs nich auf

finds klasse das es hier so viele hilfsbereite menschen gibt :D

von c0sta (Gast)


Lesenswert?

ach ja :D
ich mach mir n bier auf :D

      ; last_try,.. ne da kommen noch ein paar xD

        ; mal wida der versuch ne led zum blinken zu bringen ;)

.include "tn13def.inc"          ; aTtiny13


.def loop0    =  r20
.def loop1    =  r21
.def loop2    =  r22
.def loop3    =  r23
.def loop4    =  r24
.def loop5    =  r25


rjmp start

start:
      sbi ddrb    , 4
      sbi portb    , 4        ; AN


      ldi loop4    , 7
schleife4:  ldi loop2    , 255
schleife2:  ldi loop0    , 255
schleife0:  dec loop0
      brne schleife0
      dec loop2
      brne schleife2
      dec loop4
      brne schleife4


      cbi portb    , 4        ; AUS

      ldi loop5    , 7
schleife5:  ldi loop3    , 255
schleife3:  ldi loop1    , 255
schleife1:  dec loop1
      brne schleife1
      dec loop3
      brne schleife3
      dec loop5
      brne schleife5






rjmp start

von spess53 (Gast)


Lesenswert?

Hi

>ach ja :D
>ich mach mir n bier auf :D

Und wie soll man das jetzt verstehen?

MfG Spess

von c0sta (Gast)


Angehängte Dateien:

Lesenswert?

ach das bier hab ich mir aufgemacht weil ichs mir vedient hab :D

... sooo hab das ganze jetz noch mal mit timer und counter und n paar 
schleifen gemacht :D
is recht konfus geworden aber funzt^^
hat ne blinkdauer von etwa 1,5 - keine ahnung..viel :D



                    ;

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.