Forum: Mikrocontroller und Digitale Elektronik mega8 + attinyXX +Energiespar?


von Elektrolyt (Gast)


Lesenswert?

schönen guten abend,

also ich habe mein mega8 im tiefschlaf (PWR_DWN) und möchte diesen per 
UartRX (genauer durch einen Anruf) wecken. Ich weiss, dass der Mega8 im 
tiefschlaf nur durch einen LowLevel-INT0 zu wecken ist...
Nun zu meinem Problem:
Ich habe den Rx vom Controller mit dem INT0 kurzgeschlossen.
Wenn ich in der Terminal-Simulation (myavr workpad plus) nun das 
ankommende serielle "RING" (per Tastatur) an den Controller sende, wacht 
er brav auf und führt die INT0-Routine aus, kurz alles funktioniert.
Das heisst ja, dass das ankommende "RING" an INT0 einen LowPegel 
erzeugt, welcher für einen Interrupt reicht.
Wenn ich nun aber das Handy an den Mega8Rx hänge, wird leider kein INT0 
ausgeführt. Das heisst für mich, dass da der LowLevel zu kurz ist. 
Erstaunlich finde ich allerdings, dass das Handy mit 19200Bauds arbeitet 
und der Mega8 auch.
Wie kann es sein, dass bei gleicher Baudrate und bei den selben Zeichen, 
die gesendet/empfangen werden, in der Simulation alles (zu fuß 
eingegeben)läuft und in der realität nicht? Hat da jemand eine Idee?

Also habe ich mir überlegt, einen Tiny zu nehmen (geringere 
Leistungsaufnahme im Idle-Mode als der Mega) um den mega8 ausm 
tiefschlaf zu holen.
Gibt es vielleicht eine elegantere Variante zu dem Tiny? Die mir bei 
einem UartRxInt einfach ein Pin auf Low zieht um den Mega zu wecken? Der 
Tiny hat ja auch kein uart, also könnte das mein nächstes problem sein.
Welches ist der "kleinste" AVR mit Uart?
Wäre für jede Hilfe, Antwort und Anregung sehr dankbar...

Schönen abend noch...
MFG Elko

von Elektrolyt (Gast)


Lesenswert?

keiner eine idee?

von Sven P. (Gast)


Lesenswert?

Empfängt denn der AVR überhaupt irgendwas vom Handy?
Du hast sicherlich so einen MAX232-Pegelwandler eingebaut, nich? Das ist 
auch nötig, um die Pegel einer normgerechten RS232-Schnittstelle (wie 
der vom PC) anzugleichen. Aber Handy senden oft und gerne mit anderen 
Pegeln (3.3V oder sowas), mess das mal mit dem Oszi nach.

Und: Dein "RING" kommt nicht über die TX bzw. am Mikroprozessor über die 
RX-Leitung, sondern über eine eigene "RI"-Leitung (RI = Ring Indicator).

von Elektrolyt (Gast)


Lesenswert?

Vielen Dank für deine Mühe,
ähm wenn ich ehrlich bin, läuft die sache mit den pegel schon ganz gut 
so... wenn ich pollend auf ein zeichen warte, kommt das RING 
komischerweise an, auch vom handy... Nur im Schalfmodus wird der 
INT0-Interrupt durch das RING nicht ausgelöst (wahrscheinlich lowpegel 
zu kurz). Ich habe Rx des handys mit tx des controllers verbunden und 
umgekehrt. und zusätzlich ist ControllerRx mit INT0 gebrückt, also kein 
max232 (brauche ich nicht, erledigt der mysmartusbprogrammer im 
datenmodus)
Mir geht es eigentlich nur um den INT0, dass der nicht auslöst wenn ein 
RING ankommt. Der Uart_rx_vect wird aber widerum ausgeführt bei einem 
RING, wenn der controller nicht schläft -.-

Danke nochmal
LG ELko

von Walter (Gast)


Lesenswert?

RTFM auf Seite 64:
Note that if a level triggered interrupt is used for wake-up from 
Power-down mode, the
changed level must be held for some time to wake up the MCU. This makes 
the MCU
less sensitive to noise. The changed level is sampled twice by the 
Watchdog Oscillator
clock. The period of the Watchdog Oscillator is 1 µs (nominal) at 5.0V 
and 25°C. The
frequency of the Watchdog Oscillator is voltage dependent as shown in 
“Electrical Characteristics”
on page 237. The MCU will wake up if the input has the required level 
during
this sampling or if it is held until the end of the start-up time. The 
start-up time is defined
by the SUT Fuses as described in “System Clock and Clock Options” on 
page 23. If the
level is sampled twice by the Watchdog Oscillator clock but disappears 
before the end
of the start-up time, the MCU will still wake up, but no interrupt will 
be generated. The
required level must be held long enough for the MCU to complete the wake 
up to trigger
the level interrupt.

von Elektrolyt (Gast)


Lesenswert?

Vielen Dank Walter,

jetzt weiss ich definitiv wo mein problem liegt, allerdings weiss ich 
hierfür
>....the MCU will still wake up, but no interrupt will
>be generated. The required level must be held long enough for the MCU to 
>complete the wake up to trigger the level interrupt.
keine Lösung
Der Controller wird also wach, aber es wird kein INT0 ausgeführt.
Aber wenn der ja wach wird, könnte er ja den RX_vect ausführen, um die 
daten per interrupt über die uart zu empfangen.

Hast du einen Vorschlag wie ich das realisieren könnte?

MFG Elko

von Elektrolyt (Gast)


Lesenswert?

ich seh den wald vor lauter bäumen nicht... bitte um hilfestellung...
mfg elko

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.