Wie bei Attiny13 RESET programmieren

OP #752246
Lesenswert?

Wie programmiert man einen Reset beim Programmstart ?

Für Anfänger einfaches LED - Blink Programm.
Mit AVR Studio 4. Im Programmer läuft es, jedoch wenn ich den Controller 
herausnehme und auf eine kleine Leiterplatte montiere, tut sich nichts.
Da das Programm im Programmer läuft, nehme ich an, dass ein RESET beim 
Programmstart fehlt.
Wie macht man das ?

;Blink2.asm Blinker mit Unterprogramm

      .include "tn13def.inc"

rjmp Anfang
Anfang:
      ldi   r16,0x18    ;PB4 und PB4
      out   ddrb,r16    ;Datenrichtung
Schleife:
      ldi   r16,8       ;8 = 0x08
      out   portb,r16   ;PB3 = 1, PB4 = 0
      rcall Warten      ;Unterprogrammaufruf
      ldi   r16,16      ;16 = 0x10
      out   portb,r16   ;PB3 = 0, PB4 = 1
      rcall Warten      ;Unterprogrammaufruf
rjmp  Schleife

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


Hilfe erbeten
Uwe
#752322
Lesenswert?

Uwe Wensauer wrote:

> Da das Programm im Programmer läuft, nehme ich an, dass ein RESET beim
> Programmstart fehlt.

Reset ist ein Pin, der muß auf VCC liegen, damit das Programm startet.

Das Programm sieht o.k. aus.
Vielleicht ist das Delay zu klein und Du sieht das Flackern nicht 
(>50Hz)


Peter
Gast #752421
Lesenswert?

Ja ! die Power on- Seset logik scheint nicht zu funktionieren.
Es kann vorkommen, dass das Programm erst nach mehrmaligem 
Ein/Ausschalten der Betriebsspannung startet.

Habe auch scon einen Pull- UP von 10K an Pin1 gelegt.- ohne Erfolg
Hätte es einen Sinn von VCC nach Masse ein C ( zB. 100uF - 1uF ) zu 
legen ?

73
uwe
Moderator Persönliche Seite #752441
Lesenswert?

dk1kq wrote:

> Habe auch scon einen Pull- UP von 10K an Pin1 gelegt.- ohne Erfolg

Der ist eingebaut.

> Hätte es einen Sinn von VCC nach Masse ein C ( zB. 100uF - 1uF ) zu
> legen ?

Errm, willst du damit sagen, dass du den ATtiny13 komplett unabgeblockt
betreibst?  Da gehört ein Keramikkondensator von 100 nF möglichst nahe
dran.

Eigentlich sollte die Powerup-Reset-Logik recht zuverlässig klappen,
solange man nicht gerade extrem langsame Anstiegszeiten von Vcc hat.
Um einzukreisen, ob du ein Reset-Problem hast, kannst du ja im
Fehlerfall mal kurzzeitig /RESET nach Masse ziehen.  Das wäre dann
ein Extern-Reset, danach muss er auf jeden Fall loslaufen.
Gast #752466
Lesenswert?

>Da gehört ein Keramikkondensator von 100 nF möglichst nahe am Attiny13.

Am besten zwei ;-)


> ldi   r16,0x18    ;PB4 und PB4
> out   ddrb,r16    ;Datenrichtung

Irgend wie leuchtet mir das nicht ein.

Müsste des jetzt nicht eher so lauten:

sbi ddrb,8   oder 0x08   für PB4 heißen oder täusch ich mich?

für PB0 = ddrb,0
    PB1 = ddrb,1
    PB2 = ddrb,2
    PB3 = ddrb,3


Gruß Norad
Gast #752564
Lesenswert?

Hehe, auf Seite 6 des Data Sheet zum ATtiny13 ist zu lesen

    "All user programs must initialize the SP in the Reset routine
    (before subroutines or interrupts are executed)."

Aber zugegeben, auf Seite 9 ebendieses Dokuments steht tatsächlich

    "This Stack space in the data SRAM is automaticall defined to
    the last address in SRAM during power on reset."

Was soll man davon halten? ;-)

Danke für den Hinweis.
(Firma: Privat) #752600
Lesenswert?

dk1kq wrote:
> wenn ich pin 1 kurzzeitig an Masse lege, legt der Tiny los.
> ein oder 2 100nF sind wirkungslos.
> auch größere 1uF / 10uf zeigen keine Wirkung.
>
> jetzt mache ich schluß und trinke ein Bier
>
> 73
> Uwe

Hi! Es ist nur EIN C am VCC sinnvoll und nur max. 100nF. Mehr hat wieder 
einen anderen Effekt und ist nicht sinnvoll. Nimm nur 100nF.
Gast #752648
Lesenswert?

>Standardtext.  Copy&pasted...

War mir schon klar :-)  Aber ich freu mich, dass das Copy&Pasten von...

ldi temp, Low(RAMEND)
out SPL, temp
ldi temp, High(RAMEND)
out SPH, temp

...jetzt ein Ende hat (bei Verwendung der neuen Controller).
Gast #752899
Lesenswert?

Hallo Leser,
das Problem ist gelöst !
Nachdem ich mit PonyProg den Tiny ausgelesen habe, untersuchte ich die 
FUSE-Bits.
Dort war BODLEVEL1 mit einem Haken versehen.
Das Interpretiere ich als Brown- Out disabled.
Haken raus - und - der Tiny startet !

Danke für all die Tipps - jetzt kann ich mit der nächsten Lernstufe 
auseinandersetzen - Ausgänge schalten

Uwe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren