Forum: Mikrocontroller und Digitale Elektronik RS232 gibt kein Signal aus


von Mathias (Gast)


Angehängte Dateien:

Lesenswert?

Schönen guten Abend erstmal.
Ich habe folgendes Problem.
Ich habe einen Mikrocontroller(Atmega32) mit disem möchte ich eine RS232 
Verbindung mit meinem PC aufbauen.
Eigentlich möchte ich nur ein Zeichen erstmal senden.
Ich habe ein kleines Programm dafür auf Bascom geschreiben, um zu Testen 
ob Hartwaremässig alles stimmt. Dort ging es wunderbar. Jetzt schreibe 
ich das Ganze in C (weil Bascom auch nicht gerade das Ware ist und ich C 
lernen will).
Als Compiler benutze ich Code:Blocks.

Ich brauche mehr Details:
Frequenz: 16Mhz
Baude:    9600

Include Datein:
#include <avr/io.h>

Code(Ini):
    //Baudrate von 9600
    UBRRH = 100;

    //Schaltet RS232 ein
    UCSRB |= (1 << TXEN);

    //Asynchron 8N1
    UCSRC = (1 << URSEL)|(1 << UCSZ1)|(1 << UCSZ0);



Code(main und senden):

    int main(void)
    {
       Ini();
       Led_Weiss_Pwm(1023);

    while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden Senden möglich 
*/
    {

    }
    UDR = 'x';

    while(1)
    {

    }

    return 0;
}

Habe den ganzen Quellcode auch noch angehangen.

Vielen dank für eure Hilfe.
Mathias

von Spess53 (Gast)


Lesenswert?

Hi

>    UBRRH = 100;

Wie bist du denn darauf gekommen?

Bei 16MHz und 9600Bd ergibt sich ein Wert von 103 für UBRR .

MfG Spess

von Mathias (Gast)


Lesenswert?

Ich habe UBRRH auf 103 geändert es tut sich leider trotzdem nichts.

MfG
Mathias

von rggre (Gast)


Lesenswert?

Mathias schrieb:
> UBRRH
vs
> UBRR

Guck genau hin!

von Spess53 (Gast)


Lesenswert?

Hi

>Ich habe UBRRH auf 103 geändert es tut sich leider trotzdem nichts.

Ich habe UBRR nicht UBRRH geschrieben.

MfG Spess

von Mathias (Gast)


Lesenswert?

Bei UBRR bekomme ich ein Error.

error: 'UBRR' undeclared (first use in this function)

Deshalb habe ich UBRRH genommen. Da kommt dieser Fehler nicht.

Wie unfreundlich von mir. Ich habe mich noch garnicht bedankt für deine 
Hilfe. Vielen dank.

MfG
Mathias

von holger (Gast)


Lesenswert?

>Bei UBRR bekomme ich ein Error.

Dann nimm halt UBRRL.

von Mathias (Gast)


Lesenswert?

Danke genau in disem Moment habe ich den Felher auch gefunden.
Habe es jetz so geändert:

UBBRH = 0;
UBBRL = 103;

Jetzt funktioniert es.

Danke für eure Hilfe.

MfG
Mathias

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.