Hallo Leute,
Ich sitze hier vor einem Problem. Ich habe ein Board abgeändert und
verwende nun statt einem MAX232 einen MCP2200.
folgender Aufbau:
uC ist ein ATMEL 90PWM3B
Verbunden ist der MCP2200 mit dem 90PWM3B wie folget: RX an TXD und TX
an RXD
Das hier ist mein C-Programm teil, welcher mit dem MAX232 auf einem
anderen Board funktioniert. Mit meinem MCP2200 bekomme ich zwar Daten
über die USB Leitung auf den PC, jedoch sind dies nur 0 und 80, egal was
der 90PWM3B an den MCP sendet.
1 | void Seriel_init(void)
|
2 | {
|
3 | UBRRL = 51; // 9600baud
|
4 | UCSRC |= (1<<UCSZ1) | (1<<UCSZ0); // 8N1
|
5 | UCSRB |= (1<<RXEN) | (1<<TXEN); // UART starten
|
6 | }
|
7 | |
8 | void put_char(char a)
|
9 | {
|
10 | while(!(UCSRA & (1<<UDRE)))
|
11 | {
|
12 | NOP();
|
13 | }
|
14 | UDR = a;
|
15 | |
16 | return;
|
17 | }
|
18 | |
19 | void serial_print(char* a)
|
20 | {
|
21 | while(*a)
|
22 | {
|
23 | put_char(*a);
|
24 | a++;
|
25 | }
|
26 | return;
|
27 | }
|
Im C-Programm wurde UBRRL auf 51 gesetzt, was bei 1MHz 9600Baud bedeuten
sollte. Der MCP2200 wurde über USB ebenfalls auf 9600Baud eingestellt.
In der Systemsteuerung wurde die Baudrate ebenfalls auf 9600 gesetzt.
Und H-Term steht auch auf 9600Baud. Alles natürlich mit 8n1.
Ich bin nun leider echt am Ende meiner Ideen und weis nicht wo ich da
noch suchen soll nach meinem Fehler.
Oder ist meine Ansteuerung grundsätzlich komplett falsch und beim MCP
funktioniert das anders, das kann ich mir aber nicht vorstellen.
MFG Stephan