PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit I²C in Bascom und AVR



Schokohoernl
21.05.2006, 13:33
Hallo!

Ich habe hier einen SAA1064 (4 Digit LED driver. http://www.ortodoxism.ro/datasheets/philips/SAA1064.pdf)
Der wird per I²C angesteuert. Bascom hat ja berets die I2C funktion... sobald diese aber ausgeführt wird, bleibt der µC (ein AT90S2313) hängen :-(

hier mal mein Quellcode

$crystal = 10000000
Config Scl = Portd.4
Config Sda = Portd.3
I2cinit

Print "Schritt 1"

I2cwbyte &H70

Print "Schritt 2"

I2cwbyte 0

Print "Schritt 3"

I2cwbyte &B1111110

Print "Fertig"

Do
Loop

"Schritt 1" wird noch gesendet, doch dann bleibt der µC einfach hängen und mach garnix mehr :-(
wenn ich die I2cwbyte befehle weglass, bleibt er nicht hängen. hab das gleiche problem auch mit einem Atiny-15L. Woran kann das liegen??

THX 4 Help!

Schoko

linux_80
21.05.2006, 14:22
Hallo,

Du musst auch vor dem senden der Datenbytes die Verbindung zum Slave starten,
dazu gibt es die Befehle I2Cstart und I2Cstop.
Danach wird als erstes die Slaveadresse gesendet, dann erst die Daten.

In der Bascomhilfe steht genaueres, incl. Beispiel.

Schokohoernl
21.05.2006, 14:33
Hi! stimmt, das hab ich vergessen. Habs jetzt eingefügt, aber hat nicht wirklich was gebracht. bin jetzt von Portd auf Portb gewechselt, hat aber auch nichts gebracht. Hier der überarbeitete code


$crystal = 10000000
$baud = 19200
Config Scl = Portb.2
Config Sda = Portb.1
I2cinit

Print "Config fertig"

I2cstart
Print "I²C gestartet"
I2cwbyte &H70
Print "Schritt 1"
I2cwbyte &B00000000
Print "schritt 2"
I2cwbyte &B1111110
Print "Schritt 3"
I2cstop
Print "I²C gestoppt"

Do

Loop

der AT90S2313 bleibt wieder bei I2cwbyte hängen. Lediglich "Config fertig" und "I²C gestartet" werden gesendet, dann sagt der gar nix mehr :-(

linux_80
21.05.2006, 14:49
Wie schaut die sache Hardwaremässig aus ?

Die Pullupwiderstände werden gerne mal vergessen, wenns ein selbstgebautes Board ist !

Schokohoernl
21.05.2006, 14:57
hardware mäßig schauts so aus, dass der AT90S2313 an den ISP adapter angeschlossen ist, pin 2 und 3 sind für RXD und TXD vom UART belegt und der SAA1064 hängt mit Sda und Scl an PortD 1 und 2. Von Scl und Sda gehen je ein 1k Widerstand nach GND.

Schokohoernl
21.05.2006, 15:28
AU MANN!!! da hab ich mir die antwort doch gearde selber gegeben.... :Haue

hab die widerstände an VCC angelötet und siehe da: alles tut.... wegen so einem blödsinn hier 3 stunden verdödeln...

trotzdem danke!!