- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: I2C zwischen Controllern

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Anzeige

    Powerstation Test
    Ich kenne mich mit Bascom nicht aus, aber du verwendest TWAR und TWCR. Somit verwendest du Hardware I2C (TWI). TWAR ist das Adressregister (Two Wire Adress Register) und TWCR ist das Control Register (Two Wire Control Register). Wie du den Atmega als I2C Slave verwendest steht ab S177 im Datenblatt. Dort steht z.B. das das TWEA und TWEN Bit in TWCR "1" sein müssen. Bei dir ist das TWEA Bit aber nicht gesetzt (ist das 6te Bit). TWSTA und TWSTO dürfen nicht gesetzt werden.

    MfG Hannes

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    So, jetzt habe ich mir das LIB-Paket von MCS Electronics gekauft und mich entschieden, für erste Versuche zwei Mega8 und Hardware-I2C zu verwenden, um es so unkompliziert wie möglich zu machen.
    Trotzdem wirft das Ganze bei mir immer wieder neue Fragen auf, auf die vielleicht hier jemand die Antwort weiß:

    1. Wenn I2C und TWI tatsächlich das gleiche sind, wie in der Bascom-Hilfe ja imer wieder mantrahaft wiederholt wird, weshalb gibt es dann für beides Befehle zur Konfiguration eines Slaves (CONFIG I2CSLAVE und CONFIG TWISLAVE)?

    2. ist mir bei ersten Versuchen aufgefallen, dass der Befehl CONFIG I2CSLAVE lediglich zwei Labels benötigt (I2c_master_needs_data und I2c_master_has_data), während die Verwendung von CONFIG TWISLAVE gleich ein halbes Dutzend Labels verlangt (twi_addressed_goread, twi_gotdata, twi_stop_rstart_received, twi_addressed_gowrite, twi_master_needs_byte und twi_master_need_nomore_byte).

    Wenn der Slave eine variable Anzahl an bytes empfangen soll wäre es doch sinnvoll, nach der korrekten Read-Addressierung eine Zählvariable auf 1 zu setzen, sie nach jedem empfangenen Byte um 1 zu inkrementieren, und damit ein Array zu füllen. Wie kann man so etwas denn lösen, wenn man den CONFIG I2CSLAVE-Befehl nutzt, und dementsprechend nur die Labels I2c_master_has_data und I2c_master_needs_data hat?

    3. Mit dem Befehl CONFIG TWISLAVE kann ich bisher leider gar nicht rumexperimentieren, weil beim Kompilieren stets die Fehlermeldung "Illegal character [expected(, got "[TWI_CBTR]]" erscheint. Weiß jemand damit etwas anzufangen? (Habe die Bascom-Version 2.0.7.3)

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Ja, so kenne ich es auch: TWI ist I2C; und das hat angeblich mit der Vermeidung von Lizenzgebühren zu tun.

    Hast du mit der LIB nicht auch den Quellcode verfügbar? Besser noch: Dokumentation und Beispielprogramme ???

    CONFIG TWISLAVE scheint die I2C-Spezifikation abzubilden (START, REPEATED START, ACK, NACK etc.).
    CONFIG I2CSLAVE könnte eine höhere Abstraktionsebene sein, wo Daten per programmtechnischem Handshake ausgetauscht werden. (Es gibt da mit Sicherheit auch noch ein/zwei Datenregister, vllt. sogar die regulären physischen Register / deren Namen aus dem Controller-Manual !?)

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    05.11.2009
    Ort
    Gerblingerode
    Alter
    58
    Beiträge
    207
    Hallo,

    auch ich möchte gerne mehrere Arduino_Nano (ATmega328P) über I2C verbinden ... 1 x Master 2-3 x Slave

    möchte mit Bascom arbeiten ... als Master ja kein Problem aber als Slave ?

    @Sauerbruch
    bist Du zu einer Lösung gekommen ?

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Hallo Feuerring,

    ja, nach längerem herumpuzzeln mit dem LIB-Paket, das ich für ein paar Euros gekauft hatte, funktioniert es einwandfrei!

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    05.11.2009
    Ort
    Gerblingerode
    Alter
    58
    Beiträge
    207
    Hallo Sauerbruch,

    kannst Du mir auch Details nennen, wo es gehangen hat und wie Du die LIB eingebunden und verwendest hast ...

    Programm-Teile die die LIB verwenden wären glaube ganz hilfreich ...

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. PID Regler bei Brushless Controllern üblich?
    Von HeyHey im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 04.03.2013, 19:41
  2. LCD-Lib von P. Fleury für Display mit 2 Controllern
    Von pyr0skull im Forum C - Programmierung (GCC u.a.)
    Antworten: 22
    Letzter Beitrag: 26.04.2009, 09:03
  3. Reset Pin bei Atmel Controllern
    Von Powell im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 28.03.2007, 13:49
  4. Komuntikation zwischen Controllern
    Von NemesisoD im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 19.11.2006, 15:31
  5. Tonerzeugung mit Controllern
    Von ricoderrichter im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 24.08.2005, 16:43

Berechtigungen

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

Solar Speicher und Akkus Tests