Forum: Mikrocontroller und Digitale Elektronik Probleme mit USB Übertragung


von Theodor (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

Ich hab folgendes Problem: Ich hab ein Prototyp gebaut der funktioniert. 
Danach hab ich ein Layout erstellt und es ätzen lassen. Hier habe ich 
ein Fehler begangen Pin30 und Pin31 am Atmega8L sind genau falschrum 
belegt
(habe ich händisch geändert).

Die Schaltung ist eine erweiterung des LED-Flitzers. Es wird per USB ein 
Schriftzug eingespielt welches dann per LEDs ausgegeben wird.

Leider funktioniert meine geätzte Schaltung nicht richtig.Wenn ich die 
Schaltung per USB anschließe und einen Schriftzug drauf spielen möchte 
passiert folgendes:

1. USB wird erkannt.
2. Schriftzug wird aufgespielt
3. Der Schriftzug besteht danach nur aus wirren Zeichen die nichts mit 
der ursprünglichen Eingabe zutun haben.

Ich habe den ganzen Tag überprüft und glaube daran das es wirklich nur 
ein "kleinerer" Fehler sein kann...

Software technisch erfolgt das aufspielen des Schriftzuges folgend 
(auszug)

  serialPort1.Close();

            serialPort1.PortName = comboBox1.SelectedItem.ToString();
            serialPort1.BaudRate = 4800;
            serialPort1.Parity = Parity.None;
            serialPort1.DataBits = 8;
            serialPort1.StopBits = StopBits.One;
            serialPort1.Handshake = Handshake.None;

            // Set the read/write timeouts
            //            serialPort1.ReadTimeout = 500;
            //            serialPort1.WriteTimeout = 500;

            try
            {
                serialPort1.Open();
                errorProvider1.SetError(comboBox1, "");
            }
            catch (Exception)
            {
                errorProvider1.SetError(comboBox1, "besetzt");
            }

mit der gleichen Firmware, Software und Schaltung funktioniert der 
Prototyp einwandfrei...

ich bin total ratlos und würde mich über Hilfe freuen

Gruß Theo

von dunno (Gast)


Lesenswert?

atmega richtig gefused? - klingt ein bisschen wie ein timingproblem beim 
rs232..

von Alexander S. (esko) Benutzerseite


Lesenswert?

RS232 ohne Quarz kann Probleme geben, besonders bei großen 
Temperaturschwankungen. Und heute war es recht warm.
AVR-Tutorial: UART: UART konfigurieren

von Theodor (Gast)


Lesenswert?

Hallo,

danke für die Antworten.

Ich habe Fuses und LockBits verglichen und beide sind gleich. Falls ich 
da was ändern müsste wüsste ich gar nicht was ich ändern müsste.

Bei dem Prototyp benutz ich eine A-Buchse und bei der Platine eine B. 
Ich habe jetzt öfters nachgeschaut eigentlich dürfte das ja keine 
änderung bewirken oder?

von kolabier (Gast)


Lesenswert?

An ein Problem auf USB glaube ich nicht. Dann würdest du nicht per USB 
mit dem Gerät kommunizieren können.
Die Daten auf dem USB Bus haben Checksummen, so dass hier sichergestellt 
ist, dass alles richtig ankommt.

Die Art deines Layouts erinnert mich eher an eine 
Elektro-Hausinstallation als an ein Mikrokontroller Design.

Es fehlen entsprechende Blockingkondensatoren an den ICs (siehe 
jeweilige Datenblätter), diese müssen auch nahe den VCC Pins 
positioniert werden. Momentan hast du die recht wild über das Board 
verteilt.

"T1" würde ich auch noch 1uF am Eingang gönnen.
1uF an Pin 20 und 100nF an Pin 4 von IC1

Bei allen Digitalschaltungen essentiell ist die GND Führung.
Es geht nicht darum, dass der Strom über irgend eine GND Leitung 
irgendwie wieder zur Batterie zurückkommt, sondern dass an allen ICs ein 
zuverlässiges GND Potential zur Verfügung steht, und um Abstrahlungen 
und SIgnalstörungen zu minimieren muss der GND Pfad nahe der 
entsprechenden Signalleitung liegen.

Ich empfehle dir, alle Signal-Leitungen auf der unteren Seite so kurz 
wie möglich zu machen, und die komplette Unterseite als (möglichst wenig 
eingeschnittene) GND-Plane zu nutzen.

von Michael U. (amiga)


Lesenswert?

Hallo,

da der AVR mit internem RC-Oszillator läuft und dessen Abweichung ohne 
Kalibrierung durchaus 10% sein kann -> falsche Baudrate des UART -> 
Zeichensalat.
Zum Layout wurde schon genug geschrieben.

Gruß aus Berlin
Michael

von Theodor (Gast)


Lesenswert?

Hallo,

@Michael

das ist ein gutes Stichwort, den Prototyp konnte ich mit AVR per ISP 
ganz normal ohne große konfiguration bespielen.

Bei der Platine gab er mir ein Fehler aus und ich musste die ISP 
Frequenz manuel auf 28,8 stellen. Könnte es daran liegen?

von Brumbaer (Gast)


Lesenswert?

Warum schreibst du nicht ein einfaches Nullmodem Programm und lädst es 
in den AVR  ?

Dann siehst du sofort ob das, was über die USB Leitung geht, auch 
ankommt.

Und wenn nicht, kannst du aus dem was du zurück bekommst oder auch nicht 
bekommst schliessen ob ein Timing- oder ein anderes Problem vorliegt.

MfG
SH

von oszi40 (Gast)


Lesenswert?

Theodor schrieb:
> 1. USB wird erkannt.
> 2. Schriftzug wird aufgespielt
> 3. Der Schriftzug besteht danach nur aus wirren Zeichen die nichts mit
> der ursprünglichen Eingabe zutun haben.

Nebenbei mal den Strom messen falls Zeichen richtig erkannt wurden.
USB http://de.wikipedia.org/wiki/Universal_Serial_Bus#.C3.9Cberblick

von Guido Körber (Gast)


Lesenswert?

Na ja, es wird ja gerne immer wieder übersehen, aber die Kondensatoren 
haben auf dieser Platine in dem Frequenzbereich der für das Stützen der 
Versorgungsspannung notwendig ist elektrisch nichts mit den Chips zu 
tun.

Die 100nF in den Versorgungsspannungen gehören so direkt wie nur möglich 
an die Versorgungsspannungspins der Chips und in den Strompfad. C8 zum 
Beispiel könnte auch im Nachbarzimmer auf dem Tisch liegen, da hat er 
den gleichen Effekt.

von Εrnst B. (ernst)


Lesenswert?

Noch eine Kleinigkeit, die erstmal nichts zur Sache tut:
Die Kurzschlussbrücke AREF -> VCC bei der nächsten Platinenversion 
weglassen.

Die hat man vor vielen, vielen Jahren, bei den ersten AVRs mit ADC mal 
gebraucht. Inzwischen sinnfrei und fehlerträchtig, aber leider scheinbar 
nicht auszurotten.

von Ib Hansen (Gast)


Lesenswert?

Rx und Tx vertauscht
Mfg
Ib

von Uwe (Gast)


Lesenswert?

JEDER AVR hat ne ANDERE RC-Oszillator Frequenz.Diese verändert sich auch 
noch mit der Temperatur und Betriebsspannung. Ohne Kalibrierung geht da 
gar nichts (NaJa mit Glück vieleicht). Oder benutzt du den selben (also 
nimmst den AVR von der einen Leiterkarte runter und steckst ihn auf die 
andere mit genau der selben Spannung und Temperatur?)

von Udo V. (Gast)


Lesenswert?

mach einen quarz dran und jut is!

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.