$LIB "I2C_TWI.LBX"
Wird in der BASCOM-Hilfe an verschiedenen Stellen erläutert. Läßt sich mit der Suchfunktion und dem Library-Namen oder auch unter I2C finden.
Hallo zusammen,
um mal wieder mit uC was zu machen habe ich ein Projekt gestartet ... Projekt Mähroboter.
vor ca 30 Jahren habe ich mit einem Z80 meine Erfahrungen gesammelt und den NDR-Klein-Computer auf ECB mit selbst entwickelten Einsteck-Karten ausgebaut.
Hat damals viel Spaß gemacht, doch dann kam die Zeit wo PCs zu erschwinglichen Preisen zu bekommen war.
In der Zwischenzeit habe ich viel mit IOWorrias gemacht und auch dafür den IOW-Socket-Server und das Test-Programm ALL-In-ONne dafür entwickelt, einige werden mich dadurch vielleicht kennen.
Nun möchte ich aber mal wieder was mit uC machen und dafür braucht man ein Sinnvolles Projekt, z.B. ein Mähroboter.
Bei der Umsetzung habe ich mich für ATMega und Bascom entschieden.
Da ich mich für ein PC-Gestütztes System entschieden habe, benötigt man eine FUNK-COM Anbindung ...
Um langsam in die Materie einzusteigen, habe ich das mal versucht als erstes zu realisieren.
Aufbau: Arduino(Nano 328p) und ein Terminal-Adapter
Möchte die Verschiedenen Bereicht ( Antrieb / Sensoren / Orientierung ) durch eigene Module(uC) aufbauen und diese mit I2C vom Main-Controller steuern.Code:$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 100 $swstack = 100 $framesize = 100 $baud = 9600 Config Serialin = Buffered , Size = 40 Dim Na As String * 30 Dim Si As Byte Enable Interrupts Print "Start_Main" Do If Ischarwaiting() <> 0 Then Si = Inkey() If Si <> 13 And Si <> 10 And Len(na) < 30 Then Na = Na + Chr(si) Else If Ucase(na) = "STATUS" Then Print "ACK;STATUS" Waitms 500 Print "Status;V1=12;V2=13;S4=2000" ' Beispiel einer Rückantwort Elseif Ucase(na) = "STOP" Then Print "ACK;STOP" Waitms 500 Print "STOP" ' Beispiel einer Rückantwort Elseif Ucase(na) = "START" Then Print "ACK;START" Waitms 500 Print "START" ' Beispiel einer Rückantwort Else Print "NAK;" ; Na End If Na = "" End If End If Loop
Bei dem Projekt geht es nicht darum das mit so wenig Ressourcen wie möglich zu gestalten, sondern eher um ein Projekt ( Spaß an der Umsetzung )
Werde bestimmt öfter vor Problemen stehen, wo ich nicht weiter komme, in der Hoffnung die dann durch eure Hilfe bewerkstelligen kann.
Die ATMega -Serie hat ja uC mit verschiedener Ausstattungen, wie kann ich mit Bascom aus die Hardware Unterstützung zurückgreifen ohne das Bascom versucht das Software mäßig zu realisieren.
Mir ist noch nicht ganz klar wie z.B. I2C Befehle nicht Softwaremäßig sondern Hardwaremäßig in Bascom umgesetzt werden ... wird das über $regfile = "m328pdef.dat" gesteuert ...
$LIB "I2C_TWI.LBX"
Wird in der BASCOM-Hilfe an verschiedenen Stellen erläutert. Läßt sich mit der Suchfunktion und dem Library-Namen oder auch unter I2C finden.
Best Dank "Gast" für die Info ...
habe die LIB "i2c_twi.lbx" in meinem einfachem Test-Programm eingebunden und es hat auf Anhieb geklappt ...Code:' ------------ Bascom - Parameter ------------------------$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 100 $swstack = 100 $framesize = 100 $baud = 9600 Print "Start_Main" ' ------------ I2C - Master ------------------------ $lib "i2c_twi.lbx" Config Scl = Portc.5 Config Sda = Portc.4 I2cinit Config Twi = 100000 ' ------------ RS232 - Input ------------------------ Config Serialin = Buffered , Size = 40 Enable Interrupts ' ------------ DIM ------------------------ Dim Na As String * 30 'RS232-Input-String Dim Si As Byte 'RS232 Input Dim X As Byte 'Temp-Data Do If Ischarwaiting() <> 0 Then Si = Inkey() If Si <> 13 And Si <> 10 And Len(na) < 30 Then Na = Na + Chr(si) Else If Ucase(na) = "STATUS" Then Print "ACK;STATUS" Waitms 500 Print "Status;xxxx" Elseif Ucase(na) = "ON" Then Print "ACK;ON" I2csend &H40 , &HFF 'PCF8574 Write I2creceive &H40 , X 'PCF8574 Read Print "ON;" ; X Elseif Ucase(na) = "OFF" Then Print "ACK;OFF" I2csend &H40 , &H00 'PCF8574 Write I2creceive &H40 , X 'PCF8574 Write Print "OFF;" ; X Else Print "NAK;" ; Na End If Na = "" End If End If Loop
In ein paar Tagen bekomme ich 5 weitere Arduion_Nano, dann werde ich auch mal die kostenpflichtige "I2CSLAVE Library" ausprobieren ...
da der ATMega328P wohl eine Weiterentwicklung des M128 mit TWI-Hardware (TWI-I2C) ist, sollte auch die Hardware-Unterstützung damit klappen ...
Gruß Ralf ... Projekt-Beschreibungen www.greinert-dud.de ... "Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht."
Lesezeichen