Danke!
Gruß
Torrentula
Hallo Torrentula,
hier mal ein "Leerprogramm" für den CCRP5 mit Erweiterung. Da sind alle Definitionen, Variablen und Unterprogramme richtig drin.
Gruß DirkCode:'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'IIIIIIIIII ROBBY RP5 - Leerprogramm 2 IIIIIIIIIIII 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'PROGRAMM-RUMPF ZUM START EIGENER ENTWICKLUNGEN ' Programm-Name: LEERPROGRAMM_BE1.bas ' Hardware: Robby RP5 MIT Erweiterungsplatine, aber OHNE CC2 ' (und ggf. mit LC-Display an LCD1) ' Treiber: P5DRIV12.S19 '---------------------------------------------------------------------- '------ Konstanten -------- define V_OFFSET 0 '= CHRG_CURRENT - SYS_VOLTS (Abgleichwert) define V_ADJUST 2 'Eichwert Spannungen (Bauteile-abhängig!) 'Hier weitere Konstanten-Definitionen! '-------------------------- '------ I/O PORTS --------- '-------------------------- '- INTERFACE LCD/EXTPORT -- define sdio port[1] define sclio port[3] define strobe port[4] define LSTROBE port[7] '-- INTERFACE COM/NAV ----- define DATALINE port[1] define CLOCKLINE port[2] '-- CC2 INTERFACE ------- define CC2POWER port[8] '------ LCD INTERFACE ------ 'define lcd_port byteport[2] 'Frei, wenn kein LCD angeschlossen ist! 'define lcd_rs port[14] 'define lcd_rw port[13] 'define lcd_e port[15] '-------------------------- '------ SENSORS --------- '-------------------------- define FREIAD8 ad[8] 'Freier A/D-Wandler define LIGHT_L ad[7] define LIGHT_R ad[6] define SYS_VOLTS ad[3] define CHRG_CURRENT ad[2] define SYS_CURRENT ad[1] define MIC ad[4] define TOUCH ad[5] '--------------------------- '------ DRIVE ------------- '--------------------------- define SPEED_L da[1] define SPEED_R da[2] define REV_L port[6] define REV_R port[5] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- '--- INTERFACE BUFFER ---- define LBYTE byte[1] define HBYTE byte[2] define SUBCMD byte[3] '---- OPERATION DATA ------ define EXTPORT byte[4] define LED1_F bit[29] define LED2_F bit[30] define LED3_F bit[31] define LED4_F bit[32] define SYSTEM_STATUS byte[5] define ACSL_F bit[33] define ACSR_F bit[34] define IR_F bit[35] define LEDPORT byte[6] define L1_F bit[41] define L2_F bit[42] define L3_F bit[43] define L4_F bit[44] define L5_F bit[45] define L6_F bit[46] define L7_F bit[47] define L8_F bit[48] '---- LCD DRIVER ------------- 'define lcd_buf byte[7] 'Bytes 7 und 8 frei, wenn LCD nicht genutzt wird! 'define lcd_param byte[8] '-------------------------- '---- USER MEMORY ------- '-------------------------- define DEVICEADDRESS byte[9] 'User Memory ab BYTE[10] frei! '--- SYSTEMROUTINEN ----------- define PLM_SLOW &H01C2 define SYSTEM &H01C7 define LED_DRIVE &H01CA define COMNAV &H0144 '- ERWEITERTE SYSTEM ROUTINEN - define REVR &H0101 'ANTRIEB RECHTS RÜCKWÄRTS define REVL &H0106 'ANTRIEB LINKS RÜCKWÄRTS define FWDR &H010B 'ANTRIEG RECHTS VORWÄRTS define FWDL &H0110 'ANTRIEB LINKS VORWÄRTS define ROTR &H0115 'RECHTS DREHEN define ROTL &H0119 'LINKS DREHEN define REV &H011D 'RÜCKWÄRTS define FWD &H0121 'VORWÄRTS define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER define ACS_LO &H01E0 'ACS POWER LO define ACS_HI &H01E8 ' define ACS_MAX &H01F0 ' define SEND_TLM &H013A 'SENDET TELEMETRIE (CH=HBYTE, DATEN=LBYTE) define SEND_SYSSTAT &H0134 'SENDET TLM KANAL 0, SYSTEM STATUS '(FLAGS für ACS, FWD/REV, ACS_LO/HI/MAX) '---------- INIT--------------- ' Basiserweiterung initialisieren: LSTROBE=off 'LEDPORT-Zugriff ermöglichen CC2POWER=on 'PWR und +5V (für CC2 und Experimentierplatine) einschalten ' Subsysteme einschalten: gosub SUBSYS_PWR_ON ' LC-Display initialisieren: 'gosub LCD_INIT beep 368,10,0:pause 50 gosub LEDSOFF 'Alle LEDs auf Robby aus gosub LOFF 'Alle LEDs auf Basiserweiterung aus ' ACS initialisieren: '---- SYSTEM OPERATION MODE (NO INTERRUPT) ---- 'gosub NO_ACS_INT:beep 368,10,0:sys ACS_HI 'oder: ACS_LO, ACS_MAX ' ODER ... '---- SYSTEM OPERATION MODE (ACS INTERRUPT 200 ms) ---- 'interrupt ACS_INTERRUPT:gosub ACS_INT_200:beep 368,10,0:sys ACS_HI ' IR-COMM initialisieren: '--------- IR-DATENFORMAT ----------------- 'gosub RC5 'oder: REC80 ' ODER ... '---- IRCOMM OPERATION MODE (INTERRUPT ON) ---- 'interrupt IRCOMM_INTERRUPT:gosub RC5_INT 'oder: REC80_INT '---------- SET ADDRESSED MODE ----------------- 'DEVICEADDRESS=1 'oder: 2..15 'gosub SET_ADDRESS '------------ ANTRIEB ------------------------- REV_L=on:REV_R=on:sys PLM_SLOW '---------------------------------------------------------------------- ' Hier ggf. weitere Initialisierungs-Befehle!!! '---------------------------------------------------------------------- ' PROGRAMM: ' Hier mit dem Programm beginnen!!! '---------------------------------------------------------------------- ' UNTERPROGRAMME: '---------------------------------------------- '--------- ACS INTERRUPT SERVICE -------------- '---------------------------------------------- '#ACS_INTERRUPT 'Beispiel für eine Interruptroutine! 'sys COMNAV_STATUS 'if ACSL_F=on then gosub LED4ON else gosub LED4OFF 'if ACSR_F=on then gosub LED1ON else gosub LED1OFF 'pause 5:gosub LED1OFF:gosub LED4OFF:return interrupt '--------------------------------------------- ' ODER ... (ACHTUNG: Nur EINE Interrupt-Routine ist möglich!!!) '--------------------------------------------- '-------- IR-COMM INTERRUPT SERVICE ---------- '--------------------------------------------- '#IRCOMM_INTERRUPT 'Beispiel für eine Interruptroutine! 'sys COMNAV_STATUS 'gosub GET_IRDATA 'gosub LED1ON:pause 5:gosub LED1OFF:return interrupt '--------------------------------------------- 'IIIIIIII Binärausgabe mit 8 LEDs der Basiserweiterung IIIIIIII ' Der Robby mit Basiserweiterung kann OHNE LC-Display keine Werte ' (z.B. seiner Sensoren) anzeigen. Diese Routine gibt VALUE mit ' den 8 LEDs der Basiserweiterung in Binärform (8 Bit) aus. ' Die Variable VALUE muss als BYTE definiert sein! '#LBINOUT 'gosub LOFF: gosub L1FLASH: gosub L1FLASH 'gosub L1FLASH: gosub L1FLASH: gosub L1FLASH 'if (VALUE and &B1) <> 0 then gosub L1ON 'if (VALUE and &B10) <> 0 then gosub L2ON 'if (VALUE and &B100) <> 0 then gosub L3ON 'if (VALUE and &B1000) <> 0 then gosub L4ON 'if (VALUE and &B10000) <> 0 then gosub L5ON 'if (VALUE and &B100000) <> 0 then gosub L6ON 'if (VALUE and &B1000000) <> 0 then gosub L7ON 'if (VALUE and &B10000000) <> 0 then gosub L8ON 'pause 200: return '#L1FLASH 'gosub L1ON: pause 5: gosub L1OFF: pause 5: return 'Binär-Dezimal-Tabelle (4-Bit): ' WERT: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ' L1-> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ' L2-> 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 ' L3-> 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ' L4-> 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ' ' Der Dezimal-WERT kann in der 1. Zeile abgelesen werden, wenn man ' die zutreffende LED-Kombination aussucht (1 -> an, 0 -> aus). ' Für jede leuchtende LED 5 bis 8 muss noch folgender Wert addiert ' werden: L5-> + 16 ' L6-> + 32 ' L7-> + 64 ' L8-> +128 ' Damit erhält man dann den ganzen 8-Bit-Dezimalwert (0..255). '---------------------------------------------------------------------- 'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII #LED1ON LED1_F=on:goto EXTPORT_WRITE #LED1OFF LED1_F=off :goto EXTPORT_WRITE #LED2ON LED2_F=on:goto EXTPORT_WRITE #LED2OFF LED2_F=off:goto EXTPORT_WRITE #LED3ON LED3_F=on:goto EXTPORT_WRITE #LED3OFF LED3_F=off:goto EXTPORT_WRITE #LED4ON LED4_F=on:goto EXTPORT_WRITE #LED4OFF LED4_F=off:goto EXTPORT_WRITE #LEDSOFF EXTPORT=EXTPORT and &H0F:goto EXTPORT_WRITE #LEDSON EXTPORT=EXTPORT or &HF0 #EXTPORT_WRITE sys SYSTEM:pulse STROBE:return '--- LEDS AUF DER BASIS ERWEITERUNG ------ #L1ON L1_F=on:goto LEDPORT_WRITE #L1OFF L1_F=off :goto LEDPORT_WRITE #L2ON L2_F=on:goto LEDPORT_WRITE #L2OFF L2_F=off :goto LEDPORT_WRITE #L3ON L3_F=on:goto LEDPORT_WRITE #L3OFF L3_F=off :goto LEDPORT_WRITE #L4ON L4_F=on:goto LEDPORT_WRITE #L4OFF L4_F=off :goto LEDPORT_WRITE #L5ON L5_F=on:goto LEDPORT_WRITE #L5OFF L5_F=off :goto LEDPORT_WRITE #L6ON L6_F=on:goto LEDPORT_WRITE #L6OFF L6_F=off :goto LEDPORT_WRITE #L7ON L7_F=on:goto LEDPORT_WRITE #L7OFF L7_F=off :goto LEDPORT_WRITE #L8ON L8_F=on:goto LEDPORT_WRITE #L8OFF L8_F=off :goto LEDPORT_WRITE #LOFF LEDPORT=0 :goto LEDPORT_WRITE #LON LEDPORT=&HFF #LEDPORT_WRITE sys LED_DRIVE:pulse LSTROBE:return '---------------------------------------- '------------- LCD ROUTINES ------------- '---------------------------------------- '#LCD_INIT ' alle ports 0 ' lcd_port = OFF ' 8-Bit-Modus aktivieren ' lcd_param=&H38 : gosub LCD_WRITECMD ' mit 8-Bit-Command in 4-Bit-Modus umschalten ' lcd_port=&B00000010 ' tog lcd_e ' tog lcd_e ' ab jetzt 4-Bit-Modus ' lcd_param = &H28 : gosub LCD_WRITECMD ' lcd_param = &H0C : gosub LCD_WRITECMD ' Display loeschen '#LCD_CLS ' lcd_param = &H02 : gosub LCD_WRITECMD ' lcd_param = &H01 : gosub LCD_WRITECMD 'return ' Zeilenwechsel '#LCD_GOTOLINE ' if lcd_param = 1 then lcd_param = &H80 ' if lcd_param = 2 then lcd_param = &HC0 ' goto LCD_WRITECMD ' LCD-Kommando '#LCD_WRITECMD ' lcd_buf = OFF ' goto LCD_WRITE ' Zeichenausgabe '#LCD_WRITECHAR ' lcd_buf = &B00100000 ' Kommando oder Zeichen an Display senden '#LCD_WRITE ' lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble ' tog lcd_e ' tog lcd_e ' lcd_port = lcd_buf or (lcd_param and &H0F) ' Lo-Nibble ' tog lcd_e ' tog lcd_e 'return 'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII #GET_IRDATA SUBCMD=1:sys COMNAV:return #SEND_IRDATA SUBCMD=0:sys COMNAV:return #GET_TLM SUBCMD=1:sys COMNAV:LBYTE= LBYTE or (HBYTE shl 6) HBYTE= HBYTE shr 2:return #RC5 SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC HBYTE=00:SUBCMD=2:sys COMNAV:return #RC5_INT SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2 HBYTE=00:SUBCMD=2:sys COMNAV:return #REC80 SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and &HFD HBYTE=00:SUBCMD=2:sys COMNAV:return #REC80_INT SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03) HBYTE=00:SUBCMD=2:sys COMNAV:return #ADDRESSED_MODE_ON SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H10) HBYTE=00:SUBCMD=2:sys COMNAV:return #ADDRESSED_MODE_OFF SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HEF) HBYTE=00:SUBCMD=2:sys COMNAV:return #SET_ADDRESS SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H10) HBYTE=00:SUBCMD=2:sys COMNAV LBYTE=DEVICEADDRESS:SUBCMD=5:sys COMNAV:return #GET_ADDRESSED_DATA SUBCMD=1:sys COMNAV:HBYTE=HBYTE and &H7:return #SEND_ADDRESSED_DATA HBYTE=(HBYTE shl 3)or DEVICEADDRESS:SUBCMD=0:sys COMNAV:return #WAIT_PING SUBCMD=8:sys COMNAV:return 'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII #NO_ACS_INT SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB HBYTE=00:SUBCMD=2:sys COMNAV:return #ACS_INT_200 SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04 HBYTE=50:SUBCMD=2:sys COMNAV:return #SUBSYS_PWR_ON sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8 sys SYSTEM:return #SUBSYS_PWR_OFF EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM deact sdio:deact sclio:return #CLR_DISTANCE SUBCMD=3:sys COMNAV:return #L_DISTANCE SUBCMD=6:sys COMNAV:return #R_DISTANCE SUBCMD=7:sys COMNAV:return '---------COM/NAV GERÄTEREIBER ------------- syscode "p5driv12.s19"
Danke!
Gruß
Torrentula
MfG Torrentula
Ist das 2*16 character LC-Display auch kaputt wenn ich den Kontrast einstellen kann? Ich hab hier im Forum nämlich gelesen (glaub das war sogar ein Beitrag von dir Dirk), dass wenn man das LCD einmal falsch auf die BE steckt, es kapputt ist. Die Frage rührt daher, dass ich mir nicht sicher bin, ob ich's falsch draufgesteckt habe und das Beispoelprogramm irgendwie nicht läuft.
Kann sein. Leider.Ist das 2*16 character LC-Display auch kaputt wenn ich den Kontrast einstellen kann?
Hast du es auch am Stecker LCD1 sitzen?
Gruß Dirk
Es sitzt an stecker 1 also links. Ich glaub im programm steht "...evtl. empfangene Daten werden am Display angezeigt."
Dieses Programm
sollte bereits "AB" auf das LC-Display am Stecker LCD1 schreiben.Code:'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'IIIIIIIIII ROBBY RP5 - Leerprogramm 2 IIIIIIIIIIII 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'PROGRAMM-RUMPF ZUM START EIGENER ENTWICKLUNGEN ' Programm-Name: LEERPROGRAMM_BE1.bas ' Hardware: Robby RP5 MIT Erweiterungsplatine, aber OHNE CC2 ' (und ggf. mit LC-Display an LCD1) ' Treiber: P5DRIV12.S19 '---------------------------------------------------------------------- '------ Konstanten -------- define V_OFFSET 0 '= CHRG_CURRENT - SYS_VOLTS (Abgleichwert) define V_ADJUST 2 'Eichwert Spannungen (Bauteile-abhängig!) 'Hier weitere Konstanten-Definitionen! '-------------------------- '------ I/O PORTS --------- '-------------------------- '- INTERFACE LCD/EXTPORT -- define sdio port[1] define sclio port[3] define strobe port[4] define LSTROBE port[7] '-- INTERFACE COM/NAV ----- define DATALINE port[1] define CLOCKLINE port[2] '-- CC2 INTERFACE ------- define CC2POWER port[8] '------ LCD INTERFACE ------ define Daten byteport[1] define lcd_port byteport[2] 'Frei, wenn kein LCD angeschlossen ist! define lcd_RS port[14] define lcd_RW port[13] define lcd_E port[15] '-------------------------- '------ SENSORS --------- '-------------------------- define FREIAD8 ad[8] 'Freier A/D-Wandler define LIGHT_L ad[7] define LIGHT_R ad[6] define SYS_VOLTS ad[3] define CHRG_CURRENT ad[2] define SYS_CURRENT ad[1] define MIC ad[4] define TOUCH ad[5] '--------------------------- '------ DRIVE ------------- '--------------------------- define SPEED_L da[1] define SPEED_R da[2] define REV_L port[6] define REV_R port[5] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- '--- INTERFACE BUFFER ---- define LBYTE byte[1] define HBYTE byte[2] define SUBCMD byte[3] '---- OPERATION DATA ------ define EXTPORT byte[4] define LED1_F bit[29] define LED2_F bit[30] define LED3_F bit[31] define LED4_F bit[32] define SYSTEM_STATUS byte[5] define ACSL_F bit[33] define ACSR_F bit[34] define IR_F bit[35] define LEDPORT byte[6] define L1_F bit[41] define L2_F bit[42] define L3_F bit[43] define L4_F bit[44] define L5_F bit[45] define L6_F bit[46] define L7_F bit[47] define L8_F bit[48] '---- LCD DRIVER ------------- define lcd_buf byte[7] 'Bytes 7 und 8 frei, wenn LCD nicht genutzt wird! define lcd_param byte[8] '-------------------------- '---- USER MEMORY ------- '-------------------------- define DEVICEADDRESS byte[9] define zeichen byte[10] 'User Memory ab BYTE[10] frei! '--- SYSTEMROUTINEN ----------- define PLM_SLOW &H01C2 define SYSTEM &H01C7 define LED_DRIVE &H01CA define COMNAV &H0144 '- ERWEITERTE SYSTEM ROUTINEN - define REVR &H0101 'ANTRIEB RECHTS RÜCKWÄRTS define REVL &H0106 'ANTRIEB LINKS RÜCKWÄRTS define FWDR &H010B 'ANTRIEG RECHTS VORWÄRTS define FWDL &H0110 'ANTRIEB LINKS VORWÄRTS define ROTR &H0115 'RECHTS DREHEN define ROTL &H0119 'LINKS DREHEN define REV &H011D 'RÜCKWÄRTS define FWD &H0121 'VORWÄRTS define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER define ACS_LO &H01E0 'ACS POWER LO define ACS_HI &H01E8 ' define ACS_MAX &H01F0 ' define SEND_TLM &H013A 'SENDET TELEMETRIE (CH=HBYTE, DATEN=LBYTE) define SEND_SYSSTAT &H0134 'SENDET TLM KANAL 0, SYSTEM STATUS '(FLAGS für ACS, FWD/REV, ACS_LO/HI/MAX) '---------- INIT--------------- ' Basiserweiterung initialisieren: LSTROBE=off:CC2POWER=on ' Subsysteme einschalten: gosub SUBSYS_PWR_ON ' LC-Display initialisieren: gosub LCD_INIT '---------------------------------------------- beep 368,10,0:pause 50 '------------ ANTRIEB ------------------------- REV_L=on:REV_R=on:sys PLM_SLOW '---------------------------------------------------------------------- ' Hier ggf. weitere Initialisierungs-Befehle!!! '---------------------------------------------------------------------- ' PROGRAMM: lcd_E = 0 lcd_RW = 0 lcd_RS = 0 : Daten = &H0E : pulse lcd_E lcd_RS = 0 : Daten = &H01 : pulse lcd_E lcd_RS = 1 : Daten = 65 : pulse lcd_E lcd_RS = 1 : Daten = 66 : pulse lcd_E '---------------------------------------------------------------------- ' UNTERPROGRAMME: '---------------------------------------------- '--------- ACS INTERRUPT SERVICE -------------- '---------------------------------------------- '#ACS_INTERRUPT 'Beispiel für eine Interruptroutine! 'sys COMNAV_STATUS 'if ACSL_F=on then gosub LED4ON else gosub LED4OFF 'if ACSR_F=on then gosub LED1ON else gosub LED1OFF 'pause 5:gosub LED1OFF:gosub LED4OFF:return interrupt '--------------------------------------------- ' ODER ... (ACHTUNG: Nur EINE Interrupt-Routine ist möglich!!!) '--------------------------------------------- '-------- IR-COMM INTERRUPT SERVICE ---------- '--------------------------------------------- '#IRCOMM_INTERRUPT 'Beispiel für eine Interruptroutine! 'sys COMNAV_STATUS 'gosub GET_IRDATA 'gosub LED1ON:pause 5:gosub LED1OFF:return interrupt '--------------------------------------------- 'IIIIIIII Binärausgabe mit 8 LEDs der Basiserweiterung IIIIIIII ' Der Robby mit Basiserweiterung kann OHNE LC-Display keine Werte ' (z.B. seiner Sensoren) anzeigen. Diese Routine gibt VALUE mit ' den 8 LEDs der Basiserweiterung in Binärform (8 Bit) aus. ' Die Variable VALUE muss als BYTE definiert sein! '#LBINOUT 'gosub LOFF: gosub L1FLASH: gosub L1FLASH 'gosub L1FLASH: gosub L1FLASH: gosub L1FLASH 'if (VALUE and &B1) <> 0 then gosub L1ON 'if (VALUE and &B10) <> 0 then gosub L2ON 'if (VALUE and &B100) <> 0 then gosub L3ON 'if (VALUE and &B1000) <> 0 then gosub L4ON 'if (VALUE and &B10000) <> 0 then gosub L5ON 'if (VALUE and &B100000) <> 0 then gosub L6ON 'if (VALUE and &B1000000) <> 0 then gosub L7ON 'if (VALUE and &B10000000) <> 0 then gosub L8ON 'pause 200: return '#L1FLASH 'gosub L1ON: pause 5: gosub L1OFF: pause 5: return 'Binär-Dezimal-Tabelle (4-Bit): ' WERT: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ' L1-> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ' L2-> 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 ' L3-> 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ' L4-> 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ' ' Der Dezimal-WERT kann in der 1. Zeile abgelesen werden, wenn man ' die zutreffende LED-Kombination aussucht (1 -> an, 0 -> aus). ' Für jede leuchtende LED 5 bis 8 muss noch folgender Wert addiert ' werden: L5-> + 16 ' L6-> + 32 ' L7-> + 64 ' L8-> +128 ' Damit erhält man dann den ganzen 8-Bit-Dezimalwert (0..255). '---------------------------------------------------------------------- 'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII #LED1ON LED1_F=on:goto EXTPORT_WRITE #LED1OFF LED1_F=off :goto EXTPORT_WRITE #LED2ON LED2_F=on:goto EXTPORT_WRITE #LED2OFF LED2_F=off:goto EXTPORT_WRITE #LED3ON LED3_F=on:goto EXTPORT_WRITE #LED3OFF LED3_F=off:goto EXTPORT_WRITE #LED4ON LED4_F=on:goto EXTPORT_WRITE #LED4OFF LED4_F=off:goto EXTPORT_WRITE #LEDSOFF EXTPORT=EXTPORT and &H0F:goto EXTPORT_WRITE #LEDSON EXTPORT=EXTPORT or &HF0 #EXTPORT_WRITE sys SYSTEM:pulse STROBE:return '--- LEDS AUF DER BASIS ERWEITERUNG ------ #L1ON L1_F=on:goto LEDPORT_WRITE #L1OFF L1_F=off :goto LEDPORT_WRITE #L2ON L2_F=on:goto LEDPORT_WRITE #L2OFF L2_F=off :goto LEDPORT_WRITE #L3ON L3_F=on:goto LEDPORT_WRITE #L3OFF L3_F=off :goto LEDPORT_WRITE #L4ON L4_F=on:goto LEDPORT_WRITE #L4OFF L4_F=off :goto LEDPORT_WRITE #L5ON L5_F=on:goto LEDPORT_WRITE #L5OFF L5_F=off :goto LEDPORT_WRITE #L6ON L6_F=on:goto LEDPORT_WRITE #L6OFF L6_F=off :goto LEDPORT_WRITE #L7ON L7_F=on:goto LEDPORT_WRITE #L7OFF L7_F=off :goto LEDPORT_WRITE #L8ON L8_F=on:goto LEDPORT_WRITE #L8OFF L8_F=off :goto LEDPORT_WRITE #LOFF LEDPORT=0 :goto LEDPORT_WRITE #LON LEDPORT=&HFF #LEDPORT_WRITE sys LED_DRIVE:pulse LSTROBE:return '---------------------------------------- '------------- LCD ROUTINES ------------- '---------------------------------------- #LCD_INIT 'alle ports 0 lcd_port = OFF ' 8-Bit-Modus aktivieren lcd_param=&H38 : gosub LCD_WRITECMD ' mit 8-Bit-Command in 4-Bit-Modus umschalten lcd_port=&B00000010 tog lcd_e tog lcd_e ' ab jetzt 4-Bit-Modus lcd_param = &H28 : gosub LCD_WRITECMD lcd_param = &H0C : gosub LCD_WRITECMD ' Display loeschen #LCD_CLS lcd_param = &H02 : gosub LCD_WRITECMD lcd_param = &H01 : gosub LCD_WRITECMD return ' Zeilenwechsel #LCD_GOTOLINE if lcd_param = 1 then lcd_param = &H80 if lcd_param = 2 then lcd_param = &HC0 goto LCD_WRITECMD ' LCD-Kommando #LCD_WRITECMD lcd_buf = OFF goto LCD_WRITE ' Zeichenausgabe #LCD_WRITECHAR lcd_buf = &B00100000 ' Kommando oder Zeichen an Display senden #LCD_WRITE lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble tog lcd_e tog lcd_e lcd_port = lcd_buf or (lcd_param and &H0F) ' Lo-Nibble tog lcd_e tog lcd_e return 'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII #GET_IRDATA SUBCMD=1:sys COMNAV:return #SEND_IRDATA SUBCMD=0:sys COMNAV:return #GET_TLM SUBCMD=1:sys COMNAV:LBYTE= LBYTE or (HBYTE shl 6) HBYTE= HBYTE shr 2:return #RC5 SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC HBYTE=00:SUBCMD=2:sys COMNAV:return #RC5_INT SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2 HBYTE=00:SUBCMD=2:sys COMNAV:return #REC80 SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and &HFD HBYTE=00:SUBCMD=2:sys COMNAV:return #REC80_INT SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03) HBYTE=00:SUBCMD=2:sys COMNAV:return #ADDRESSED_MODE_ON SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H10) HBYTE=00:SUBCMD=2:sys COMNAV:return #ADDRESSED_MODE_OFF SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HEF) HBYTE=00:SUBCMD=2:sys COMNAV:return #SET_ADDRESS SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H10) HBYTE=00:SUBCMD=2:sys COMNAV LBYTE=DEVICEADDRESS:SUBCMD=5:sys COMNAV:return #GET_ADDRESSED_DATA SUBCMD=1:sys COMNAV:HBYTE=HBYTE and &H7:return #SEND_ADDRESSED_DATA HBYTE=(HBYTE shl 3)or DEVICEADDRESS:SUBCMD=0:sys COMNAV:return #WAIT_PING SUBCMD=8:sys COMNAV:return 'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII #NO_ACS_INT SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB HBYTE=00:SUBCMD=2:sys COMNAV:return #ACS_INT_200 SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04 HBYTE=50:SUBCMD=2:sys COMNAV:return #SUBSYS_PWR_ON sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8 sys SYSTEM:return #SUBSYS_PWR_OFF EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM deact sdio:deact sclio:return #CLR_DISTANCE SUBCMD=3:sys COMNAV:return #L_DISTANCE SUBCMD=6:sys COMNAV:return #R_DISTANCE SUBCMD=7:sys COMNAV:return '---------COM/NAV GERÄTEREIBER ------------- syscode "p5driv12.s19"
Dieses tut es aber nicht.
Stattdessen leuchtet die gelbe Kontrollleuchte an der Basiserweiterung, auf der BE werden LED 1 und 5 eingeschaltet gleichzeitig erlischt die Kontrollleuchte wieder, die grüne LED für den Co-Prozessor (IR;COM/NAV) blinkt kurz auf und die LEDs leuchten immernoch. Zusätzlich leuchten auf Robby noch die LEDs 1 und 4.
Kann mir jemand helfen?
P.S.: Das Huptprogramm also
stammt aus dem PDF "LC-Display_am_Robby" von user jonas. "lcd_" habe ich selbst davorgesetzt, weil es ja so definiert ist.Code:lcd_E = 0 lcd_RW = 0 lcd_RS = 0 : Daten = &H0E : pulse lcd_E lcd_RS = 0 : Daten = &H01 : pulse lcd_E lcd_RS = 1 : Daten = 65 : pulse lcd_E lcd_RS = 1 : Daten = 66 : pulse lcd_E
MfG Torrentula
schuldigung ich meine rechtsZitat von Torrentula
MfG Torrentula
Das klappt auch so nicht.Dieses Programm ... sollte bereits "AB" auf das LC-Display am Stecker LCD1 schreiben. Dieses tut es aber nicht.
Dieses Hauptprogramm schreibt "AB" in Zeile 1 des LCD:
Gruß DirkCode:gosub LCD_CLS 'LCD löschen lcd_param = 1 : gosub lcd_gotoline 'Zeile 1 wählen lcd_param = &H41 : gosub lcd_writechar 'A lcd_param = &H42 : gosub lcd_writechar 'B end
Ah.. Ok danke dann versuch ichs damit und lass das PDF ruhen.
Gruß
Torrentula
P.S.: gibts hier irgendwo ne ASC2 Tabelle?
Das LCD wird doch mit dem roten Kabel richtung LEDs angeschlossen?
Wenn ja dann ist mein LCD im A****
MfG Torrentula
Lesezeichen