Hallo Bacom Experten
Bin Neuling mit Bascom, bisher nur PBP Pro für PIC controllern benutzt
Möchte auch Atmel Controller benutzen und darum habe ich schon einiges über Bascom gelesen doch was mich im Momment am meistens zu schaffen macht ist die vielfalt der instructionen für die serielle Schnitstelle.
In meinen PBP Pro programme benutze ich viel die Serielle Schnitstelle und I2C und möchte mein PBP Pro code auf Atmega 128 portieren.
Hier ein paar Beispiele
Wäre Nett wenn jemand mir dabei helfen kann das zu verstehen
Beispiel:I2C
bei PBP Pro wird in diesen Fall auf label notok im code gesprungen fals beim lesen von den externen eeprom das ack oder nack nicht ausgewertet wird
I2Cread dados,clock,$A0,$4B0B,[celcius,maxload],notok
notok:
mache irgend etwas
Bascom????
Beipiel:I2C
daten in ein 15 byte Array einlesen, hier wird auch auf notok im code gesprungen fals beim lesen von den externen eeprom das ack oder nack nicht ausgewertet wird
I2Cread dados,clock,$A0,$4B49,[STR fabrico\15],notok
Bascom??
Beipiel: Softuart
Daten in ein 15 byte Array von der softuart einlesen mit timeout von 10 sekunden, springt zu label notreceibe fals während der 10 sekunden das kennwort "id" nicht ankommt
SERIN2 pte,bmode,10000,notreceibe,[wait ("id"),STR id\15]
Bascom??
Beipiel: Softuart
Wie oben, hier wird auf das Zeichen "C" gewartet und wenn empfangen wird werden die danach folgenden Werte als decimal und als hexadecimal in den esp0 und esp1 variabeln gespeichert
SERIN2 pte,bmode,10000,notreceibe,[wait ("C"),dec2 esp0,hex2 esp1]
Bascom???
Bedanke mich in voraus
Mfg
Sato
Zu I2C gibt es schon diverse Samples (Beispiele)
- ' file: I2C.BAS
' demo: I2CSEND and I2CRECEIVE
oder in der Hilfe
- I2CSEND , I2CRECEIVE , I2CSTART , I2CSTOP, I2CRBYTE , I2CWBYTE, CONFIG SDA ,CONFIG SCL , CONFIG I2CDELAY
Hier ein Demo um 15 Bytes in ein Array zu lesen
Code:$regfile = "m32def.dat" ' the used chip $crystal = 8000000 $baud = 19200 ' baud rate Config Sda = Portb.5 Config Scl = Portb.7 Const Slave = &H120 Dim Buf(15) As Byte I2creceive Slave , Buf(1) , 0 , 15 'send 0 bytes and receive 15 byte End
Wenn Du vorher einige Bytes an den Slave senden willst /z.B. 2 Bytes da musst du in das Array zunächst die zu sendenden Werte schreiben, den Befehl ändern "I2creceive Slave , Buf(1) , 2 , 15"
Das Array wird dann mit den empfangen Werten überschrieben.
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
Lesezeichen