mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADUC7026 UART und FT232R


Autor: Heiner Dirks (Firma: FH Köln) (aduchenk)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.