
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hallo, > > bin kurz vorm Wahnsinn. Mit dem IIC Bus krieg ich's nicht auf die Reihe. Seit Wochen versuche ich mich, aber vergebens. Weiß absolut nicht mehr weiter. > Wollte auf einem IIC Bus LCD(von Conrad) die Temp. von zwei DS 1631 darstellen und mit einem Taster die Beleuchtung am IIC Bus LCD für ca. 10 sec. einschalten, leider krieg ich's am Bus nicht hin. > Die Beispiele von Conrad und CCTools haben mir auch nicht weitergeholfen. Ich schaff's nur auf dem Display der Station. Da ist die Programmierung irgendwie logisch für mich, wobei ich es eben beim Bus einfach nicht kapiere!!! Vielleicht hat ja jemand etwas ähnliches schon mal gemacht und kann mir helfen? Das wäre super!!! > > Grüsse > Pit Hi Pit, Bei der Ausgabe der Temp. von zwei DS 1631 kann ich dir nicht helfen, aber falls es um die allgemeine Ausgabe am IIC-BUS geht kannst du folgendes Programm probieren. > Diese Demo liegt, neben vielen anderen auf www.c-control-support.de (bei den Updates): > Ich hoffe das hilft dir > > > '-------------------------------------------------------------------- > ' ANWENDUNG: IIC-BUS LCD (19 83 30) MIT PCF8574 - ANSTEUERUNG - > ' > '-------------------------------------------------------------------- > ' Das IIC-LCD MODUL beeinhaltet einen PCF8574 zur Ansteuerung des LCD > ' Die Unterstützung der Externen Ports durch das Betriebssystem machen > ' die Ansteuerung recht einfach. Allerdings können z.B. Texte an ein > ' IIC-BUS LCD nicht so komfortabel gesendet werden, wie das beim LCD > ' an Byteport 2 der Fall ist. > '-------------------------------------------------------------------- > ' Sie können diese externen Ports ansprechen, wenn ein entsprechend adressierter > ' Baustein an den IIC-Bus angeschlossen ist. > ' Speziell für den PCF8574 ist das Betriebssystem aber so erweitert, dass > ' Sie auf die Ports dieses Bausteins direkt über die PORT-Funktionen des > ' Betriebssystems zugreifen können und sich über die IIC Protokollierung > ' keine Gedanken müssen, das dies das Betriebssystem vollständig übernimmt. > ' Allerdings ist die Zugriffszeit auf einen externen Port bedeutend grösser > ' als bei den CPU-Ports 1 bis 16 (Byteport 1 u. 2) > ' > ' Das IIC-MODULE brauchen sie hier nicht zu benutzen, da der PCF 8574 vollständig > ' vom Betriebssystem unterstützt wird, im Hintergrund allerdings die Protokollierung > ' Statt findet, wie sie in den Beispielen zum IIC-MODULE beschrieben ist. > ' > ' Wissen müssen Sie allerdings, welche Ports zu welche PCF-Adresse gehören. Sie > ' finden hier eine Aufstellung: > ' > ' PCF 8574 ADR 0 Ports 17 - 24 BYTEPORT 3 > ' PCF 8574 ADR 1 Ports 25 - 32 BYTEPORT 4 > ' PCF 8574 ADR 2 Ports 33 - 40 BYTEPORT 5 > ' PCF 8574 ADR 3 Ports 41 - 48 BYTEPORT 6 > ' PCF 8574 ADR 4 Ports 49 - 56 BYTEPORT 7 > ' PCF 8574 ADR 5 Ports 57 - 64 BYTEPORT 8 > ' PCF 8574 ADR 6 Ports 65 - 72 BYTEPORT 9 > ' PCF 8574 ADR 7 Ports 73 - 80 BYTEPORT 10 > > ' PCF 8574A ADR 0 Ports 81 - 88 BYTEPORT 11 > ' PCF 8574A ADR 1 Ports 89 - 96 BYTEPORT 12 > ' PCF 8574A ADR 2 Ports 97 - 104 BYTEPORT 13 > ' PCF 8574A ADR 3 Ports 105 - 112 BYTEPORT 14 > ' PCF 8574A ADR 4 Ports 113 - 120 BYTEPORT 15 > ' PCF 8574A ADR 5 Ports 121 - 128 BYTEPORT 16 > ' PCF 8574A ADR 6 Ports 129 - 136 BYTEPORT 17 > ' PCF 8574A ADR 7 Ports 137 - 144 BYTEPORT 18 > '------------------------------------------------------------------- > ' Der IIC-Bus liegt an PORT 9 (SDA) und PORT 10 (SCL) > ' > ' Beschreibung: > ' Der PCF8574 hat eine wählbare 3-Bit Adresse. In unserem Beispiel gehen wir > ' davon aus, dass alle Bits der Adresse HI sind, die Adresse ist also 7 > ' In der Tabelle oben sehen Sie, dass zur Adresse 7 des PCF8574 der > ' BYTEPORT 10 gehört. Die zugehörigen Bitports sind 73 bis 80, werden > ' aber hier nicht benutzt, da der Port als Byte beschrieben wird. > ' > ' Das Programm schreibt einen Text auf das LCD. > ' Die Variable OUTBYTE und BUF wird vom Treiber selbst verwaltet. > ' Die Variable LCDDATA ist Ihre Schnittstelle zur Übergabe von Buchstaben an das LCD > ' EXTPORT ist der auf den PCF8574 ausgelagerte BYTEPORT > '----------------------------------------------------------------------- > ' Achtung, ganz wichtig: > ' Die Ports müssen als Ausgang initialisiert werden bevor der IIC-Bus > ' benutzt wird: SDA=on:SCL=on > ' Achten Sie unbedingt darauf, dass das LCD auf dem Application Board initialisiert ist, > ' wenn es angesteckt ist (auch wenn sie es nicht benutzen). > ' Es teilt sich einen Teil seines Busses mit dem IIC-BUS > ' print"#ON_LCD#"; > ' print"#INIT#"; > ' print"#OFF#"; > '----------------------------------------------------------------------- > 'Hier sehen Sie, welche PCF 8574 Ports dem LCD zugeordnet sind: > 'Port 0 LCD DB4 > 'Port 1 LCD DB5 > 'Port 2 LCD DB6 > 'Port 3 LCD DB7 > 'Port 4 LCD R/W > 'Port 5 LCD RS > 'Port 6 LCD EN > '------------------------------------------------------------------- > '-------------------------- > '------ I/O PORTS --------- > '-------------------------- > '--- IIC INTERFACE ------- > define SDA port[9] > define SCL port[10] > define EXTPORT byteport[10] > '-------------------------- > '------ SYSTEM MEMORY ----- > '-------------------------- > '--- IIC INTERFACE ------- > define OUTBYTE byte[2] > define LCDDATA byte[3] > define BUF byte[4] > > > > '---- ZEICHENSATZ DEFINITION ------------- > define Z0&H30:define Z1&H31:define Z2&H32:define Z3&H33 > define Z4&H34:define Z5&H35:define Z6&H36:define Z7&H37 > define Z8&H38:define Z9&H39 > define A&H41:define B&H42:define C&H43:define D&H44 > define E&H45:define F&H46:define G&H47:define H&H48 > define I&H49:define J&H4A:define K&H4B:define L&H4C > define M&H4D:define N&H4E:define O&H4F:define P&H50 > define Q&H51:define R&H52:define S&H53:define T&H54 > define U&H55:define V&H56:define W&H57:define X&H58 > define Y&H59:define Z&H5A:define BLK&H20 > > > print"#ON_LCD#"; > print"#INIT#"; > print"#OFF#"; > > '---------- IICBUS INIT ------------------ > SDA=on:SCL=on > > > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > 'II PCF 8574 PORTERWEITERUNG FÜR LCD II > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > pause 20 > gosub lcd_init > > '----- WRITE CHARACTERS LINE 1 --------------- > LCDDATA=4:gosub L1_GOTOPOS 'LINE 1 POS 4 > LCDDATA=D:gosub lcd_writechar > LCDDATA=E:gosub lcd_writechar > LCDDATA=M:gosub lcd_writechar > LCDDATA=O:gosub lcd_writechar > LCDDATA=BLK:gosub lcd_writechar > LCDDATA=M:gosub lcd_writechar > LCDDATA=BLK:gosub lcd_writechar > LCDDATA=Z2:gosub lcd_writechar > LCDDATA=&H2E:gosub lcd_writechar > LCDDATA=Z0:gosub lcd_writechar > '----- WRITE CHARACTERS LINE 2 --------------- > LCDDATA=3:gosub L2_GOTOPOS 'LINE 2 POS 3 > LCDDATA=P:gosub lcd_writechar > LCDDATA=C:gosub lcd_writechar > LCDDATA=F:gosub lcd_writechar > LCDDATA=BLK:gosub lcd_writechar > LCDDATA=Z8:gosub lcd_writechar > LCDDATA=Z5:gosub lcd_writechar > LCDDATA=Z7:gosub lcd_writechar > LCDDATA=Z4:gosub lcd_writechar > LCDDATA=BLK:gosub lcd_writechar > LCDDATA=L:gosub lcd_writechar > LCDDATA=C:gosub lcd_writechar > LCDDATA=D:gosub lcd_writechar > > #LOOP > goto LOOP > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > > > > > > '------------------------------------------------------- > '--- PCF 8574 LCD DRIVER AT ADDR 7 / EXT BYTEPORT 10 --- > '------------------------------------------------------- > #LCD_INIT > EXTPORT=0 > LCDDATA=&H38:gosub LCD_WRITECMD > EXTPORT= &B00000010:EXTPORT= &B01000010:EXTPORT= &B00000010: > LCDDATA=&H28:gosub LCD_WRITECMD:LCDDATA=&H0C:gosub LCD_WRITECMD > #LCD_CLR > LCDDATA=&H02:gosub LCD_WRITECMD:LCDDATA=&H01:gosub LCD_WRITECMD:pause 20:return > #L1_GOTOPOS > LCDDATA=LCDDATA +&H7F:goto LCD_WRITECMD > #L2_GOTOPOS > LCDDATA=LCDDATA +&HBF:goto LCD_WRITECMD > #LCD_WRITECMD > BUF = off:goto LCD_WRITE > #LCD_WRITECHAR > BUF = &B00100000 > #LCD_WRITE > '--------- ------WRITE HI NIBBLE ------------------------ > OUTBYTE=BUF or (LCDDATA shr 4) > EXTPORT=OUTBYTE or &B01000000:EXTPORT=OUTBYTE and &B10111111 > '--------------- WRITE LO NIBBLE ------------------------ > OUTBYTE=BUF or (LCDDATA and &H0F) > EXTPORT=OUTBYTE or &B01000000:EXTPORT=OUTBYTE and &B10111111 > return > '------------------------------------------------------- > > > Gruß Volker |
| Antwort schreiben |