Moin,
ich habe ein Problem mit der Vernetzung von der CC2 mit einem ATmega8-Modul per I2C. Leider habe
ich noch niemanden gefunden, der mit dabei helfen konnte.
Ich habe an ein ATmega8-Modul zwei LEDs angeschlossen, die ich von der CC2 per I2C ein und
ausschalten will.
Der Quellcode für die CC2:
Code:
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:
Code:
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}
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
LED1[@PortD, 4] : bit;
LED2[@PortD, 5] : bit;
{--------------------------------------------------------------}
{ functions }
procedure InitPorts;
begin
DDRD:= %00110000;
LED1:= 1;
LED2:= 0;
end InitPorts;
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
InitPorts;
TWIsetGC (false);
TWIsetslaveAddr ($40);
EnableInts;
loop
LED1 := TWIRXBUFFER[0];
TWIRXBUFFER[0] := 0;
endloop;
end Test1.
Leider funktioniert der Code nicht. Die LED bleibt an.
Vielleicht findet sich ja hier jemand, der mir helfen kann.
Gruß
Johannes
Lesezeichen