🇩🇪
Zitat von: pic18 in 25.10.2023, 22:25:30 CESTIch habe den Fehler jetzt gefunden, nach dem ich die ganze Schaltung zerlegt hatte und die Pegel mit dem Oszi gemessen habe. Die Spannung am Datenbus wurde tatsächlich herunter gezogen. Es lag an die fehlende 5V Verbindung zwischen VCIO und VCC.Da hatten wir ohne Schaltplan wohl kaum eine Chance, mal "drauf zu blicken".
/*********************** LCD *************************/
//_ff !USB_RD RE0, USB_WR RE1 hinzugefügt, da sonst Datenbusfehler wenn USB abgeschaltet
#define initLCDPort() LATCbits.LATC0 = 1; \\
LATCbits.LATC1 = 1; \\
LATCbits.LATC2 = 0; \\
LATAbits.LATA2 = 0; \\
TRISCbits.RC0 = OUT; \\
TRISCbits.RC1 = OUT; \\
TRISCbits.RC2 = OUT; \\
TRISAbits.RA2 = OUT; \\
LATEbits.LATE0 = 1; \\
LATEbits.LATE1 = 0; \\
TRISEbits.RE0 = OUT; \\
TRISEbits.RE1 = OUT;
#define dataPortRead() TRISD = 0xff; Nop();
#define dataPortWrite() TRISD = 0x00; Nop();
#define LCD_RS_PIN LATCbits.LATC0 // 0-Instruction, 1- Data
#define LCD_RW_PIN LATCbits.LATC1 // 0-Write, 1-READ
#define LCD0_E LATCbits.LATC2
#define LCD1_E LATAbits.LATA2
#define LCD_DATA_LATCH LATD // auch USB
#define LCD_DATA_PORT PORTD // auch USB
/*********************** USB *************************/
//
// PWREN, RXF, TXE sind INPUT
//
#if defined(BOARD_V1) | defined(BOARD_V2)
#define initUSBPort() TRISAbits.RA4 = IN; \\
TRISBbits.RB6 = IN; \\
TRISBbits.RB7 = IN; \\
TRISEbits.RE0 = OUT; \\
TRISEbits.RE1 = OUT;
#define USB_PWREN PORTAbits.RA4 // IN
#define USB_RXF PORTBbits.RB6 // IN
#define USB_TXE PORTBbits.RB7 // IN
#endif
//
// WR = 0, RD = 1 ist inaktiv
//
#define USB_RD LATEbits.LATE0 // OUT
#define USB_WR LATEbits.LATE1 // OUT
#define initUSBData() USB_RD = 1; USB_WR = 0;
#define USB_DATA_LATCH LATD // auch LCD
#define USB_DATA_PORT PORTD // auch LCDh
void LCDE_1(uint8_t LCDx)
{
LATEbits.LATE0 = 1; //USB auf !RD
TRISEbits.RE0 =0;
switch(LCDx)
{
case 0:
LCD0_E =1;
break;
case 1:
LCD1_E =1;
break;
}
wait_1us( 5 );
}
// Enable=0
void LCDE_0(uint8_t LCDx)
{
switch(LCDx)
{
case 0:
LCD0_E =0;
break;
case 1:
LCD1_E =0;
break;
}
wait_1us( 25 );