Problem Ungelöst schrieb:
> Baudrate ist identisch
Das heißt noch lange nicht, dass die Übertragungsrate korrekt ist. Denn
die hängt auch von der Taktrate des AVR ab.
Daher wird auch generell gerne der Tipp gegeben.
Bevor du dich an die Übertragung vom PC zum AVR machst, mach erst mal
die Gegenrichtung: vom AVR zum PC, wobei auf dem PC ein Terminalprogramm
läuft.
Denn das hat den Vorteil, dass du im Terminalprogramm siehst, was
eigentlich ankommt, wenn der AVR zb eine ASCII-1 wegschickt. Und das ist
wiederrum besser, als die umgekehrte Richtung, in der du nur indirekt
erschliessen kannst, was am AVR ankommt wenn der PC was wegschickt.
Dein erstes Testprogramm sollte also zb lauten ...
1 | int main(void)
|
2 | {
|
3 | uart_init();
|
4 |
|
5 | while (1) {
|
6 | uart_putc( 'x' );
|
7 | }
|
8 | return 0;
|
9 | }
|
... und solange in deinem Terminalprogramm da nicht lauter 'x'
auftauchen, brauchst du die Gegenrichtung erst gar nicht versuchen.
Erst dann, wenn das klappt, kannst du soweit sicher sein, dass zumindest
die technische Komponente der UART Übertragung korrekt abläuft.
Wenn das dann klappt, dann ist dein nächster Milestone, dass du im AVR
dir einen Empfangscode machst, und dem händisch vom Terminal aus
"ansteuerst". Wenn dieses dann klappt, dann machst du das ganze von VB
aus.
Grundprinzip ist es immer: habe so wenig unbekannte Teilsysteme im
System wie möglich.
Du stehst im Moment mit einem VB Programm da, von dem du nicht weißt ob
es korrekt ist; mit einem AVR Programm da, von dem du nicht weißt ob es
korrekt ist; mit einer UART Übertragung, von der du nicht weißt ob sie
korrekt ist.
Das sind zu viele 'ich weiß nicht, ob das korrekt ist'. Also heißt es
Teilsysteme eliminieren und erst mal durch 'Von dem und dem Teilsystem
weiß ich mit Sicherheit dass es korrekt ist' ersetzen.