Nach weiteren Tag probieren und verzweifeln das Resultat...
Die ersten 4 Leds von später 25 leuchten ist zwar noch nicht viel aber
es klappt. Was ich dazu getan hab ich bin vom Software I2C auf Hardware
TWI umgestiegen so kann ich auch gleich Problemlos die Ackn. Bits vom
Empfänger auswerten und mit ein bischen ausprobieren und Datenblatt
studium leuchten die Dinger endlich.
Allerdings ist mir im laufe meiner Flash Aktionen mein AtMega88 (erst 1
Woche alt) gestorben ich hatte den ganzen Tag schon Fehler beim
schreiben und zum schluss ging er garnicht mehr.
Nur gut das ich noch einen ATMega 8 da hatte der tuts. Nun folgt die
eigentliche Aufgabe Zahl zwischen (50 und - 20) empfangen und auf den
LEDs ausgeben 2 Grad = 1 Led. D.h. kopplung ATmega 8 und Atmega 8 :-D
über Uart.
Hier der Code für die Ansteuerung...
Code:
[c]
$regfile = "m8def.dat" 'Mega8
$crystal = 16000000 'Takt schnell genug
für den Bus
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 9600
$lib "i2c_twi.lbx" ' Für
Hardware TWI (I2C)
Config Scl = Portc.5
Config Sda = Portc.4
I2cinit 'I2C
Init
Config Twi = 400000 '
Initialisierung TWI
Twcr = &B00000100 ' TWI
einschaltten
Dim Adresse As Byte , Wert As Byte , I As Byte
Declare Sub I2c(byval Adresse As Byte , Byval Wert As Byte)
I2cinit
Print "Start"
Call I2c(&H09 , &H55) 'Setzen der
nichvorhanden Ports (Seite 5)
Call I2c(&H0a , &H55) 'Setzen der
nichvorhanden Ports (Seite 5)
Call I2c(&H0b , &H00) 'Segment 15
- 12 as LED's
Call I2c(&H04 , &H01) 'No Shutdown
mode -> Baustein wird aktiv (Seite 16)
Call I2c(&H02 , &H03) 'Globale
Helligkeit (ziemlich dunkel von h00 bis h0F) (Seite 18)
Do
Call I2c(&H2c , &H01) 'LED Port12
on '
Call I2c(&H2d , &H00) 'LED Port13
off
Call I2c(&H2e , &H01) 'LED Port 14
on
Call I2c(&H2f , &H00) 'LED Port 15
off
Waitms 500
Call I2c(&H2c , &H00) 'LED Port12
off
Call I2c(&H2d , &H01) 'LED Port13
on
Call I2c(&H2e , &H00) 'LED Port 14
off
Call I2c(&H2f , &H01) ''LED Port
15 on
Print "Ende"
Waitms 500
Loop
End
Sub I2c(byval Adresse As Byte , Byval Wert As Byte) 'Ablauf laut
Datenblatt (Seite 8, oben)
Print "SUB"
I2cstart 'Start
I2cwbyte &H80 'Slave Adresse (7
Bit + RW)
I2cwbyte Adresse 'Register Adresse
' I2cstart
'Wiederholter Start (muss nicht!)
I2cwbyte Wert 'Register Wert
Print Err 'Fehler bei
Kommunikation = 1
I2cstop 'Stop
Waitms 10 'Warten
End Sub
[c]
Mit freundlichen Grüßen,
Patrick