Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: CC2 und ATmega8 per I2C verbinden Kategorie: I²C-Bus (von André H. - 30.12.2003 20:48)
Als Antwort auf CC2 und ATmega8 per I2C verbinden von Johannes - 30.12.2003 14:52

Hallo Johannes,

Du hast das I²C-Bus-Protokoll verletzt.
Das Adress-Byte muÃ? immer folgendermaÃ?en aufgebaut sein:
aaaaaaar
a=Adressbit
r= Read/Write 0=write, 1=read

Slaveadressen haben immer gerade Zahlen:
aaaaaaa0
Diese werden lediglich mit 1 oder-verknüpft, wenn man von
dem Baustein lesen will.

Und als zweites sollte die eingestellte Slave-Adresse Seines ATmegas
mit der Ã?bereinstimmen, an die Du senden willst.
Kurz: Wenn Du "TWIaddr" mit 0x40 definierst, so solltest Du mit der CC2 auch diese
ansprechen.
Also i2c.start(0x40) oder i2c.start(64).
�brigens solltest Du, wenn Du den I²C-Bus aus mehreren Threads ansprechen willst,
mit i2c.cstart arbeiten. (= I2C.Captured-Start)
Mehr dazu siehe in der Hilfe zu i2c.c2.
(Bei Installiertem SP2 in der IDE F1 drücken > "Modul-Hilfe">"i2c.c2",
ansonsten die Datei i2c.html aufrufen.)

MfG André H.


> Der Quellcode für die CC2:
>
>
> thread main
> {
>   i2c.init();
>   loop {
>    i2c.start(81);
>    i2c.write(1);
>    i2c.write(0);
>    i2c.stop();
>    sleep (1000);
>    i2c.start(81);
>    i2c.write(1);
>    i2c.write(1);
>    i2c.stop();
>    sleep (1000);
>   }
> }
>

>
> Und für das ATmega8-Modul:
>
>
> 'program Test1;
>
> { $BOOTRST $00C00}         {Reset Jump to $00C00}
> { $NOSHADOW }
> { $W+ Warnings}            {Warnings off}
>
> Device = mega8, VCC = 5;
>
> Import SysTick, TWIslave;
>
> From System Import;
>
> Define
>       ProcClock      = 16000000;       {Hertz}
>       SysTick        = 10;             {msec}
>       StackSize      = $0064, iData;
>       FrameSize      = $0064, iData;
>       TWImode        = Transparent;    {HandShake or Transparen}
>       TWIbuffer      = 10, iData;      {buffer/packet size}
>       TWIaddr        = $40;            {slave address}
> ...
> ...
>   TWIsetslaveAddr ($40);
>   EnableInts;
>   loop
>     LED1 := TWIRXBUFFER[0];
>     TWIRXBUFFER[0] := 0;
>   endloop;
> end Test1.
>




Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: CC2 und ATmega8 per I2C verbinden (von Johannes - 30.12.2003 22:49)
    Re: CC2 und ATmega8 per I2C verbinden (von André H. - 31.12.2003 8:31)