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
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).
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.