-
-
Neuer Benutzer
Öfters hier
Hardware I2C bei M16 in Bascom
Hallo Leute,
wie spricht man den I2C-Bus von einem ATMega16 in Bascom an?
Die Slave-Beispiele von Bascom funktionieren nur mit den kleineren AVR's.
In den Bascom-Hilfe-Dateien steht, dass man beim M16 den
Hardware-I2C verwenden soll, was ja auch sinnvoll wäre.
Doch wie spricht man ihn an, ich finde dafür leider nur
Assembler-Beispiele.
Bin dankbar für jede Hilfe.
mfg
sam86
-
Erfahrener Benutzer
Robotik Einstein
Hi sam86!
Wo hast Du die ganzen Assembler-Beispiele gefunden?
Ich finde nämlich kaum welche! :o(
Für Bascom findest Du was in der Artikelliste ganz oben! :o)
TWI!
-
Erfahrener Benutzer
Roboter Genie
HI!
Habe auch gerade ein Problem mit dem I²C und dem Mega16.
Kann es sein dass das NUR auf diesen Pins funktioniert??
Viele Grüße,
Tobi
-
Administrator
Robotik Visionär
Auf welchen PIN´s der I2C Bus liegt kann in Bascom ja frei gewählt werden. Derzeit wird nicht der Hardware I2C-Bus genutzt, vemutlich ist dies aber ab der nächsten Version der Fall.
Momentan kannst du die Bascom I2C Befehle mit beliebigen PIN´s nutzen. DIe PIN´s kannst du so einstellen:
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
-
Erfahrener Benutzer
Roboter Genie
HI Frank!
Ich habe das so gemacht, aber es kommt laut Speicheroszilloskop nix raus! Pullups usw...
Mein Quellcode:
Config Sda = Porta.0 'I²C SDA
Config Scl = Porta.1 'I²C SCL
Beep Alias Portd.2
595dat Alias Portc.6
595takt Alias Portc.1
595act Alias Portc.0
165dat Alias Pinc.7 '!!WICHTIG: Beim EINLESEN IMMER PinX.Y
165takt Alias Portb.1
165act Alias Portb.0
'===FUNKTIONEN===
Declare Function 595akt() As Byte
Declare Function Get165() As Byte
Declare Function Send_to_slave() As Byte
Declare Function Slv_input() As Byte
Declare Function Errorbeep(byval Number As Byte) As Byte
Declare Function Sirene(byval Oft As Byte) As Byte
Declare Function Rechts_vor() As Byte
Declare Function Rechts_rueck() As Byte
Declare Function Rechts_stop() As Byte
Declare Function Links_vor() As Byte
Declare Function Links_rueck() As Byte
Declare Function Links_stop() As Byte
Declare Function Beide_vor() As Byte
Declare Function Beide_rueck() As Byte
Declare Function Beide_stop() As Byte
Declare Function Beide_links() As Byte
Declare Function Beide_rechts() As Byte
Declare Function Mstop() As Byte
'===VARIABLEN===
Dim A As Byte
Dim B As Byte
Dim D As Byte
Dim E As Byte
Dim Tmpink As Byte
Dim 165pinstate(2) As Byte
Dim 595pinout(3) As Byte
Dim F As Byte
Dim S As Byte
Dim Actualslaveip As Byte
Dim Stscom As String * 4
Const 595online = 2 + 1
Const 165online = 1 + 1
'===PROGRAMMBEGINN===
Begin:
595act = 0 'activate '595 auf null
595takt = 0 'takt
595dat = 0 'data
165act = 1 'activate '595 auf null
165takt = 0 'takt
S = Asc( "s" ) 'S für success
F = Asc( "f" ) 'f für failure
595pinout(2) = 0 '595er auf null
595pinout(3) = 0
A = 595akt()
Sound Beep , 250 , 1000 'Ein bisschen gepiepse zum Anfang...
Sound Beep , 250 , 900
Sound Beep , 250 , 800
Sound Beep , 500 , 500
Starting:
A = Sirene(3) 'IICCCCCCCCCCHHHHHHHHHHH KKKOOOOOOMMMMMMMMMMMMMMMMMMMMMMMMMMEEEEEEEE!!
Waitms 500 'Watren
'====Eigentlicher PROGRAMMSTART====
Source: 'TESTPROGRAMM
B = &B01110001 'Addresse des Datenchip Daten
D = &B01110011 'steuer
I2cstart
I2cwbyte D
I2cwbyte &B00000000
I2cstop
Waitms 25
I2cstart
I2cwbyte B
I2cwbyte &B00001100
I2cstop
Waitms 25
I2cstart
I2cwbyte D
I2cwbyte &B10000000
I2cstop
Waitms 25
I2cstart
I2cwbyte D
I2cwbyte &B00000000
I2cstop
Waitms 25
I2cstart
I2cwbyte B
I2cwbyte 97
I2cstop
Waitms 25
I2cstart
I2cwbyte D
I2cwbyte &B10000000
I2cstop
Waitms 25
I2cstart
I2cwbyte D
I2cwbyte &B00000000
I2cstop
End 'ENDE!!
Ich weis, es gibt dieses Codefenster, aber ich find's so übersichtlicher...
Zu den Pins kommt absolut nada raus. Meine Pullups sind 5,6kOhm.
Achso, ich steure damit 2 PCF8574P an. Das ist ein LCD wie auf
http://www.destroy-yourself.de/julia...amr/i2clcd.htm
Ich schätze, dass es irgendwie an der Programmierung liegt, aber...
Ihr kennt euch da besser aus. Bin I²C Noob.
Viele liebe Grüße,
Tobi
-
Erfahrener Benutzer
Roboter Experte
fehlt da nicht der i2cinit ???
-
Erfahrener Benutzer
Roboter Genie
Hi!
Siehe PM... keine Ahnung! das Buch das ich habe, ist dazu etwas ungeeignet.
Viele liebe Grüße, Tobi
-
Neuer Benutzer
Öfters hier
Hi!
@Florian: Die Asm-Beisp. waren im Datenblatt vom M16.
Für den Master müssten doch die Befehle I2csend und I2creceive funktionieren. Doch die Bascom-Beispiele für den Slave funktionieren nicht mit dem M16. Der Compiler meldet dann, dass das I2C-Library nicht mit dem M16 funktioniert.
-
Erfahrener Benutzer
Robotik Einstein
Hi sam86!
Danke für den Tipp, da ich derzeit nur den Mega8 benutze, habe ich das völlig übersehen!
Danke nochmals! :o)
-
Neuer Benutzer
Öfters hier
Hi,
vielleicht sollte ich meine Frage mal anders formulieren:
Wenn die BasCom-Hife meint, ich soll die "harware I2C implementation" verwenden, dann heißt das doch, dass ich die Steuerregister setzen und die Interupts verwalten soll.
Blos wie kann ich in Bascom die Register setzen und die Interrupts verwalten?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen