Hallo! Meine 5V Spannungsregler (LM7805) haben eigentlich immer 4,98V gebracht. Jetzt hab ich aber einen, der nur 4,7 - 4,8 - 4,9V bringt. Die µCs (5x ATMega8 + 1x ATMega32) laufen damit Problemlos. Allerdings hängt sich einer ständig auf. Und zwar schreibt er an zufälliger Stelle im Programm eine Zeile aufs LCD und bleibt dann hängen. Kann das an der für das LCD evtl zu niedrigen Spannung liegen? Da könnte er nämlich dann bei fehlender Antwort in einer Endlosschleife hängen bleiben!! Was meint ihr dazu? Kann das die Ursache sein? Müsste der LM7805 normal seine 5V bringen? (Er bringt sie auch unbelastet nicht!) Und noch ein Problem im Zusammenhang mit dem LCD. Nach der Erstellung eines kleinen Menus bin ich jetzt beim angeschlossenen ATMega8 (8kb flash) mit meinem Programm bei 7988 Bytes. Wie und wo kann ich am besten Bytes sparen? Das Programm ist nämlich noch nicht ganz fertig... eure Erfahrungen sind gefragt! Vielen Dank für eure schnelle Hilfe! Gruß, see4far
>Wie und wo kann ich am besten Bytes sparen?
Ich denke mal, das weißt nur Du!
Ansonsten, wenn in Basic, umsteigen auf C oder ASM-Routinen einbauen,
die sind kürzer.
Werden die 6 Megas alle gemeinsam von einem Regler versorgt?
Wenn ja, dann für das LCD extra einen nehmen.
MfG
Andi
"Ansonsten, wenn in Basic, umsteigen auf C oder ASM-Routinen einbauen, die sind kürzer." Das ist doch Quark, kann man keinesfalls so pauschal sagen. Bei den Hochsprachen liegt viel am Geschick der Compilerbauer, aber auch wie man selbst seine Programme schreibt, hat grossen Einfluss auf die erzeugte Codegrösse. Mit der Sprache selbst hat das herzlich wenig zu tun. Und auch asm-Programmierung bedeutet nicht automatisch kleineres Programm. Wenn man sich sehr viel Zeit nimmt und sehr viel Verständnis für die Assemblerprogrammierung hat, kann das was bringen. Aufwand/Nutzen steht aber in keinem sinnvollen Verhältnis. Gute Compiler können Optimierungen einbauen, die den Assemblerprogrammierer an den Rand des Wahnsinns bringen würden, zumindest aber die Übersichtlichkeit und Wartbarbkeit gegen 0 gehen lassen. Und wenn gegen Hochsprachen gewettert wird, ist meist Unverstand am Werk. Verschieden Sachen schlagen mit rel. viel Code zu Buche: 1. die startup.inc, muss man nicht benutzen. Wenn doch, wird sämtliche Hardware des MC initialisiert, die nichtbenutzten Sachen werden nochmal mit dem reset-Wert beschrieben. Durchaus nicht sinnlos, aber u.U. entbehrlich, der asm-Programmierer lässt das oft weg. Um die 100 Byte gehen dafür schon mal drauf. 2. printf/sprintf oder ähnliches in anderen Sprachen. Nimmt einem sehr viel Arbeit ab, braucht dementsprechend rel. viel Speicher. Niemand hindert dich, in einer Hochsprache nur low-level-Funktionen wie putchar etc. zu benutzen, spart jede Menge Programmspeicher. 3. Bedenkenloser Umgang mit falschen (zu grossen) Datentypen. Heftig wirds, wenn man float einsetzt. Würde keiner freiwillig in asm machen. Man sollte also nicht Äpfel mit Birnen vergleich.
Ich habe die erfahrung gemacht dass man sachen die gleich sind besser in subs zusammenfasst. das spart unheimlich viel speicher. Wegen des 7805: Was für kondensatoren hast du davor/dahinter geschalten? was für eine spannungsversorgung hast du dran?
Wenn der Regler Ärger macht, schmeiss ihn raus und bau einen neuen ein. Der kostet nur ein paar Cent. Es lohnt doch nicht einmal darüber nachzudenken. Wenn dann immer noch das gleiche Problem ist, muss der Fehler woanders liegen. Peter
> Wenn man sich sehr viel Zeit nimmt und sehr viel Verständnis > für die Assemblerprogrammierung hat, kann das was bringen. > Aufwand/Nutzen steht aber in keinem sinnvollen Verhältnis. Das kann man so auch nicht pauschalisieren. Wenn der Nutzen ist, daß das Programm überhaupt in den Flash-Speicher passt, dann kann das Verhältnis durchaus sinnvoll sein.
nein, wenn man Unmengen von Tricks anwenden muss, um das Programm reinzubekommen, liegt der Fehler ganz woanders - an der allerersten Planung, falschen MC ausgewählt. Die kleinste weitere Erweiterung (oder Bugbeseitigung) zwingt dich dann endgültig in die Knie, da war auch die ganze Komprimier-Arbeit für die Katz. Kann allenfalls Sinn machen, wenn eine Serie mit >10.000 Stk geplant ist, dann kann der kleinere MC mit viel Softwarearbeit kostenmässig was bringen. In diese Bereiche kommt hier wohl kaum einer. Ich arbeite mit Serien um die 100 Stk, 1000 sind schon eine absolute Ausnahme. Schau dir dochmal den Preisunterschied z.B. Mega8/Mega16 an - lohnt es sich, dafür auch nur 10min länger zu programmieren? Abgesehen davon, die Presserei ist fehlerträchtig, zieht weitere Debug-Arbeit nach sich, Übersichtlichkeit leidet enorm. Ja, ich weiss, viele fangen einfach an, die Erkenntnis, die falsche Wahl getroffen zu haben, kommt spät. Und dann kommt der (falsche) Ehrgeiz, es doch damit zu schaffen. Etwas vorbereitende Überlegungen sind äusserst gut investiert, bei grösseren Projekten unverzichtbar.
und noch was perönliches: Wenn ich was ausliefere, beginnen die Bauchschmerzen, wenn der flash >75-80% voll ist. Kunden sind unberechenbar, es kommt eigentlich immer was nach. Klar, kann man sagen, tut mir leid, war nicht vorgesehn, ist deshalb nachträglich nicht möglich. Ich nenne das mangelnde Weitsicht des Entwicklers, und zumindest Verschnupfung des Kunden ist vorprogrammiert.
das kenn ich nur zu gut, und solange du mit smd arbeitest get das super. aber normale dip gehäuse kannst du vergessen, jedenfalls ist der sprung vom m8 zum m16 einfach nur zu groß. oft würde auch ein 8 pinner reichen, kannst du aber nicht nehmen, weil es keine mit genügend speicher gibt. zum 7805: habe die erfahrung gemacht, das man mit kleineren kondensatoren (warum auch immer) die temperatur oft mals reduzieren kann.
Welche Eingangsspannung liegt am 7805er an? Wenn die nur knapp über den 5V sind, gibts Probleme. Das sollten schon mindestens 7.5V sein. Vom Datenblatt her darf der LM übrigens auch "nur 4.75V" bei entsprechender Last und Power Dissipation bringen, das wäre innerhalb der Toleranzgrenze... Falls Vin passt, die Kondensatoren laut Grundschaltung da sind und auch nah genug sind, und der produziert trotzdem weiterhin zu wenig Spannung, würd ich ihn auch einfach austauschen... (Ich geh mal davon aus dass du nicht mehr als 1A ziehst.)
Ok, werde gleich mal einen anderen probieren.. aber kann der Display-Fehler den überhaupt was damit zu tun haben?? Danke schon mal für die bisherigen Antworten.
@bob: da ist natürlich was dran - daran habe ich nicht gedacht, nehme nur SMDs. Bleibt aber immerhin noch der Mega168.
@bop: Das mit den Kondensatoren am 7805 find ich recht "interessant"....Kannst du das mal näher erklären. Das wär doch dann wirklich nobelpreisverdächtig :o))) Gruß Thomas
Also in der regel habe ich 10µ und 100nF dran. Wenn du eine Schaltung hast wo viele stromspitzen auftreten wird der kondensator natürlich schon mal entladen. und eine größerer elko bedeutet mehr strom -nein falsch: länger der strom- und dadurch mehr arbeit für den regler, weil gesamtleistung. in den verschiedenen datenblättern gibt es verschiedene ansätze wie die eingangs und ausgangsspannung abgefangen werden soll. zB gibt es basuteine mit dem 10µ 0,1µ schema und welche die haben 0,33µ am eingang und 0,1µ am ausgang (st zum beispiel)...
@Bob: Die Kondensatoren an einem Spannungsregler haben 2 Aufgaben. 1. Stromspitzen abfangen und 2. Schwingen des Reglers unterdrücken. 10-100 uF am Eingang und 0.1-10 uF am AUsgang tut´s in den meisten Fällen. Entladen werden dürfen die Kondensatoren nie, sonst macht deine angeschlossene Schaltung nur noch Mist. Mein Kommentar sollte eigentlich eher ein Scherz sein, denn die Verlustleistung im Spannungsregler hat mit den angeschlossenen Kondensatoren sagen wir "sehr wenig" zu tun. die besten Grüße Thomas
Oder auch 100nF, 100nF. Ich wähle meist 10uF Tantal am Eingang, 100nF am Ausgang wenn die Spannung ausreichend geglättet ist (z.B. von Steckernetzteil). Aber das reicht oft nicht um die Spannung sauber zu bekommen, meist habe ich trotzdem rund 0,5Vss auf der 5V Leitung. Dann kommen und die kritischen ICs, die die Störungen verursachen noch zusätzlich 10uF (zu den sowiso schon vorhandenen 100nF).
@Thomas Die Verlustleistung nimmt wirklich zu, wenn man einen größeren Kondensator am Eingang verwendet. Der Grund ist ganz einfach die höhere mittlere Eingangsspannung. Lässt sich übrigens auch rechnerisch erfassen. Dieter
@dds5 Das ist nicht ganz richtig, es kommt auf die Spannung an: Ausgangsspannung: 5V Beispiel 1: Trafo liefert 7V, macht rund 8,5V (+/-<0,1V) am riesen Elko. Verlust rund 3,5V. Beispiel 2: Trafo liefert 10V, macht rund 11V (+/-3V) am zu kleinen Elko. Verlust durchschnittlich rund 6V.
Hallo Benedikt, meine Aussage bezog sich auf einen größeren Kondensator bei gleichem Trafo. Sorry wenn das nicht richtig rübergekommen ist. Dieter
tip: direkt am 5V anschluss des displays einen kondensator von ca 50 bis 100 nF nicht vergessen ! ohne den funktioniert bei mir ein grafikdisplay nicht, obwohl die verbindungsleitung nur ca 2cm lang ist zum 7805. ansonsten könnte das timing kritisch sein, daher ev etwas längere pausen bei der ansteuerung des displays wählen.
ich nehme jetzt immer noch ne indikutivität am ausgang des 7805, hatte gestern mal gemessen 0,5Vss hochfrequentes irgendwas, mit der spule (15µH) in reiche dazu krieg ich nur noch ca 30mVss. Ich habe das mit dem Kondensator schon probiert. Das scheint nur bei manchen 7805 ein problem zu sein. ich habe nur probleme mit denen von reichelt... warum auch immer. mein alter lehrmeister hat immer gesagt: es gibt dinge zwischen himmel und erden, die kammer nicht erklären...
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.