Forum: Mikrocontroller und Digitale Elektronik UART bei externer Stromquelle


von thomas o. (rhumbot)


Lesenswert?

Hallo,

ich arbeite an einer Sportanzeigetafel. Dazu sende ich ein Signal über 
USB an einen ATMega16, der dann die darstellung übernimt. Als 
Stromquelle für die Tafel dient mit ein Computernetzteil, das einen 12V 
ud einen 3V Anschluss hat.

Zur Zeit bezieht der Mikrocontroller den Strom über den USB Anschluss. 
Hier funktioniert das Projekt auch. Ich würde den Mikrocontroller aber 
den Strom gerne über das Netzteil beziehen lassen damit sich die Tafel 
nicht automatisch ausschaltet, soabld die USB Verbindung getrennt wird. 
Ausserdem möchte ich verschiedene Steuermethoden implementieren.

Ich habe einerseits eine Software, die die Tafel steuert, möchte aber 
auch eine primitive Schaltung verwenden können um die wesentlichen 
Funktionen auch ohne PC steuern zu können.

Das Problem ist, dass der µC wenn zuerst das Netzteil angeschlossen 
worden ist, das UART Signal nicht richtig verarbeiten kann. Das müsste 
sich doch machen lassen?

von Hmm (Gast)


Lesenswert?

>Das Problem ist, dass der µC wenn zuerst das Netzteil angeschlossen
>worden ist, das UART Signal nicht richtig verarbeiten kann.

Beschreibe das mal genauer. (Im Zweifel eher zuviel Details als zu 
wenig).

von Falk B. (falk)


Lesenswert?

@ thomas ortner (rhumbot)

>Hier funktioniert das Projekt auch. Ich würde den Mikrocontroller aber
>den Strom gerne über das Netzteil beziehen lassen damit sich die Tafel

Mach doch.

>Das Problem ist, dass der µC wenn zuerst das Netzteil angeschlossen
>worden ist, das UART Signal nicht richtig verarbeiten kann.

Klingt nach einer schlechten, sehr anfälligen UART Datenverarbeitung.

> Das müsste sich doch machen lassen?

Sicher. Wenn du die Netiquette beherzigst und Code als Anhang 
postest.

MFG
Falk

von Christian B. (casandro)


Lesenswert?

Also bei USB sollte man grundsätzlich keine externe Spannungsversorgung 
haben, sonst kann es da Potentialdifferenzen geben, die im besten Falle 
Deinen zum Neustart bringen. Da muss man sehr vorsichtig sein.

Besser ist es, einfach auf RS-485 zu gehen und die Leitung symmetrisch 
zu legen. Dann führst Du noch eine Masse vom Rechner zur Anzeigetafel 
und es sollte zuverlässig funktionieren.

von Falk B. (falk)


Lesenswert?

@ Christian Berger (casandro)

>Also bei USB sollte man grundsätzlich keine externe Spannungsversorgung
>haben,

Sag das mal allen Self Powerd Hubs und sonstigen Geräten wie Drucker 
etc. ;-)

> sonst kann es da Potentialdifferenzen geben, die im besten Falle
>Deinen zum Neustart bringen. Da muss man sehr vorsichtig sein.

Käse. Man muss die elementarsten Grundlagen der E-Technik beherrschen. 
Wie schalte ich zwei elektrische System so zusammen, dass sie 
gemeinsamen Massebezug haben.

>Besser ist es, einfach auf RS-485 zu gehen und die Leitung symmetrisch
>zu legen. Dann führst Du noch eine Masse vom Rechner zur Anzeigetafel
>und es sollte zuverlässig funktionieren.

So ein Quark.

von thomas o. (rhumbot)


Lesenswert?

Wär wahrscheinlich klug gewesen den Code gleich zu posten. Er ist mir 
halt so peinlich weil ich mich gar nicht mit µC auskenne ...
http://pastebin.com/SZWJdTMr

Das Signal wird dann über Java versendet, die Struktur ist aber 
wesentlich komplizierter da mehrere Module dranhängen. Sollte auch keine 
Relevanz haben. Das Signal über Putty gesendet hat das gleiche Ergebnis.

von thomas o. (rhumbot)


Lesenswert?

https://dl.dropboxusercontent.com/u/44108612/zusammensetzung.PNG
hier ist das wesentliche design von dem ich gedacht habe dass es 
funktionieren könnte:

SV1 repräsentiert das Netzteil.
1 - GND
2 - 12V
3 - 3V
4 - GND

SV2 - USB
1 - TX
2 - RX
3 - 5V
4 - GND

von thomas o. (rhumbot)


Lesenswert?

Ich bump das Topic einmal in der Hoffnung auf Feedback was ich hier 
ändern muss um eine stabile Vrbindung zu bekommen. Danke!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du solltest als erstes testen, was das Problem verursacht: das reine 
Anstecken der USB Verbindung, also z.B. Masseprobleme (ich nehme mal an, 
du nimmst einen FT232 o.ä.) oder ein Softwareproblem. Wo steckst du denn 
die Verbindung ab? An den Mega TXD/RXD oder erst hinter dem FT232? Und 
welche UART Library benutzt du?
Zu deinen Gunsten nehme ich mal an, das der Mega anständig mit 
Kondensatoren entkoppelt ist, und das du aus Faulheit die nicht im Plan 
eingezeichnet hast.

von ein Name (Gast)


Lesenswert?

Hi,
ich würde die 3V vom Netzteil nicht mit 5V USB verbinden ;-)

Gruß

von Falk B. (falk)


Lesenswert?

@ thomas ortner (rhumbot)

>http://pastebin.com/SZWJdTMr

Naja, typisches BASCOM-artiges Geschreibsel. Geht irgendwie, aber wehe 
ein laues Lüftchen weht mal anders. Dann klemmt die CPU.

Der Code ist unvollständig, die Funktion uart_init ist nicht sichtbar. 
Das sei() klingt gefährlich, denn es ist keinerlei ISR definiert im 
Code.
1
 if((unsigned char)c == me & reading == 0 & confirm != 1 ){

Hier sollte mal jemand ein C-Buch lesen und nach Möglichkeit auch 
verstehen.
Das muss && heißen und nicht &. Ein paar Klammern wären vorteilhaft, 
wenn gleich nicht zwingend.

Hier wird recht umständlich und fast unleserlich ein 
Minikommandointerpretet zusammengebastelt. Naja. Das sieht alles sehr 
wackelig aus. Wenn nicht peinlich genau der gewünschte Ablauf der 
Zeichen reinkommt, klemmt was.

Ich interpretiere das mal so. Zuerst wird auf ein 'a' gewartet, dann 
vier Zeichen gelesen und dann muss noch ein 'a' kommen. Danach wird der 
Befehl als Bestätigung zurückgesendet. Hmmm.

Die Formatierung, besonders die Einrückung ist schlecht, da verliert man 
mal fix den Überblick.

Strukturierte Programmierung auf Mikrocontrollern

Was man leicht testen kann. Schließ mal deine Tafel so an, dass es nicht 
geht, also erst Netzteil, dann USB. Dann mach mal einen Hardwarereset am 
AVR. Dann wird es wahrscheinlich gehen.

Wie man einen Kommandointerpreter besser machen kann, sieht man u.a. 
hier.

Beitrag "Re: USART Empfangsbuffer"

von Falk B. (falk)


Lesenswert?

Ach ja, der Klassiker. Die Massen vom Netzteil und deinem USB müssen 
verbunden sein!

von thomas o. (rhumbot)


Lesenswert?

So: Ich hab alle Antworten noch eimal durchgelesen, alles neu 
zusammengebaut und die Verbindung ist jetzt stabil! Ich weiß zwar nicht 
wo genau der Fehler war aber Hauptsache es klappt. Danke!!

Ich hätte aber eine zweite Frage:
Ich hab keine Kondensatoren mit dabei. Das ist mein erstes derartiges 
Projekt und ich hab keine einschlägige Ausbildung. D.h. hab mir alles 
aus irgendwelchen Tutorials zusammengekratzt und weiß gar nicht wo ich 
hier Kondensatoren bräuchte. Könntest du mich auf einen Artikel oder 
etwas verweisen wo mir die Problematik erklärt wird, warum ich das 
brauche?

von thomas o. (rhumbot)


Angehängte Dateien:

Lesenswert?

Falk Brunner schrieb:

> Der Code ist unvollständig, die Funktion uart_init ist nicht sichtbar.
> Das sei() klingt gefährlich, denn es ist keinerlei ISR definiert im
> Code.

Ist richtig, das ist aus der uart.c Datei. Hab sie angefügt.


> Hier sollte mal jemand ein C-Buch lesen und nach Möglichkeit auch
> verstehen.

Ist richtig aber aus Zeitmangel nicht machbar. Hobbyprojekt usw.
Ich schau mir den Interpreter einmal genauer an. Danke für 
Hilfestellung.

von Karl H. (kbuchegg)


Lesenswert?

Falk Brunner schrieb:

> Der Code ist unvollständig, die Funktion uart_init ist nicht sichtbar.
> Das sei() klingt gefährlich, denn es ist keinerlei ISR definiert im
> Code.

Wenn ich die "Signatur" der uart Funktionen richtig deute, dann sind das 
die Fleury-Funktionen, die Interrupt-getrieben eine FIFO benutzen. So 
gesehen wäre das sei() in Ordnung.

An den TO:
Solche Dinge musst du mitteilen!

von Karl H. (kbuchegg)


Lesenswert?

thomas ortner schrieb:

> Ist richtig aber aus Zeitmangel nicht machbar.

Das ist kein Argument.
Ich pfusche mein Haus einfach so hin, weil ich aus Zeitmangel mauern und 
verputzen nicht lernen kann.
Ich will mir ein Auto bauen, aber aus Zeitmangel kann ich den Umgang mit 
Feile und Bohrer nicht lernen.
.....

von Karl H. (kbuchegg)


Lesenswert?

thomas ortner schrieb:

> Ich hab keine Kondensatoren mit dabei. Das ist mein erstes derartiges
> Projekt und ich hab keine einschlägige Ausbildung. D.h. hab mir alles
> aus irgendwelchen Tutorials zusammengekratzt

Das kann aber nicht hier bei uns gewesen sein.
Denn in jeder 2.ten Anfrage nach der Durchsicht eines Schaltplans, in 
allen Tutoriumsbeiträgen, in hunderten von Fällen die immer nach dem 
gleichen Schema ablaufen (mein erster µC Aufbau funktioniert nicht 
-HILFE!!!) ist es immer wieder dasselbe. Tausendfach immer wieder genau 
das gleiche. Manche haben schon Fusseln an den Fingern, andere haben 
sich die Antwort als Textbausteine abgelegt.

An jedes Vcc-GND Pärchen eines µC gehören 100nF.
Reset mit 10k nach Vcc ziehen.

Und nein, wenn es bei jemandem auch ohne funktioniert, so ist das kein 
Argument.

AVR-Tutorial

von Falk B. (falk)


Lesenswert?

@thomas ortner (rhumbot)

>zusammengebaut und die Verbindung ist jetzt stabil! Ich weiß zwar nicht
>wo genau der Fehler war aber Hauptsache es klappt. Danke!!

Wahrscheinlich ein Wachelkontakt oder kalte Lötstelle.

>Ich hab keine Kondensatoren mit dabei. Das ist mein erstes derartiges
>Projekt und ich hab keine einschlägige Ausbildung.

Aber du brauchst sie.

http://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator

>> Hier sollte mal jemand ein C-Buch lesen und nach Möglichkeit auch
>> verstehen.

>Ist richtig aber aus Zeitmangel nicht machbar. Hobbyprojekt usw.

Dann such dir ein anderes Hobby. Niemand verlangt, dass ein Hobby auf 
professionellem Niveau betrieben wird. Wenn man aber nicht mal Zeit oder 
Interesse für die Grundlagen hat, ist es sinnlos.

von Uwe (de0508)


Lesenswert?

Guten Morgen,

Auch Atmel, man glaubt es gar nicht, denkt sich, dass kann nicht 
verkehrt sein:

AN042 - AVR Hardware Design Considerations
http://www.atmel.com/images/doc2521.pdf

AN040 - EMC Design Considerations
http://www.atmel.com/Images/doc1619.pdf

von thomas o. (rhumbot)


Lesenswert?

Also ich hab mir ein paar weitere Artikel durchgelesen und bin zu 
folgendem Ansatz gekommen:
https://dl.dropboxusercontent.com/u/44108612/zusammensetzung2.PNG

Ist das so OK?

Dass die Software nicht elegant ist, ist mir bewusst, aber die 
überarbeite ich erst zum Schluss ab wenn der Rest funktioniert.

von Falk B. (falk)


Lesenswert?

@ thomas ortner (rhumbot)

>https://dl.dropboxusercontent.com/u/44108612/zusam...

>Ist das so OK?

Nö.

Leitungen schmiert man nicht kreuz und quer, schon gar nicht durch IC 
Symbole.

Deine 7-Segmentanzeige wird so nicht funktionieren, im Extremfall 
druchbrennen. Es fehlen die Vorwiderstände, ausserdem muss die 
gemeinsame Anode (CA, common anode) an +12V, die einzelnen Kathode über 
Vorwiderstände an die Transistoren.

>Dass die Software nicht elegant ist, ist mir bewusst, aber die
>überarbeite ich erst zum Schluss ab wenn der Rest funktioniert.

Um bis dahin viel "Spass" mit der instabilen Software zu haben. Njoy.

von thomas o. (rhumbot)


Lesenswert?

Hmm. Die 7-Segmentanzeige ist nur Symbolisch für die Anzeigetafel. Die 
wird schon richtig angeschlossen und hat auch entsprechende 
Vorwiderstände eingebaut.


Es geht ja eigentlich um die Stromversorgung, betreibung des µC über 
eine externe Stromquelle und Kondensatoren. Widerstand zum Reset und 
Kondensator passen so?

von Falk B. (falk)


Lesenswert?

@ thomas ortner (rhumbot)

>Hmm. Die 7-Segmentanzeige ist nur Symbolisch für die Anzeigetafel. Die
>wird schon richtig angeschlossen und hat auch entsprechende
>Vorwiderstände eingebaut.

Solche "Skizzen" kann man sich sparen!!!

EOD!

von thomas o. (rhumbot)


Lesenswert?

Falk Brunner schrieb:
> @ thomas ortner (rhumbot)
>
>>Hmm. Die 7-Segmentanzeige ist nur Symbolisch für die Anzeigetafel. Die
>>wird schon richtig angeschlossen und hat auch entsprechende
>>Vorwiderstände eingebaut.
>
> Solche "Skizzen" kann man sich sparen!!!
>
> EOD!

Ich bin ja echt dankbar für das Forum und sogar dir für deine 
Anmerkungen aber man muss halt schon sehr genau nach dem Feedback suchen 
in deinem beleidigenden Unterton. Sowas versteh ich einfach nicht ... 
Über Nettiquette braucht in dem Forum niemand mehr schreiben.

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.