www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny 12 - Aufwachzeit mit Uhrenquarz


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich verwende einen ATtiny 12 mit 32.768Hz-Quarz. Wenn ich den µC per 
Taster (Interrupt) aus dem Power-Down-Modus hole, dauert das ca. 2-3 
Sekunden. Ich merke das daran, dass der erste Befehl LEDs einschaltet. 
Ist diese Zeit normal? Ich hab da eine Dauer von ein paar Zyklen im 
Hinterkopf. Wie lässt sich der Vorgang beschleunigen?

Grüße
Patrick

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Patrick

schreibe 100x auf ein Blatt Papier:

Ich soll Quelltexte bei Softwarefragen mit Posten.

MfG

Autor: Aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wurde der power down initialisiert ? Wie wurden die fuses 
initialisiert?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf Papier gibt es aber kein Copy und paste ;)


Fuses sind RSTDISBL aktiviert und External Low Frequenvy Oscillator, 
wenn ich mich recht erinnere.

hier mal ein Auszug aus dem Code:


.org 0x000      ; Sprungmarke zu main
  rjmp main

.org 0x001      ; Wenn Taster gedrückt -> Interrupt, dann orange werden
  rjmp int0_isr

.org 0x003      ; Sprungmarke Interrupthandler bei Timer0-Overflow
  rjmp t0_ovf

main:

  
  ldi temp1, 0b011101
  out DDRB, temp1      ; PB1+5 Eingang
  
  ldi temp1, 0b00111010
  out PORTB, temp1    ; Eingänge mit Pullup-Widerstand, Ausgänge high=LED an, anfangs aus

  ldi temp1, 0<<ISC01 | 1<<SM    ; 0 in isc01-> low level interrupt, SM=1->power-down
  out MCUCR, temp1    ; INTO auslösen bei fallender Flanke (=wenn Taster gedrückt wird)

  ldi temp1, 0b01000000
  out GIMSK, temp1    ; INT0 aktivieren um Sleep-Mode zu beenden

  ; Stackpointer wird automatisch initialisiert

  ldi reload, 248      ; Reload-Wert = 248

  ldi temp1, 1<<TOIE0
  out TIMSK, temp1    ; Timer0 Overflow Interrupt aktivieren


  sei            ; Interrupts aktivieren

  rjmp schlafen      ; nach Initialisierung schlafen

orange:
  sbi PORTB,rot      ; rot an
  sbi PORTB,gruen      ; und grün an = orange

(...uninteressanter code...)

schlafen:
  in temp1, MCUCR
  ori temp1, 1<<SE
  out MCUCR, temp1    ; schlafen aktivieren
  sleep          ; Gute N8
  nop
  nop
  nop            ; Sicherheit

int0_isr:
  ;sei
  rjmp orange


Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> int0_isr:
>   ;sei
>   rjmp orange

Was soll das denn sein? Gleichzeitig ISR und Teil des Hauptprogramms? Wo 
ist das reti?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick wrote:
> ich verwende einen ATtiny 12 mit 32.768Hz-Quarz. Wenn ich den µC per
> Taster (Interrupt) aus dem Power-Down-Modus hole, dauert das ca. 2-3
> Sekunden.

Ja, das ist normal.
Ein Quarz ist ein Schwinger mit sehr hoher Güte, daher wird er auch nur 
mit sehr geringer Energie erregt, sonst könnte er brechen.

Ein 10MHz Quarz braucht etwa 10ms, also 100000 Perioden zum Anschwingen.
Bei 32kHz dauert das entsprechend länger.


Peter

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> int0_isr:
>   ;sei
>   rjmp orange

> Was soll das denn sein? Gleichzeitig ISR und Teil des Hauptprogramms? Wo
> ist das reti?


Das wurde schon in einem anderen Thread diskutiert, da der Tiny 12 einen 
Hardwarestack hat kann man das so machen und statt einem Rücksprung eine 
Verzweigung machen.


> Ja, das ist normal.
> Ein Quarz ist ein Schwinger mit sehr hoher Güte, daher wird er auch nur
> mit sehr geringer Energie erregt, sonst könnte er brechen.

Schade, die befürchtung hatte ich auch.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> da der Tiny 12 einen Hardwarestack hat kann man das so machen
> und statt einem Rücksprung eine Verzweigung machen.

Ach so, richtig. Beim Tiny12 ist ja alles anders. Da hatte ich nicht 
dran gedacht.

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.