Forum: Mikrocontroller und Digitale Elektronik ADUC7026 UART und FT232R


von Heiner D. (Firma: FH Köln) (aduchenk)


Lesenswert?

Hallo
Ich bin neu hier im Forum und hoffe das einer von euch mir helfen kann.
Ich habe ein kleines Board mit einem aduc7026 prozessor und einem FT232R 
Baustein um die uart schnittstelle auf usb zu konvertieren. Nun versuche 
ich
Kommunikation zwischen meinem PC und meinem Controller herzustellen. 
Leider nur mit begrenzem erfolg. Sowohl in die eine wie auch in die 
andere Richtung bekomme ich Daten(auch immer die selben) 
bedauerlicherweise aber nicht die die ich bekommen sollte. Ich habe mal 
das PC und das Controller Programm zumindest die wichtigen teile dran 
gepackt.

PC: Programm

ftStatus = FT_CreateDeviceInfoList(&iNumDevs);
  FT_Open(0, &ftHandle);

  // Einsteller der Baud Rate auf 9600
  ftStatus = FT_SetBaudRate(ftHandle, 9600);
        //Einstellung der Schnittstelle
  ftStatus = FT_SetDataCharacteristics(ftHandle, FT_BITS_8, 
FT_STOP_BITS_1,FT_PARITY_NONE);

    FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWord);
    if (RxBytes > 0) {
      ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived);
      printf("%d",RxBuffer[0]);


    TxBuffer[0]=i;
    TxBuffer[1]=i+1;
    TxBuffer[2]=i+2;
    TxBuffer[3]=i+3;
    TxBuffer[4]=i+4;
    i++;

    ftStatus = FT_Write(ftHandle, TxBuffer,4/* sizeof(TxBuffer)*/, 
&BytesWritten);

Controller:

    int udiv0;
    GP1CON = 0x11;

    switch (POWCON & 0x03) {
        case 0: udiv0 = 0x88; break;  // HCLK = 41.78MHz; UART 9600 kbps
        case 1: udiv0 = 0x44; break;  // HCLK = 20.89MHz; UART 9600 kbps
        case 2: udiv0 = 0x22; break;  // HCLK = 10.45MHz; UART 9600 kbps
        case 3: udiv0 = 0x11; break;  // HCLK =  5.22MHz; UART 9600 kbps
        default:udiv0 = 0x88; break;  // HCLK = 41.78MHz; UART 9600 kbps
    }

    COMCON0 = 0x80;
    COMDIV0 = udiv0;
    COMDIV1 = 0x0;
    COMCON0 = 0x03;
    COMDIV2 = 0x0;

    GP1CON = 0x00000011;
    GP1DAT = 0xFF000000;

    if(0x01==(COMSTA0 & 0x01))
    {
    //  for(i=0;i<3;i++)
    //  {
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[0]=COMRX;
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[1]=COMRX;
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[2]=COMRX;
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[3]=COMRX;
    //  }

Ich bin noch ziemlich unerfahren was Mikrocrontroller an geht und hoffe 
das jemand von euch mir helfen kann. Vieleicht gibt es ja auch gute 
Programmbeispiele die ich bislang nicht gefunden habe. Ich bin für jeden 
Rat dankbar :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.