Forum: Mikrocontroller und Digitale Elektronik RS232 dezimal immer +9?


von Sam .. (sam1994)


Angehängte Dateien:

Lesenswert?

Hi

Als ich heute meine SoftR232-SERIAL2USB-PC testete kam folgendes heraus:
1
001 002 003 012 013 014 015 016 017 018 019 028 029 030 031 032 033 034 
2
035 044 045 046 047 048 049 050 051 060 061 062 063 064 065 066 067 076 
3
077 078 079 080 081 082 083 092 093 094 095 096 097 098 099 108 109 110 
4
111 112 113 114 115 124 125 126 127 128 129 130 131 140 141 142 143 144 
5
145 146 147 156 157 158 159 160 161 162 163 172 173 174 175 176 177 178 
6
179 188 189 190 191 192 193 194 195 204 205 206 207 208 209 210 211 220 
7
221 222 223 224 225 226 227 236 237 238 239 240 241 242 243 252 253 254 
8
255 000 001 002 003 012 013 014 015 016 017 018 019 028 029 030 031 032 
9
033 034 035 044 045 046 047 048 049 050 051 060 061 062 063 064 065 066 
10
067 076 077 078 079 080 081 082 083 092 093 094 095 096 097 098 099 108 
11
109 110 111 112 113 114 115 124 125 126 127 128 129 130 131 140 141 142 
12
143 144 145 146 147 156 157 158 159 160 161 162 163 172 173 174 175 176 
13
177 178

bei folgendem Code:
1
    uint8_t i = 0;
2
    uart_init();
3
    DDRA |= (1 << 1);
4
    sei();
5
    while(1)
6
    {
7
        uart_putc(i++);
8
        _delay_ms(500);
9
        PORTA ^= (1 << 1);
10
    }

Softuart hab ich von hier: 
http://www.rn-wissen.de/index.php/Software-UART_mit_avr-gcc

Der SERIAL2USB Wandler ist dieser 
http://www.recursion.jp/avrcdc/cdc-232.html#usage

Den Tiny84 über MAx232 an den PC und es klappt wunderbar.

Weiß jemand was da nicht stimmen könnte?

von Spess53 (Gast)


Lesenswert?

Hi

Sieht nach falscher Baudrate aus.

MfG Spess

von Michael (Gast)


Lesenswert?

Beim Überfliegen in den Kommentaren entdeckt:
Hast du bedacht, dass die UART-Geschichte für Atmega8 geschrieben wurde 
und für andere Derivate eventuell angepasst werden muss?

von Sam .. (sam1994)


Lesenswert?

Mist warum bricht jetzt gerade das Kabel zum akku ab!

Michael schrieb:
> Beim Überfliegen in den Kommentaren entdeckt:
> Hast du bedacht, dass die UART-Geschichte für Atmega8 geschrieben wurde
> und für andere Derivate eventuell angepasst werden muss?

Die Register hab ich alle geändert. Direkt über Max232 funzt es ja.

Vielleicht war ich wirklich zu dumm die Baudrate einzustellen. Bei dem 
CDC232 muss man ja doppelt und dreifach die baudrate definieren. Mal 
schauen.

Habs nochmal probiert: 1200Baud 8Data 1Stop NoParity
und... Trommelwirbel ...dasselbe wie vorher.

Ich werds nochmal mit 9600Baud probieren.

von Sam .. (sam1994)


Lesenswert?

Mit 9600 Baud sieht nicht beser aus.
Cool ein bisschen rumprobiert und jetzt ist es nur noch +5.
Könnte das am Internen RC liegen. Ich hab keinen Quarz genutzt.

von Sam .. (sam1994)


Lesenswert?

Scheint wohl wirklich der CDC232 kaputt zu sein. Weiß auch nicht warum.
Wenn ich den TxD und RxD von diesem Brücke kommen bei manchen Werten 
ganz andere raus.

Ab Dec 63 kommt x + 129 raus. Das geht bis inklusiv 191.

von Sam .. (sam1994)


Lesenswert?

So heute mach ich nichts mehr. Ich hab den CDC232 Controller 
neugeproggt. Nichts.

Wäre es möglich, dass die Rechenlogik in einem Bit kaputt geht? Ne eher 
nicht, oder?

von Michael (Gast)


Lesenswert?

Samuel K. schrieb:
> Mit 9600 Baud sieht nicht beser aus.
> Cool ein bisschen rumprobiert und jetzt ist es nur noch +5.
> Könnte das am Internen RC liegen. Ich hab keinen Quarz genutzt.

Der interne Oszilator ist a.) nicht sehr genau und b.) ganz schön 
temperaturabhängig. Verwende mal einen Quarz und schau mal ob es dann 
funktioniert.

von Purzel H. (hacky)


Lesenswert?

Was soll das Sparen ? Ein Quarz kostet um die 20 Cents. Dafuer passt die 
Baudrate.

von Michael (Gast)


Lesenswert?

A...aha Soooo. schrieb:
> Was soll das Sparen ?

Aufwand. Wenn ich nix so zeitkritisches habe verwende ich auch immer den 
internen Oszilator, spart Quarz, Kondensatoren und ein wenig Lötaufwand. 
Es mag nicht viel sein aber wie heißt es so schön: Kleinvieh macht auch 
Mist.

von Entwickler (Gast)


Lesenswert?

> Kleinvieh macht auch Mist.

Den Mist braucht man in diesem Fall zum Düngen der Baudrate; die ist 
immer zeitkritisch.

von Michael (Gast)


Lesenswert?

Ich wollte damit auch sagen, dass man bei zeitkritischen Sachen, wie 
z.B. UART, nicht auf den Quarz verzichten sollte aber wenn man nix 
zeitkritisches hat man sich durchaus 20 Cent sparen kann (plus Bauraum 
und Co) und den internen Oszilator nutzen kann ;)

von Skua (Gast)


Lesenswert?

Setze deine gesendeten und empfangenen Werte mal binär gegenüber.
Mir ist aufgefallen das immer 8er Gruppen entstanden sind.

Und was Sparst du an Zeit wenn es auch nur einmal wegen des nicht 
verbautem Quarzes nicht geht.

von Sam .. (sam1994)


Lesenswert?

A...aha Soooo. schrieb:
> Was soll das Sparen ? Ein Quarz kostet um die 20 Cents. Dafuer passt die
> Baudrate.

Naja ich musste einen Attiny84 Programmer bauen. Auf den jetzt noch ein 
Qaurz zu quetschenn ist ein bisschen blöd.  Auf dem eigentlichen 
Testboard ist ja ein Quarz, allerdings hatte ich da kein Platz für einen 
ISP-Anschluss.

Ich werds mal mit probieren. Allerdings ist der Quarz ein 3.278.600 
damit die Uhr einfacher zu proggen ist. Für RS232 nicht so effektiv. Ich 
hatte damit ja noch nie Probleme, deswegen war ich hier ein bisschen 
leichtsinnig.

Skua schrieb:
> Setze deine gesendeten und empfangenen Werte mal binär gegenüber.
> Mir ist aufgefallen das immer 8er Gruppen entstanden sind.

Stimmt. ISt mir gar nicht aufgefallen. Außerdem hab ich noch bemerkt, 
dass die Hälfte der Signale verschwinden. Nach immer 128 Signalen kommt 
wieder 0.

Halt da fällt mir an: Am Quarz kann es nicht liegen: Dann würden meine 
gesendeten und empfangenen Werte funktionieren. Es muss am CDC232 
liegen.

Ich werde mal aus Verzweiflung einen neuen Chip reinsetzen. Was besseres 
fällt mir grad nicht ein.

von Michael (Gast)


Lesenswert?

Samuel K. schrieb:
> Allerdings ist der Quarz ein 3.278.600
> damit die Uhr einfacher zu proggen ist. Für RS232 nicht so effektiv.

Wieso? Ist doch nur eine Rechenfrage.

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.