
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hmm, naja, original siehts ja so aus: 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'III CCBASIC++ DEMO ZUM BASIC-COMPUTER UNIT M 1.2/2.0 IIIII 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '-------------------------------------------------------------------- ' Beispiel zum BASIC-COMPUTER mit dem Programmer/Application-Board '-------------------------------------------------------------------- ' ANWENDUNG: IIC OBJECT IIC-BUS COMMUNICATIONS MODULE ' FEHLERBEHANDLUNG '-------------------------------------------------------------------- ' Dieses Beispiel zeigt die Vorgehensweise für die Benutzung des ' IIC-OBJECTS am Beispiel mit einem PCF8574. ' Hier: Fehlerbehandlung ' ' Der IIC-Bus liegt an PORT 9 (SDA) und PORT 10 (SCL) '------------------------------------------------------------------- ' SYNTAX für das IIC-MODULE ' IIC.INIT ' IIC.START ' IIC.SEND address,command ' IIC.GET address,command ' IIC.STOP ' IIC.OFF '--------------------------------------------------------------------- ' ' Beschreibung: ' In diesem Beispiel wird der gesamte Adressraum nach vorhandenen IIC-Geräten ' durchsucht. Dazu wird gesendet: START-ADRESSE-STOP ' Wichtig ist, dass die Adresse im "WRITE-Modus" angesprochen wird und daher ' das Bit0 der Adresse (das R/W Bit) immer null sein muss. ' Das IIC-OBJECT setzt im CONFIG-REGISTER das Bit 6, wenn es vom angesprochenen ' Gerät kein Achnowledge empfangen hat. ' Das Programm IIC_ERROR.BAS in der LIBRARY enthält zwei Funktionen die folgene ' Aufgaben haben: ' IIC-DEVICE mit Adresse ansprechen, Fehlerflag zurück geben und im CONFIG1 ' Register löschen. ' Wird auf einer Adresse ein IIC-Gerät gefunden, wird dessen Adresse im LCD ' angezeigt. ' ' ACHTUNG: ' Achten Sie unbedingt darauf, dass das LCD initialisiert ist, wenn es ' angesteckt ist (auch wenn sie es nicht benutzen). ' Es teilt sich einen Teil seines Busses mit dem IIC-BUS ' LCD.INIT ' LCD.OFF ' '----------------------------------------------------------------------- '-------------------------- '------ I/O PORTS --------- '-------------------------- define LIGHT port[16] define SDA port[9] define SCL port[10] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- import "....\LIB\IIC_ERROR.BAS" '------------------------------------------------------ FUNCTION SHOW_DEVICE(ADDR as byte) LCD.INIT switchonly LCD.POS 2,1 LCD.PRINT "FOUND AT: " & ADDR LCD.OFF END FUNCTION '----------------------------------------------------- #MAIN '----------- EINSCHALT MELDUNG------------------------ LIGHT=off LCD.INIT LCD.PRINT "IIC-DEVICE SEEK" pause 50 LCD.CLR LCD.OFF '----------------------------------------------------- '-- SUCHE NACH IIC-EINHEITEN MIT ADRESSE xxxxxxx0 ---- '----------------------------------------------------- #LOOP define COUNTER as byte '-------- ADRESSEN DURCHZÄHLEN ---------------------- for COUNTER=0 to 254 step 2 '-------- LAUFENDE ADRESSE ANZEIGEN ------------------ LCD.INIT switchonly LCD.POS 1,1 LCD.PRINT "SEEK AT: " & COUNTER LCD.OFF '-------- IIC DEVICE ANSPRECHEN ---------------------- if (IIC_RESPONSE(COUNTER)= off) then SHOW_DEVICE(COUNTER) END IF NEXT COUNTER '------- attributes ccproject ccproject end attributes was das "LCD.INIT switchonly" ist, ist mir nicht so ganz klar aber sonst?! Naja.. ich brauch eh noch n paar Relais für meine Eiswürfelmaschine :) Ne, also es bringt nichts, das LCD zu initialisieren.. hmm.. Grüße, Martin |
| Antwort schreiben |