www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik (wieder mal) AT90CAN128 und USART


Autor: Max K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

im Zuge des FreeRTOS-Projekts, das ich hier -> 
Beitrag "Mutexes und Semaphores in FreeRTOS" mehr oder weniger 
beschrieben habe, muss ich jetzt die Ausgabe von Log-Daten über den 
seriellen Port vom GTK600-Board (mit einem AT90CAN128 drauf) 
organisieren. Der entsprechende USART-Treiber fand sich bei 
mitschang.net, ich hänge den Source und den Header als Datei an. Und 
dann habe ich, um es erst mal zu testen, eine ganz einfache main.c 
zusammengewurschtelt (meinstens ebenfalls aus den anderen FreeRTOS-Demos 
zusammenkopiert und entsprechend angepasst):

----------------------------------------------------------
...
int main( void )
    {
    volatile unsigned long ul; /* volatile so it is not optimized away. */
        prvIncrementResetCount();

        /* Initialise the LED outputs - note that prvSetupHardware() might also have to be called! */
        vParTestInitialise();

        /* Initialise the serial port */
        xComPortHandle OutputPort = xSerialPortInit( serCOM1, ser9600, serNO_PARITY, serBITS_8, serSTOP_1, 255 );
                
        for( ;; )
        {
            
            /* wait a second... */
            for( ul = 0; ul < 0xffff; ul++ )
            {
            }

            /* just to see that something works */
            vParTestToggleLED( 0 );
            vParTestToggleLED( 1 );

            /* send a "2" out to UART0 */
            if ( xSerialPutChar(OutputPort, (signed portCHAR)'2', (portTickType)0) == pdPASS )
            {
                vParTestToggleLED( 4 );
            }

        }
        return 0;
    }
----------------------------------------------------------

Das Projekt wird ohne Fehler und Warnungen kompiliert, und die LEDs 0, 1 
und 4 (Indiz dafür dass die Ausgabe des Zeichens "2" an USART ein pdPASS 
zurückgab) gehen ordnungsgemäß an und aus - jedoch sehe ich niemals 
etwas in PUTTY ankommen.

Die Initialisierung von UART klappt; das sieht man im AVR-Studio an den 
entsprechenden Registerwerten (ist zwar nicht ganz klar, ob die Werte 
tatsächlich vom Programm in die Register reingeschrieben werden oder ob 
sie schon per default so sind, wenn man das Board einschaltet). Wie auch 
immer - das Lesen und Senden von Daten über UART klappt problemlos, das 
ließ sich mit einem kleinen (nicht von mir geschriebenenen ;) ) 
AVR-Assembler-Projekt erfolgreich testen. Und auch wenn ich die "if ( 
xSerialPutChar... "-Abfrage auskommentiere und dafür ganz stupide "UDR0 
= 0xdd" an diese Stelle schreibe (also ein Zeichen direkt in den 
Senderegister vom Controller stopfe), wird im PUTTY im Sekundentakt ein 
neues komisches Zeichen geschrieben, so wie es sich gehört. Was mache 
ich also falsch (oder was ist evtl. am seriellen Treiber falsch)?

Danke und Gruß,

Max

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.