(wieder mal) AT90CAN128 und USART

Gast #1748766
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):

----------------------------------------------------------
1
...
2
int main( void )
3
    {
4
    volatile unsigned long ul; /* volatile so it is not optimized away. */
5
        prvIncrementResetCount();
6

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

10
        /* Initialise the serial port */
11
        xComPortHandle OutputPort = xSerialPortInit( serCOM1, ser9600, serNO_PARITY, serBITS_8, serSTOP_1, 255 );
12
                
13
        for( ;; )
14
        {
15
            
16
            /* wait a second... */
17
            for( ul = 0; ul < 0xffff; ul++ )
18
            {
19
            }
20

21
            /* just to see that something works */
22
            vParTestToggleLED( 0 );
23
            vParTestToggleLED( 1 );
24

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

31
        }
32
        return 0;
33
    }
----------------------------------------------------------

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
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.