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?
>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).
@ 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
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.
@ 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.
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.
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
Ich bump das Topic einmal in der Hoffnung auf Feedback was ich hier ändern muss um eine stabile Vrbindung zu bekommen. Danke!
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.
Hi, ich würde die 3V vom Netzteil nicht mit 5V USB verbinden ;-) Gruß
@ 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"
Ach ja, der Klassiker. Die Massen vom Netzteil und deinem USB müssen verbunden sein!
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?
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.
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!
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. .....
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
@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.
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
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.
@ 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.
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?
@ 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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.