ATtiny 12 - Aufwachzeit mit Uhrenquarz

Gast #1097774
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
Gast #1097820
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:
1
.org 0x000      ; Sprungmarke zu main
2
  rjmp main
3

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

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

10
main:
11

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

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

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

25
  ; Stackpointer wird automatisch initialisiert
26

27
  ldi reload, 248      ; Reload-Wert = 248
28

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

32

33
  sei            ; Interrupts aktivieren
34

35
  rjmp schlafen      ; nach Initialisierung schlafen
36

37
orange:
38
  sbi PORTB,rot      ; rot an
39
  sbi PORTB,gruen      ; und grün an = orange
40

41
(...uninteressanter code...)
42

43
schlafen:
44
  in temp1, MCUCR
45
  ori temp1, 1<<SE
46
  out MCUCR, temp1    ; schlafen aktivieren
47
  sleep          ; Gute N8
48
  nop
49
  nop
50
  nop            ; Sicherheit
51

52
int0_isr:
53
  ;sei
54
  rjmp orange
#1097845
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
Gast #1097857
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.
Gast #1097862
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

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