mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wodurch wird dieser Controller aufgeweckt?


Autor: Nino K.L. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Forengemeinde,

ich arbeite an einem kleinen "Fernsteuerungsprojekt", in dem ich einen 
Atmega328, programmiert über Arduino, mit einem ATK SIM900 Modul 
verheirate.

Solange der Mikrocontroller nichts zu tun hat, ist er im Sleepmode. Es 
gibt zwei externe Interrupts, die den Controller aufwecken, eine Taste 
(die grüne in den Bildern) und das Klingelsignal vom SIM900 Board (über 
das gelbe Kabel). Das funktioniert soweit ganz gut. Auch die serielle 
Kommunikation zwischen SIM900 und µC klappt gut.

Nun stelle ich fest, daß bei einem Anruf auf das SIM900 der Controller 
schon vor dem Interrupt des Klingelsignals losläuft und ich frage mich 
warum. Tatsache ist, daß er nicht durch einen der externen Interrupts 
geweckt wird, da ich in der ISR die Variable "InterruptFlag" auf 0 bzw. 
1 setze. Wenn ich die Variable abfrage (über RS232-Ausgabe), dann ist 
sie aber 2, wie sie in der main loop kurz vor dem Schlafengehen gesetzt 
wird.

Zwei Ideen habe ich selbst dazu, jedoch tu' ich mir schwer bei der 
Überprüfung. Erstens könnte der µC durch eine Ausgabe des SIM900 auf der 
RS232 Leitung geweckt werden (hab' ich aber nicht explizit programmiert 
und deswegen würde mich das wundern) und zweitens ist der Controller 
sehr nahe bei der Antenne. Meint Ihr, die HF-Strahlung könnte den Atmega 
aufwecken?

Ich bin für jede Idee dankbar!
Vielen Dank und Grüße, Nino.

PS: Drei Bilder und ein abgespeckter, lauffähiger Code anbei.

Autor: Jim Beam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Überprüfe erstmal ob wirklich ALLE Ints definitiv abgeschaltet sind, 
besonders bei Dir alle INT, die mit der ser. Schnittstelle zu tun haben, 
verlasse Dich niemals auf vorgebliche Default-Werte.

Das SIM-Modul zieht wenn es aktiv wird, ganz erhebliche Strom-Peeks 
(mehrere Amp) die i.d.R. nur durch ausreichende Elko-Pufferung 
abgefangen werden können, damit habe ich mehr als reichlich Erfahrung...
Und es MÜSSEN LoESR-Elkos UNMITTELBAR an der SIM-Versorgung sein, 
Großenordnung 1000µF.

Vielleicht stören den Controller diese Peeks.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nino K.L. schrieb:

> Solange der Mikrocontroller nichts zu tun hat, ist er im Sleepmode.

In WELCHEM? Es gibt verschiedene und es gibt je nach Modus sehr 
unterschiedlich begrenzte Möglichkeiten, ihn daraus wieder zu erwecken.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jim Beam schrieb:
> Strom-Peeks

<pedanterie>
Peaks (von peak, Spitze), nicht "peeks" (von peek, der Blick, bzw. 
to peek gucken, spähen)
</pedanterie>

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
> Meint Ihr, die HF-Strahlung könnte den Atmega aufwecken?

Ja, und Schwankungen in der Stromversorgung. Deswegen wäre ein 
Schaltplan hilfreicher, als der Quelltext.

Bist du denn sicher dass er aufwacht, und nicht resetted wird?

: Bearbeitet durch User
Autor: Nino K.L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für Eure Antworten.

Etwas eigenartiges ist passiert: Ich hatte heute früh bei der ersten 
Inbetriebnahme des Gerätes seit meinem obigen Beitrag die 
RS232-Verbindung zwischen µC und SIM900 gekappt. Und siehe da - das 
Problem war weg. Somit war ich sicher, daß es damit einen Zusammenhang 
hat. Allerdings habe ich jetzt die Kabeln wieder angesteckt und das 
Problem bleibt verschwunden. Ich kenn' mich nicht mehr aus?!?.

Unabhängig davon möchte Ich Eure Anregungen kurz kommentieren:

Die beiden Platinen werden aus unterschiedlichen Energiequellen 
gespeist: Die µC-Platine derzeit über die ISP-Schnittstelle und damit 
vom Computer über USB. Das SIM900 Modul hängt an einem Labornetzteil, 
das 6,5 Ampere schafft und 2x 4.700 nF Elkos eingebaut hat. Die Elkos 
sind also ca. 0,5 Meter Leitungslänge vom SIM900 entfernt.

Der Controller befindet sich, wie in der .ino Datei ersichtlich, im 
Sleepmode SLEEP_MODE_PWR_DOWN.

Ich bin sicher, daß der Controller aufgewacht ist und kein Reset 
durchgemacht hat, da ich im ungekürzten Code viele Textausgaben zur 
Kontrolle auf die RS232 Schnittstelle zum Computer sende. So konnte ich 
beobachten, daß die Programmschleife durchlaufen wird und davor nicht 
der Setup-Bereich. Ebenso konnte ich auf diese Weise feststellen, daß 
keine der beiden ISR-Routinen durchlaufen wurde.

Jetzt liegt mir nur noch eine Frage auf dem Herzen: Wie kann ich 
überprüfen, ob die Interrupts ausgeschalten sind, die einen Zusammenhang 
mit der seriellen Schnittstelle zu tun haben...?

Ich danke sehr für Eure Hilfe!
Nino.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Powerdown kommt man nur mit einem Low-Level Interrupt oder 
Pin-Change Interrupt wieder raus.
Man müßte mal in der Doku nachschauen, welchen das "attachInterrupt" 
benutzt und wie freigibt.
Ich benutze Interrupts immer direkt ohne irgendwelche Lib-Funktionen. 
Daher weiß ich auch nicht, welche Arduino-Pinnummer welchem AVR-Pin 
entspricht.

Nino K.L. schrieb:
> da ich im ungekürzten Code viele Textausgaben zur
> Kontrolle auf die RS232 Schnittstelle zum Computer sende.

Es könnte sein, daß ein laufender UART-Transfer das Powerdown 
verhindert.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nino K.L. schrieb:
> Die beiden Platinen werden aus unterschiedlichen Energiequellen
> gespeist:

Sowas ist ne ganz schlechte Idee. Es kann dann zu Ausgleichsströmen über 
IO-Pins kommen, die die nicht gespeiste Baugruppe schädigen können oder 
abstürzen lassen.

Nino K.L. schrieb:
> Das SIM900 Modul hängt an einem Labornetzteil,
> das 6,5 Ampere schafft

Eine Baugruppe, die nur wenige mA zieht, würde ich nie über ein 
Monsternetzteil speisen. Im Fehlerfall liefert das Netzteil genug Strom 
nach, um aus dem Chip Rauch aufsteigen zu lassen.

Autor: funker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Nino K.L. schrieb:
>> Das SIM900 Modul hängt an einem Labornetzteil,
>> das 6,5 Ampere schafft
>
> Eine Baugruppe, die nur wenige mA zieht, würde ich nie über ein

Um 2 Watt HF zu erzeugen, braucht man hier mehr als 'wenige mA'..

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Eine Baugruppe, die nur wenige mA zieht, würde ich nie über ein
> Monsternetzteil speisen.

Ich gehe doch mal schwer davon aus, dass die Nutzung des Labornetzteil 
hier nur ein Provisorium zum Experimentieren ist. Und genau dafür sind 
diese Geräte meiner Meinung nach auch gedacht.

Autor: Nino K.L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, danke für den Tip mit den Ausgleichsströmen. Daran hatte ich gar 
nicht gedacht!

UART Kommunikation kann Power-down verhindern, auch daran habe ich Laie 
natürlich nicht gedacht. Durch die Textausgabe "Goto sleep" habe ich in 
der Tat keine Garantie, daß der Controller schläft. Trotzdem denke ich, 
daß er geschlafen hat, denn sonst wäre ja die Schleife weitergelaufen 
und es hätten weitere Textkommentare kommen müssen.

Wie schon richtig vermutet wurde, betreibe ich die Anordnung nur in der 
Aufbauphase mit der oben beschriebenen Energieversorgung. Am Schluß 
kommt noch ein fertiges 12V-Fixspannungsnetzteil und eine zusätzliche 
Platine mit 5V-Spannungsregler für den µC. Da wird dank Eurer Hinweise 
ausreichend Pufferkapazität drauf sein und auch Filter, damit da nichts 
zum Controller durchkommt.

Die Anordnung läuft jetzt übrigens immer noch fehlerfrei und ich weiß 
nicht, welches Problem ich hatte. Es tut mir sehr leid, daß ich Euch aus 
diesem Grund auch die Ursache nicht nennen kann. Ich freue mich aber 
sehr über Eure Hilfsbereitschaft und möchte deswegen hier nochmal großen 
Dank an alle aussprechen, die mir geholfen haben und auch anderen 
helfen!

Gruß! Nino.

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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.