- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: großes Projekt Großes PROBLEM Gebäudesteuerung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.02.2007
    Ort
    demling
    Alter
    36
    Beiträge
    41

    großes Projekt Großes PROBLEM Gebäudesteuerung

    Anzeige

    Powerstation Test
    HI
    Hab mir eine Steuerung für meine wohnug zusammengelötet

    1 X Mega644 Haupt MCU
    1 X Mega16 Touch Screen auswertung
    2 X mega8 Aktoren für licht und netzwerk

    m644 ext quartz 8 mhz
    m16 int 8mhz
    m8 int 1 mhz (geht sonst nicht mehr nach fusebit einstellung auf 8 mhz)

    alles über I²C verbunden (ausser der m16 mit dem m644 direkt über 8bit port)
    die I²C leitungen haben eine gesammtlänge von ca 15 m 2,5kOhm abschluss

    touch = am mega644 = portd
    es hängen noch D/A A/D und tempsensoren dran.

    so problem is jetzt nach einiger zeit hängt sich der Bus auf.

    watchdog hat auch nix gebrach (läuft dan gar nicht mehr)
    Angehängte Dateien Angehängte Dateien

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.02.2007
    Ort
    demling
    Alter
    36
    Beiträge
    41

    sry

    Wie fügt man code ein?
    Angehängte Dateien Angehängte Dateien

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Die Tags für Code sind (Überraschung!) [code ] [/code ] (jeweils ohne Leerzeichen vor dem hinteren Bracket...)

    Oder auch ctrl-c im Browser (auf dem Mac zumindest)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Hessibaby
    Registriert seit
    20.11.2003
    Ort
    Gelsenkirchen
    Alter
    72
    Beiträge
    1.601
    Wann hängt sich der Bus auf ?
    Im langandauerndem Ruhezustand ?
    Das Gegenteil vom Watchdog ist keepaliving, ist z.B. im LAN realisiert ( deshalb blinken die LED´s Deiner Netzwerkkarte zyklisch )
    Gruß

    Planung ersetzt Zufall durch Irrtum

    Gruß aus dem Ruhrgebiet Hartmut

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    50
    Beiträge
    377

    Re: großes Projekt Großes PROBLEM Gebäudesteuerung

    Zitat Zitat von demlinger
    die I²C leitungen haben eine gesammtlänge von ca 15 m 2,5kOhm abschluss
    Hallo demlinger!

    I²C ist nicht für diese Länge gedacht. Verwendest du I²C Extender?

    - http://www.alldatasheet.com/view.jsp?Searchword=P82B715
    - http://www.alldatasheet.com/view.jsp?Searchword=P82B96

    mfg
    Gerold
    :-)


    PS: Du verwendest Software-I²C statt das in den Controller eingebaute TWI. Probiere es mal mit
    Code:
    'TWI (I²C)
    $lib "i2c_twi.lbx"       'Hardware TWI einschalten
    'Config Scl = Portc.5
    'Config Sda = Portc.4
    Config Twi = 100000
    I2cinit

    PS2: ``Waitms 1`` nach I²C-Schreiboptionen des Masters ist meist zu wenig. Erhöhe zum Testen mal auf ``Waitms 5`` oder sogar auf ``Waitms 10``.


    PS3: Nach einer Lese- oder Schreibaktion des Masters steht in der Variable "err" ob dabei ein Fehler aufgetreten ist. Du könntest diese Variable auswerten und dementsprechend eine Fehlermeldung auf dem Display ausgeben. Dann weißt du wer oder was den Fehler verursacht. -- Aber ich denke mal, dass du mit ``waitms 1`` einfach zu wenig lang wartest. Bei meinen Tests mit I²C-EEPROMs wurde das System erst bei ``waitms 5`` stabil. Siehe: https://www.roboternetz.de/phpBB2/vi...=360112#360112

    .

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Wie hast du den WatchDog eingebaut? Beim 644 musste ich am Anfang des Programmes innerhalb 4 Taktzyklen den Watchdog deaktiveren, sonst hat er gleich wieder angeschlagen.

    So fängt mein Programm an:
    Code:
    $asm
    
    Wdt_off:
    ; Turn off global interrupt
    cli
    ; Reset Watchdog Timer
    wdr
    ; Clear WDRF in MCUSR
    in r16, MCUSR
    andi r16, wdrf;(0xff & (WDRF))
    Out Mcusr , R16
    ; Write logical one to WDCE and WDE
    ; Keep old prescaler setting to prevent unintentional time-out
    in r16, WDTCSR
    ori r16,wdce; (1<<WDCE) | (1<<WDE)
    Out Wdtcsr , R16
    ; Turn off WDT
    ldi r16,wde; (0<<WDE)
    Out Wdtcsr , R16
    
    $end Asm
    
    
    $regfile = "m644def.dat"
    
    $crystal = 16000000
    $loadersize = 2048
    Stop Watchdog
    Config Watchdog = 2048
    wobei das letzte Stop Watchdog noch ein Überbleibsel aus ersten Versuchen ist. Kurz vor der Hauptschleife starte ich den Watchdog wieder und in der Hauptschleife wird er regelmäßig zurückgesetzt.

    Den Code habe ich aus dem Datenblatt des m644.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    07.02.2007
    Ort
    demling
    Alter
    36
    Beiträge
    41

    thx

    schon mal thx @ all

    @Hessibaby
    hab den fehler schon ziehmlich auf die aktoren begrentzt der der das Licht Steuert hängt sich teilweiße nach dem audführen des EIN befehls auf und bleibt dann auf 1 (solte aber nur für eine zeit <1sec 1 sein hab Stromstoßschalter ) und blokiert den Bus

    @python_rocks
    es sind eigentlich nur zwei lange leitungen die von der steuereinheit weggehen je ca. 4-5 m muss ich dann beide mit den extendern P82B715 versehen?
    also insgesamt dann 4 extender das mit den waitms werd ich mal ausprobieren
    der bus ist auch noch ziehmlich ungenau bei der temperatur springt die zahl immer 2 Grad hin und her
    da smit dem fehlerprotokoll such ich schon lange hab aber nie irgend einen verwendbaren code gefunden
    port c ist voll mit dem display I2C muss also software sein

    @peterfido
    also muss ich den watchdog auch in jeder anderen schleife starten und vor dem loop reseten oder ?

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    50
    Beiträge
    377

    Re: thx

    Zitat Zitat von demlinger
    @python_rocks
    es sind eigentlich nur zwei lange leitungen die von der steuereinheit weggehen je ca. 4-5 m muss ich dann beide mit den extendern P82B715 versehen?
    also insgesamt dann 4 extender das mit den waitms werd ich mal ausprobieren
    [...]
    da smit dem fehlerprotokoll such ich schon lange hab aber nie irgend einen verwendbaren code gefunden
    Hallo demlinger!

    Du schreibst von *zwei* Leitungen. I²C braucht aber *drei* Leitungen. SCL, SDA und **GND**.

    4-5 m ist ziemlich viel. Wenn man bedenkt, dass I²C ursprünglich nur für die geräteinterne Verbindung von ICs gedacht war, würde ich ab ein paar Meter dringende dazu raten, vor jedes weiter entfernte I²C-Gerät einen P82B96 zu schalten. Das sagt mir zumindest mein Gefühl. Belege dafür habe ich keine. Die Leitungen sollten auch miteinander verdrillt sein. Ein geschirmtes CAT.5 Netzwerkkabel (SFTP) wäre ideal.

    Nähere Informationen stehen im Datenblatt: http://www.alldatasheet.com/datashee...PS/P82B96.html

    Und was die ERR-Variable betrifft. Diese Variable brauchst du nicht extra definieren. Diese kannst du direkt nach dem I2CSTOP z.B. mit PRINT ausgeben lassen. Wenn ERR nicht 0 ist, dann ist ein Fehler aufgetreten.

    mfg
    Gerold
    :-)

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Hessibaby
    Registriert seit
    20.11.2003
    Ort
    Gelsenkirchen
    Alter
    72
    Beiträge
    1.601
    @Hessibaby
    hab den fehler schon ziehmlich auf die aktoren begrentzt der der das Licht Steuert hängt sich teilweiße nach dem audführen des EIN befehls auf und bleibt dann auf 1 (solte aber nur für eine zeit <1sec 1 sein hab Stromstoßschalter ) und blokiert den Bus

    Schaltest Du ein Relais ?
    Wenn ja, welche Stromaufnahme hat das, und wie tief bricht die Spannung ein ?
    Löte mal versuchsweise einen Elko mit 470µF parallel zur Spannungsversorgung am Aktormodul ein, denn wahrscheinlich bricht die Spannung bein Relaiseinschalten so weit zusammen, das der µC sich aufhängt.
    Gruß

    Planung ersetzt Zufall durch Irrtum

    Gruß aus dem Ruhrgebiet Hartmut

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Wenn der Watchdog einmal gestartet ist, dann muss er nur innerhalb seiner Ansprechzeit zurückgesetzt werden, damit er keinen Reset auslöst. Dieses mache ich normal innerhalb der Hauptschleife, denn diese sollte recht häufig durchlaufen werden. Vorsicht ist bei Befehlen wie input und wait angesagt, denn diese halten das Programm evtl länger an, als der Watchdog wartet.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress