-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: 3 ATMega8 verbinden? Bus?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627

    3 ATMega8 verbinden? Bus?

    Anzeige

    Hallo,
    ich möchte 3 Mega8 vernetzen. Welches Bussystem ist am einfachsten für meine Zwecke zu realisieren(soft/hardware)?

    -Bascom
    - 3 Mega8
    -Leitung zwischen den µC´s ca. 7m (also µC1 >7m Kabel> µC2 >7m Kabel> µC3)
    -jeder µC soll mit jedem µC Daten austauschen können.
    -Geschwindigkeit: min 4 Integerwerte / sekunde übertragen (+Start Stopbits...)

    RS232 wäre schön eignet sich aber wohl nicht für 3µC bidirektional?
    RS485?
    I²C nicht in der Länge? Störungen?

    Hat jemand eine Idee / Vorschlag oder gibt es da etwas passendes was ich mit der Suche nicht gefunden habe?

    Danke - Tobias
    ...

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

    Re: 3 ATMega8 verbinden? Bus?

    Zitat Zitat von TobiasBlome
    -Bascom
    - 3 Mega8
    -Leitung zwischen den µC´s ca. 7m (also µC1 >7m Kabel> µC2 >7m Kabel> µC3)
    -jeder µC soll mit jedem µC Daten austauschen können.
    -Geschwindigkeit: min 4 Integerwerte / sekunde übertragen
    Hallo Tobias!

    RS-485 ist in diesem Fall mit Bascom das Einfachste. Einer der µC dient als Vermittler (µC1). Der Vermittler schickt der Reihe nach, zuerst an µC2 und dann an µC3 die Nachricht, dass jetzt der jeweilige µC eine Nachricht verschicken darf. Dann bekommt der jeweilige µC kurz Zeit, auf die Frage mit einer Nachricht zu antworten. Ist die Zeitspanne verstrichen, geht es mit dem nächsten µC weiter.

    In der Nachricht steht, an wen die Nachricht geschickt werden soll. Alle µC hören mit. So bekommt jeder µC die Nachricht, die für ihn bestimmt ist.

    Diese Einfache Zuteilung von Gesprächszeiten, funktioniert natürlich nur, so lange es sich um wenige µC handelt und genug Zeit zum Übermitteln der Nachrichten bleibt. Aber in deinem Fall ist mehr als genug Zeit vorhanden.

    mfg
    Gerold
    :-)

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Tja - mit RS485 habe ich mich noch nicht beschäftigt. Aber wenn ich mir das Prinzip so lese, dann könnte ich ja auch bei RS232 bleiben:
    Genau genommen habe ich µC1 mit Tastern und LCD. Nur µC1 kommuniziert mit µC2 oder µC3. µC2&3 müssen NICHT untereinander kommunizieren.

    In diesem Fall brauche ich glaub ich nur Rx und Tx von µC2&3 paralell zu schalten und µC1 gekreuzt. Vor jeder Nachricht muss ich dann schreiben ob die für µC2 oder µC3 ist richtig?
    Oder habe ich da einen Denkfehler.

    Tobias
    ...

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Ich würde auch sagen das das so gehen sollte. Ich habe in einem anderem
    Forum schon mal was ähnliches gesehen, allerdings mit nur zwei Controllern.
    Wenn du die die Software vom Sender und Empfänger genau anschaust, sollte es nicht schwer sein diesen für deine Zwecke zu modifizieren.
    Hier der Link: http://bascom-forum.de/index.php/topic,2012.0.html

    Gruß

    Neutro
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    ich bau einfach mal die Hardware und probier ich das mal aus

    @Neutro
    in dem Forumsbetrag sendet nur der eine µC zum anderen(wenn ich mich nicht verlesen habe) und ich benötige ja in beide Richtungen. Warscheinlich werde ich dem Empfang auch über einen Interrupt laufen lassen...

    Tobias
    ...

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Das mit der BI direktionalen Kommunikation hatte ich glatt überlesen.......
    Aber das dürfte eigentlich nicht so ein Drama sein das in den Griff zu bekommen solange immer nur zwei Controller gleichzeitig kommunizieren und der dritte schwiegt. Mit dem Input Befehl in dem Programm bekommt man ja eine Art Adressierung.

    Neutro
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Zitat Zitat von Neutro
    Mit dem Input Befehl in dem Programm bekommt man ja eine Art Adressierung.

    Neutro
    wie meinst du das?

    Mit input bekomme ich doch alles was gesendet wurde... Ich dachte mir das das ich das empfangene vergleiche und wenn zb. slave1 empfangen wurde wird eine Variable im entsprechendem µC auf 1 gesetzt und bekommt damit die Erlaubnis zu senden. Nach dem Senden setzt der µC die Varable wieder auf 0...
    War so eine Idee....
    ...

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Hmm, ich habe mir gerade noch mal das slave programm angeschaut, das mit dem Input hatte ich dann wohl falsch verstanden, es ist ja so das die Input´s hier in der Reihenfolge abgefragt werden in der auch gesendet wird. die Werte werden dann ja in die entspechende Variable geschrieben.....Sorry.....
    Aber mit z.B A = Inkey () und dann einer Case Anweisung für die entspechenden Werte muss das doch eigentlich funktionieren, oder bin ich da jetzt fasch vom Verständnis her? Im Prinzip also das was du dir auch ausgedacht hattest.
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    weitere Idee:
    Der Master sendet NUR zb. "Wert1" als Text.
    Wert1 ist NUR im Slave1 hinterlegt, also kann auch nur Slave1 antworten...

    Slave1 würde dann dieses Prog bekommen:

    Code:
    'µC
    'Quarz
    'Baud
    
    'Variablen
    Dim i as String*20 'besser zulang oder?
    Dim Wert1 as integer 'Wert von analogeingang
    
    On URXC OnRxD      'Interrupt-Routine setzen
    Enable URXC        'Interrupt URXC einschalten
    Enable Interrupts  'Interrupts global zulassen
    '---------------------------------------------------
    
    
    Main:              'Hauptschleife
      
    'IRGENDETWAS
    'analogeingang auslesen und in Variable Wert1 schreiben
    
    Goto Main
    '---------------------------------------------------
    
    
    OnRxD:
      i = UDR    'aus der UART auslesen
      
    If i = "Wert1" Then
    print Wert1 'Wobei Wert1 zb. ein vorher analogeingelesender Wert ist
    End if
    
    Return
    ...

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Ja, so hatte ich das auch überlegt. Auf Werte die der Empfänger nicht "kennt"
    wird er dann ja auch nicht reagieren.
    Das ist das selbe Prinzip wie mit der Case Abfrage, Werte die im Case nicht vorkommen werden ignoriert werden, bzw. es passiert einfach nichts.
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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