RS232 dezimal immer +9?

OP #1960337
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?
Angehängte Dateien:
OP #1960374
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.
Gast #1960622
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.
Gast #1960825
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 ;)
Gast #1960844
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.
OP #1961194
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren