Forum: Mikrocontroller und Digitale Elektronik Powerdown und Atiny2313


von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Hallo, ich möchte gerade das Pollin-Spiel adaptieren, leider 
funktioniert der Powerdown-Modus des Atiny2313 nicht richtig.

Wer hat eine Idee? (Ich hab momentan keine mehr...)
1
$framesize = 40
2
$swstack = 10
3
$hwstack = 30
4
$regfile = "ATtiny2313.dat"
5
$crystal = 1000000
6
7
Dim Xon As Byte
8
T1 Alias Portd.0
9
Ddrd = 1
10
Stop Ac
11
Stop Watchdog
12
13
14
On Int0 Int0_isr
15
16
Enable Int0
17
Config Int0 = Rising
18
Enable Interrupts
19
Do
20
 If Xon > 0 Then
21
    Set T1
22
    Decr Xon
23
 Else
24
    Reset T1
25
    'Power Powerdown
26
 End If
27
Loop
28
End
29
30
Int0_isr:
31
Xon = 255
32
Return

Wenn ich Power Powerdown auskommentiert lasse, reagiert das Programm wie 
gewünscht: beim Klicken blitzt kurz die Lampe T1 (meist 2x).

Wenn ich Power Powerdown einfüge, geht gar nichts mehr -das verstehe ich 
nicht: der INT liegt im Pollin-Stil mit 10k an Masse und wird gegen Plus 
mit einem Taster geschaltet.

Wo liegt mein Fehler? Laut Datenblatt soll der Atiny selbst im Powerdown 
Modus noch auf ändernde Flanken reagieren...

von R. M. (rmax)


Lesenswert?

Das Aufwachen funktioniert bei INT0 laut Datenblatt nur bei 
Level-Triggerung und es wird nur Low-Level unterstützt. Probier's doch 
mal mit dem Pin Change Interrupt.

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Super, danke für die rasche Antwort - da sieht man, wie "verrückt" 
Pollin die Hard-, Software entwickelt. An den alternativen PCINT 
(PB0-PB7) hängt leider kein Taster, der hängt nur auf PD2 (INT0) gegen 
Plus(!).

Hab nachgesehen: im Original Source von Pollin in C wird lediglich der 
Idle-Modus realisiert. Wenn ich jetzt in Bascom auf Power Idle ändere, 
geht es- ist aber nicht so stromsparend.

Wann lernt Pollin, dass Taster auf Ground zu schalten sind und dass es 
interne Pullups gibt??

Übrigens: wo steht das im Datenblatt das nur low level-int geht?

von Basti M. (counterfeiter)


Lesenswert?

Ich glaub das stand in der "Einleitung" bei Interrupts -> Externe...

Hab da auch mal länger suchen müssen...

von R. M. (rmax)


Lesenswert?

Manfred S. schrieb:

> Übrigens: wo steht das im Datenblatt das nur low level-int geht?

Seite 31, Abschnitt "Standby Mode", Tabelle 14, Fußnote 2:"For INT0, 
only level interrupt."

Daß es diesen Level-Interrupt nur als Low-Variante gibt, findet sich auf 
Seite 59 im Abschnitt "External Interrupts", zweiter Absatz. Dort wird 
auch erklärt, warum Flankentriggerung nicht geht.

Die Seitenangaben beziehen sich auf Rev. 2543L - 8/10.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.