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


von Max K. (Gast)


Angehängte Dateien:

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

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.