www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie bei Attiny13 RESET programmieren


Autor: Uwe Wensauer (dk1kq)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Spannung hinreichend schnell ansteigen lassen, damit die
power-on-reset-Logik zuschlägt.

Nein, du wirst ein komplett anderes Problem haben.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dk1kq (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: norad (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stackinitialisierung?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRFan wrote:
> Stackinitialisierung?

Macht das Reset.
Hat ja lange genug gedauert, ehe Atmel das endlich richtig gemacht hat.


Peter

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dk1kq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Uwe Neubert (Firma: Privat) (djuwert)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRFan wrote:

> 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)."

Standardtext.  Copy&pasted aus der Zeit, bevor das SP-Register einen
sinnvolleren Initialwert als 0 bekam.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: dk1kq (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.