-         

Ergebnis 1 bis 5 von 5

Thema: Serielle Kommunikation Mega 16 - Mega 162, für mich unerklärbarer Fehler

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.09.2011
    Beiträge
    31

    Serielle Kommunikation Mega 16 - Mega 162, für mich unerklärbarer Fehler

    Anzeige

    Ich benutze einen Mega 16 zur Steuerung in einem Wochenendhaus. Die Anlage ist kurz vor Fertigstellung und soll demnächst eingebaut werden.
    Der Mega 16 überwacht Türen, Bewegungsmelder, Akkuspannung.... und sendet die Ereignisse seriell an einen Mega 162, der dann ein Modem steuert. Die Ereignisse werden dann per Mail weitergeleitet.
    Die Ereignisse (Tür auf, Bewegungsmelder aktiv...) werden als String 20 Zeichen lang, bestehend aus Datum, Uhrzeit und entsprechende Nummern für die Ereignisse gesendet.

    Folgendes funktioniert fehlerfrei:
    stündliche Übermittlung der Akkuspannung
    Meldung wenn Bewegungsmelder aktiv
    Meldung wenn Türklinke gedrückt oder Tür geöffnet

    Wenn aber der Akku vom Netz nachgeladen wird, dann werden nur 10 oder 11 Zeichen des Strings gesendet. Danach ist Schluß. Die restlichen 9-10 Zeichen fehlen.

    Das verstehe ich nicht.

    Die Sendung der Daten erfolgt immer aus dem gleichen Unterprogramm "Daten_senden", welches aus den verschiedenen Programmbereichen aufgerufen wird. Die Ereignisnummer (für Akkuladung -> 6) wird an das UP übergeben.
    Selbst wenn ich aus dem Programmbereich "Akku laden" direkt sende und auf den Sprung zum Unterprogramm verzichte, dann werden auch nur maximal 11 Zeichen gesendet.

    Es macht auch keinen Unterschied ob der fehlerhaften Übermittlung schon mehrere Sendungen vorausgegangen sind oder nicht. Wenn ich sofort nach Programmstart eine Akkuladung simuliere, wird auch nur die Hälfte übermittelt. Ist danach der Bewegungsmelder aktiv, dann läuft alles wie gaplant.

    Es ist schwer, so etwas aus der Ferne zu beurteilen. Vielleicht hat jemand eine Idee?

    Danke

    PS:

    Programmiert wird in Bascom

    Zum besseren Verständnis:

    Programmschleife:

    1. Bewegungsmelder prüfen
    aktiv --- > Ereignis = 3, gosub daten_senden

    2. Türkontakt prüfen
    Tür auf--- > Ereignis = 4, gosub daten_senden

    3. Akkuspannung prüfen
    <11,8 V--- > Relais einschalten
    --- > Ereignis = 6,gosub daten_senden

    Schleifenende

    Unterprogramm Daten_senden
    Print, #1 Datum, Uhrzeit, Ereignis
    return
    --------------------------------------------------------------------------

    1. und 2. Funktioniert, die Daten werden wie gewünscht gesendet
    3. funtioniert nicht, nur 10 od. 11 Zeichen werden gesendet
    Geändert von #fritz# (28.03.2012 um 22:28 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Ohne Code fehlt mir die Grundlage zu helfen.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.434
    Blog-Einträge
    105
    Ja, ohne Code und vielleicht später auch Schaltplan kann man nur raten. Ich sag mal: Stacküberläufe
    Geändert von Searcher (29.03.2012 um 12:05 Uhr) Grund: stottern beseitigt
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Spekulation: Wenn der Check-Akku-Spannung-Routine beim Messen WÄHREND des Ladens durchdreht und die Kiste mit Interrupts vollstopft, kann SW-Uart senden beeinträchtigt werden, weil das Timing im A... ist.

    Die Zeichen, die fehlen : ist das eine geschlossene Folge oder verteilen sich die über den gesamten String ? (Also z.b. nur jedes zweite Zeichen )
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    14.09.2011
    Beiträge
    31
    Hallo,
    zunächst vielen Dank für die Hinweise.

    Ich bin der Sache noch einmal nachgegangen:
    Ich habe die Akkuladung bisher nur durch eine SMS ausgelöst. Der Befehl wird seriell vom Modem an den AVR übermittelt.
    Der Fehler tritt also nur auf, wenn der Sendung ein serieller Dateneingang vorausgeht.
    Dann werden die ersten 10-11 Zeichen lückenlos gesendet. Die restlichen Zeichen fehlen komplett.

    Wenn die Spannung tatsächlich abfällt und dadurch die Akkuladung ausgelöst wird, dann wird der
    komplette String (20 Zeichen) fehlerfrei gesendet.


    Es sind wirklich mehrere Interrupts aktiv - alle 3 Timer - durch Funkuhr und die restlichen 2 durch mich programmiert.

    Aber ich komme damit klar. Ich brauche ja nur eine E-Mail, wenn die Akku-Spannung wirklich abfällt.

    Ich möchte Euch nicht zumuten, den ganzen Code zu analysieren.

    Danke

Ähnliche Themen

  1. TWI zwichen mega 16 und mega 8
    Von rauf81 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 18.04.2011, 06:44
  2. Antworten: 3
    Letzter Beitrag: 03.12.2009, 19:36
  3. Controllerboard für Mega 16, Mega 32 und Mega 644
    Von Teslafan im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 4
    Letzter Beitrag: 02.05.2009, 01:01
  4. Wieviele Servos an den Mega 8 oder Mega 16 ?
    Von minium :) im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 06.10.2006, 19:03
  5. Atmel mega 8 mit Bascom Parrallel programmieren Fehler Chip
    Von mirco99 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 19
    Letzter Beitrag: 12.12.2005, 11:28

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •