- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: I2c Bus und ATMega..manchmal aussetzer

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68

    I2c Bus und ATMega..manchmal aussetzer

    Guten Morgen
    Ich baue gerade für eine Kollegen eine Modellbahnsteuerung per AT-Mega, I2C und SPS.
    Geplant ist das die SPS steuerbefehle auf den AT-Mega sendet, oder dieser zurück an die SPS gibt.
    Die Verbraucher in der Anlage werden dann über denn I2C Bus geschaltet.
    Das geschieht mit dem PCF 8574 in DIP-Form.

    Einige Platinen sind bereits fertig programmiert.
    Manchmal lauft aber der Bus einfach nciht mehr, das heißt keine Signale kommen mehr an oder gehen raus an den Bus.

    Woran kann das liegen ?
    Habe folgendes mal gemacht, als der Fehler auftrat ..
    Adresse bei laufendem betrieb und nicht vorhandem baustein umgeschaltet
    Bodlevel und boden fusebits aktiviert
    oder muß ich eine programmschleife ändern ? arbeite mit der sprache c.
    der AT-Mega läuft mit 16 Mhz.

    Der bus selber ist auf der CPU Platine und auf der Portplatine mit 2,2 Widerständen als Pull-Up geschaltet.
    Meine Vermutung war noch, wenn man die Betriebsspannung schnell aus und wieder einschaltet das der Controller nicht immer sauber hochläuft.

    Weiß jemand rat ??

    Danke
    Patrick

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Woran kann das liegen ?
    An mehreren Dingen.

    Adresse bei laufendem betrieb und nicht vorhandem baustein umgeschaltet
    Bodlevel und boden fusebits aktiviert
    Ja und, irgendwelche Änderungen?!

    oder muß ich eine programmschleife ändern ?
    Sollen wir raten wie die Schleife aussieht um dir darauf ne Antwort geben zu können?!

    arbeite mit der sprache c.
    Siehe eine Antwort weiter oben.

    Der bus selber ist auf der CPU Platine und auf der Portplatine mit 2,2 Widerständen als Pull-Up geschaltet.
    2,2 was?! Wenn du kOhm meinst sollte das eigentlich passen.

    Meine Vermutung war noch, wenn man die Betriebsspannung schnell aus und wieder einschaltet das der Controller nicht immer sauber hochläuft.
    Jein, bedenke dabei das er eine bestimmte Zeit zum Booten braucht. Je nach Programm noch länger... aber wie gesagt, keiner kennst dein Programm.

    Weiß jemand rat ??
    Das wäre in diesem Fall nur "raten", also bitte mehr Details.

  3. #3
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Hallo

    Ja..pull up 2,2 Kohm
    einmal auf dem treiberboard wo der atmega sitzt
    und einmal jeweils auf dem pcf.board...dürfte daher nichts passieren

    ich habe zusätzlich noch einen 470 kohm wiederstand zwischen +5volt und gnd gelötet damit der elko für die spannungsversorgung sich richtig entladen kann.
    ich hatte da mal ein problem in der vergangenheit.

    ich habe die vermutung das die initialisierung der eingänge des pcf8574 nicht richtig ist.
    ich habe jetzt zusätzlich noch eine routine programmiert wo alle bausteine erst einmal auf 0 geschrieben werden.

    bei den fusebits hatte ich keine änderungen bemerkt.
    ich programmiere aber und schalte nicht immer die spannungsversorgung aus.
    meist kommt dieser fehler nach dem einschalten..daher die vermutung mit der init-phase.

    der at-mega und die karten sind über ein 10poliges flachbandkabel mit einander verbunden
    wie lang dürfte dieses maximal sein ?
    die auslastung des mega 16 liegt programmtechnis bei ca. 80%..ist ein sehr umfangreiches programm
    besser auf den mega 32 wechseln ???
    die stromversorgung für die PCFs sind jeweils auf den karten mit untergebracht.
    um spannungsverlust vorzubeugen

    danke erstmal für die antwort
    Geändert von modtronic (14.05.2011 um 14:33 Uhr)

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    Hallo,

    wenn es bevorzugt nach dem Einschalten passiert, könnte es ja sein, daß Slaves noch nicht bereit sein.
    Warte doch einfach etwas, bevor das Programm mit der Übertragung loslegt.

    Du schreibtst, es läuft nichts mehr auf dem Bus.
    Hängt das Programm im Controller wegen völlig anderer Bugs und kommt deswegen nicht dazu, was auf I2C zu senden?
    Mach doch ein paar Debug Ausgaben mit ins Programm rein, dann kannst Du die Stelle eingrenzen, wo das Programm hängen bleibt.
    Wenn Du I2C Transfers verdächtigst, dann als z. Bsp ein 1 senden über RS232 wenn Du die I2C Routinen betrittst, 2 wenn Du wieder verlässt.
    Dann erkennst Du, wo es hängt.

    Ist Deine I2C Routine robust gegen Fehler auf dem Bus?
    Wenn ein Slave angesprochen wird, der aber nicht antwortet, wartest Du dann unendlich auf Acknowlege oder kommst Du geordnet aus so einem Fehler wieder raus.

    Bernhard

Ähnliche Themen

  1. RGB LED fader in Matrix - Aussetzer
    Von m3Sa im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 06.12.2012, 13:52
  2. atmega8 selbständige Frequenzausgabe - Aussetzer??
    Von Powell im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 18.01.2008, 15:17
  3. Schrittmotor an RN_Motor hat Aussetzer
    Von Loetknecht im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 11.05.2007, 13:00
  4. RN-Motor läuft nur manchmal
    Von ISI05 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 4
    Letzter Beitrag: 02.04.2006, 14:08
  5. GP2D12 hat manchmal aussetzer ? Ist das "normal" ?
    Von im Forum Sensoren / Sensorik
    Antworten: 7
    Letzter Beitrag: 29.08.2005, 20:45

Stichworte

Berechtigungen

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

12V Akku bauen