Johannes
30.12.2003, 15:00
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:
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}
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
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:
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}
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