-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: I2C Bus???

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    28.10.2004
    Beiträge
    899

    I2C Bus???

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Also ich habe einen Atmega32 und einen Atmega8
    Jetzt will ich das wenn zum beispiel bei meine Atmega8 portb.0=1 ist das er dann dieses Signal weiter über I2C zum Atmega32 sendet....der Atmega32 löst darauf dann ein Unterprogramm aus...
    Nun weiß ich nicht wie ich das im programm schreiben soll...
    Könnte mir einer von euch einen Codeschnipsel geben wo das oder so was ähnliches oben ist?
    Geändert von techboy (22.05.2011 um 18:46 Uhr)
    Error is your friend!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.10.2004
    Ort
    PB
    Beiträge
    123
    Hallo Attila!

    Ich nehme an, dass du einen Master und einen Slave haben willst.
    Wenn du das in Bascom realisieren willst müsstest du dir die I2C Slave Lib für Bascom kaufen (4,95€).
    Einfacher wäre es, wenn du einfach zwei RS232 Schnittstellen softwareseitig baust und die beiden µC darüber kommunizieren lässt. (Ist in Bascom ja verdammt einfach)

    Grüße,
    Jonas

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    28.10.2004
    Beiträge
    899
    Ok mit RS232 könnte ich das auch realisieren!! Kannst du mir einen Codeschnippsel dafür geben????
    Ich kann im notfall auch C programmieren also kann ich C schnippsel auch gebrauchen!!!!!
    Geändert von techboy (22.05.2011 um 18:46 Uhr)
    Error is your friend!

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.10.2004
    Ort
    PB
    Beiträge
    123
    Es reicht glaube ich, wenn du dir diese beiden Befehle merkst:

    Code:
    Open "COMD.6:2400,8,N,1,inverted" For Output As #1 ' PD6 ist TXD
    Open "COMD.7:2400,8,N,1,inverted" For Output As #2 ' PD7 ist RXD
    Lies dir am besten in der Bascom Hilfe die Bedeutung der einzelnen Paramter durch, dann haut das schon hin, denke ich.

    Grüße,
    Jonas

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    28.10.2004
    Beiträge
    899
    Und wie kann ich mit dem code z.B. ,,sensor 1 is on" oder als byte I mit RS232 an einen anderen Controller senden und wie kann ich das im anderen Empfangen z.b. wenn der I empfängt portd.3=1 ist???
    Geändert von techboy (22.05.2011 um 18:47 Uhr)
    Error is your friend!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.10.2004
    Ort
    PB
    Beiträge
    123
    Hallo!

    Wie wär's mit IF - Schleifen?
    Code:
    If I = 255 Then   ' I ist &b11111111
    portd.3 = 1         ' Portd.3 ist High
    End If
    Vielleicht hilfts dir ja weiter!

    Grüße,
    Jonas

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    28.10.2004
    Beiträge
    899
    JA das hilft mir weiter!!!
    Kann ich die RS232 Schnittstelle auch nebenbei mit dem Max232 nutzen???
    Brauch ich da zwischen den RS232 Pins den Max232 oder kann ich die beiden Controller gleich an die pins ranhauen und geht das auch wenn ich mehrere controller an eine RS232 leitung ranhau???
    Geändert von techboy (22.05.2011 um 18:47 Uhr)
    Error is your friend!

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.10.2004
    Ort
    PB
    Beiträge
    123
    Hallo!

    Zwei Mikrocontroller kannst du wunderbar ohne alles verbinden. Du solltest nur auf ein gemeinsames GND achten.
    Mehrere Controller an eine Leitung geht, soweit ich weiß, nicht.

    Grüße,
    Jonas

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    28.10.2004
    Beiträge
    899
    Warum nicht?? Wenn ich für jeden controller einen anderes signal nehme dann sollte es theoretisch gehen...Ich meine wenn ich einen kontroller für ein bestimmtes signal programmiere das die anderen dann ignorieren...
    Geändert von techboy (22.05.2011 um 18:47 Uhr)
    Error is your friend!

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.07.2004
    Ort
    München
    Alter
    51
    Beiträge
    298
    Hallo Attila,

    Du kannst die Controller einfach so verbinden, die jeweiligen RXD und TXD Leitungen natürlich kreuzen.

    Da mir bald die I/O Leitungen meines Mega32 ausgehen, werde ich sowas ähnliches auch machen müssen.
    Ich habe mir das so vorgestellt:
    Der Slave wartet i.d.R. an der RS232 auf ein oder mehrere bestimmte Zeichen.
    Erkennt er diese frägt der Slave seine ganzen Eingänge der Reihe nach ab, auch eventuelle A/D Wandler.
    Die ganzen I/O Bits und A/D Werte setzt er dann zu einem Datenpacket zusammen und schick dies dem Master.
    Damit der Master nicht wärend der ganzen Abfrage zum Warten verdonnert wird verbinde ich noch einen I/O Pin
    des Slaves mit einen Interrupteigang des Masters.

    D.h. wenn der Slave mit seiner I/O Abfrage fertig ist löst er beim Master einen Interupt aus.
    Der Master kann dann die Daten empfangen und dann die A/D Werte und einzelnen Bits weiter auswerten.
    Eventuell wird der Slave noch eine Prüfsumme aus den ganzen A/D Werten und I/O Bits errechnen und
    an das Datenpacket hängen.
    Der Master überprüft diese Summe mit den übertragenen Bytes und fordert die Daten nochmals an falls die Prüfsumme nicht stimmt.

    Sollte nun ein kritisches Ereigniss an einem Slave I/O Pin auftreten,
    (z.B. ein Bodenkontakt meldet das vor dem Roboter ein Abgrund/Treppe ist)
    dann kann der Slave auch jederzeit ohne Anforderung des Masters einen Interupt auslösen
    und den Master auf die Gefahr hinweisen.

    Das ganze Übertragungsprotokoll, d.h. die Reihenfolge der I/O Bits, ob z.B. die A/D Werte als 10Bit Wert
    oder bei einem angeschlossenem Sharp Sensor gleich als Entfernung in cm, oder was für Deinen Roboter
    dann ein kritisches Ereigniss ist mußt Du natürlich erstmal festlegen.

    Gruß
    m.artmann

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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