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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.