Kopplung von 2 ATMega per I2CSoft Master und TWI Slave

  • 1
  • 2
  • Page 2 of 2
mc-electronic
Benutzer
Avatar
Gender: n/a
Location: Sauerland NRW
Posts: 372
Registered: 03 / 2008
Subject:

Re: Kopplung von 2 ATMega per I2CSoft Master und TWI Slave

 · 
Posted: 27.03.2012 - 08:53  ·  #9
@Rolf:

Na, das nehme ich Ihnen mal nicht ab, daß ich mehr über I2C weiß als Sie :lol:

Leider muß ich das I2CSoft auf der Master-Seite mit dem TWI auf der Slave-Seite kombinieren und kann nicht auf TWInet ausweichen. Und I2C muß ich nehmen, da ich dieses Interface zur Ankoppelung weiterer Module an meinen Datenlogger vorgesehen habe.

Ich habe es ja nun auch in beide Richtungen hinbekommen, wenn auch nur mit fester Blockgröße. Da kann ich mit leben. Blöd ist halt immer die Testerei bis man raus hat, was nun geht, was nicht geht und wie man sich mit einem Workaround behilft.
Ich hatte Byte, Word, Longword und Array getestet, das ging alles. Nur halt String nicht, die einzige Option mit variabler Länge. Da gibt der I2CInp immer ein False zurück.

Wie auch immer, der Handshake funktioniert gut, wenn man es einmal raus hat. Und nächstes Mal sehe ich eine 2. UART am Erweiterungsbus vor..

Gruß, Michael
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 71
Posts: 256
Registered: 11 / 2009
Subject:

Re: Kopplung von 2 ATMega per I2CSoft Master und TWI Slave

 · 
Posted: 27.03.2012 - 10:24  ·  #10
Hallo Michael,
ich nutze die TWI-Master und TWI-Slave und I2C- SChnittstelle in mehreren Projekten.
( Leider gibts die TWI-Slave für die Xmega noch nicht).
Bisher habe ich keine Probleme gehabt. Teilweise nutze ich auch beides in einem AVR.
Soft-I2C als Master zu anderen AVRs ( bis zu 32 genutzt) und TWI-Slave als Empfänger von Kommandos ( z.B. vom USB-Chip CY7C68013).

Hier ein paar kleine Auszüge daraus

-----------Master--------------------------------------------
Import SysTick,FlashWrite,SerPort,watchdog,TWISlave,I2Cport;

if I2COut(K,86)= true then
udelay(5);
I2CInp(K,V);
......

if I2CInp(K,V) = true then
Write(Serout,'V' + ....... // melden an PC

-----------Slave--------------------------------------------------

Import SysTick, TWIslave,SwitchPort1,watchdog;//
TWImode = HandShake;
TWIbuffer = 32, iData;
TWIaddr = 71 ; // zu ändern pro Slave-Platine
//-------------------------------------

if TWIGetRxStat then //Befehl empfangen ?
case TWIGetCMD of
1: TWITxBuffer[0] := EmpfaengerNr; | // Empfänger-Einschub Nr wird gelesen vom Master
7: CopyBlock(@sn,@TWITxBuffer,16); | //String (sn) aus EEprom lesen nach Anforderung
8: CopyBlock(@TWIRxBuffer,@sn,16); | //String (sn) ins EEprom schreiben
endcase;
TWISetRDY(true);
endif;
if TWIgetTxStat then
TWISetRDY(true);
endif;

golf
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Kopplung von 2 ATMega per I2CSoft Master und TWI Slave

 · 
Posted: 27.03.2012 - 11:14  ·  #11
Hallo Michael,

ich meinte nicht das allgemeine I2C/TWI knowhow, sondern speziell das Slave Teil.

rolf
  • 1
  • 2
  • Page 2 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   65   79 · Page-Gen-Time: 0.025883s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI