Hi mal wieder! Ich würde gerne ein paar Daten erhalten (Tacho) und würde diese darum gern ins EEprom schreiben. Ich kann natürlich nicht alle paar Sekunden schreiben, da dann die Schreibzyklen schnell ausgeschöpft wären. Nun ist mir aufgefallen, dass meine Schaltung (durch Kondensatoren etc vermutlich) immer noch ein bisschen anbleibt, nachdem die Netzspannung entfällt (locker ne halbe bis eine Sekunde, und zwar samt Display). Gibt es irgendeine Möglichkeit diesen Event zu nutzen um die Daten zu speichern? Grüße & Dank!
He Gr wrote: > Gibt > es irgendeine Möglichkeit diesen Event zu nutzen um die Daten zu > speichern? Da es sich offensichtlich um einen AVR handelt (und das gehört in den Betreff und nicht irgendwo versteckt in den Text!), sollte das mit dem Analog-Komparator machbar sein. > Wie schreibt man überhaupt ins EEprom? (AVR Studio, C)? AVRStudio kann kein C. Wenn Du was in C programmieren willst, musst Du WINAVR installieren. Und in der dazugehörigen Dokumentation, die automatisch mitinstalliert wird, sind die Funktionen zum Zugriff auf EEPROM usw. beschrieben. > Und noch etwas: angenommen, ich messe alle halbe Sekunde die Frequenz > des Rades und generiere daraus meine Geschwindigkeit. Wie errechne ich > daraus am besten die Distanz? Einfach ne Variable und jedes Mal > hochrechnen, oder?! Naja, was ist denn die zurückgelegte Strecke? Umfang des Rades mal Anzahl der Umdrehungen...
He Gr wrote: > Nun ist mir aufgefallen, dass meine Schaltung (durch Kondensatoren etc > vermutlich) immer noch ein bisschen anbleibt, nachdem die Netzspannung > entfällt (locker ne halbe bis eine Sekunde, und zwar samt Display). Gibt > es irgendeine Möglichkeit diesen Event zu nutzen um die Daten zu > speichern? Sicher. Zwischen Gleichrichter und Siebelko hängst du noch eine kleinen Kondi und eien Diode rein, so dass du nach dem Gleichrichter die eigentliche Versorgungsspannung abnehmen kannst. An dieser Stelle ist die Spannung dann weg, während der große Siebelko deine Schaltung noch mit Strom versorgt. Diese Spannung überwachst du und wenn sie einbricht, weiß dein Programm, dass in Kürze mit einem Spannungsausfall zu rechnen sein wird. > Wie schreibt man überhaupt ins EEprom? (AVR Studio, C)? http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM > Und noch etwas: angenommen, ich messe alle halbe Sekunde die Frequenz > des Rades und generiere daraus meine Geschwindigkeit. Wie errechne ich > daraus am besten die Distanz? Delta_s = v * Delta_t Delta_s aufsummieren.
---> Brown-out Detection löst ein Int. bei 2 verschiedenen Beriebsspannungen aus. Gruß fred
Na dann schau mal in meinen Thread "Wie lange hält die Spannung nach Stromausfall?". Dort behandle ich dieses Thema gerade (allerdings mit einem PIC). Ich werde das Stromausfallsignal an einen Komparatoreingang schalten und die Referenzspannung auf ca. 4V festlegen. Wenn nun die Spannung vor der Diode ausfällt, löst der Komparator einen Interrupt aus und ich kann noch ein paar Bytes ins EEPROM sichern, da der große Elko hinter der Diode die Spannung noch ca. 1 Sekunde hält. @Fred: Ja aber dann ist es schon zu spät, da die Spannung schon weg ist. Sven
> Da es sich offensichtlich um einen AVR handelt (und das gehört in den > Betreff und nicht irgendwo versteckt in den Text!), sollte das mit dem > Analog-Komparator machbar sein. Sorry, stimmt. >> Wie schreibt man überhaupt ins EEprom? (AVR Studio, C)? > AVRStudio kann kein C. Komisch. Ich entwickle schon ein bisschen in C. Und zwar im Studio. Aber vielen Dank Euch allen. Ich checke mal das mit der Brown out etc... Gürße!
He Gr wrote: >>> Wie schreibt man überhaupt ins EEprom? (AVR Studio, C)? >> AVRStudio kann kein C. > > Komisch. Ich entwickle schon ein bisschen in C. Und zwar im Studio. Dann hast Du aber vermutlich auch den WINAVR bereits installiert...
@ Johannes M. die Ausgangsfrage ist ein bißchen verdreht. Aber mit eimem bißchen gutem Willen kann mans verstehen. Gruß Fred
Hmm... ich finde zu brown out nicht so viel. Es geht da immer nur um einen reset. Wie kann ich denn ne Interruptroutine anhängen bzw. dem Reset vorschieben? Oder über A/D: muss ich da immer wieder die Spannung messen oder kann ich nen Interrupt für Spannungsabfall basteln? Nen negierer davor, der nen Pin high setzt, wenn die Spannung abfällt? Quasi so: + ---- Spannungsregler etc. --- VCC VCC ---| Wenn + einbricht wird über VCC aus dem Kondensator | PIN + ---| high gesetzt | Welche Pins am Atmega32 taugen denn dafür ne Interruptroutine auszulösen, wenn sie high gesetzt werden? Danke Euch!
He Gr wrote: > Hmm... ich finde zu brown out nicht so viel. Es geht da immer nur um > einen reset. Wie kann ich denn ne Interruptroutine anhängen bzw. dem > Reset vorschieben? Vergiss den Brown Out. Der hilft dir nichts. Wenn der Brown Out anspricht, ist die Versorgungsspannung des Prozessors selbst schon am Einbrechen -> du hast kaum noch Zeitreserven bis die Spannung komplett weg ist. > Oder über A/D: muss ich da immer wieder die Spannung messen oder kann > ich nen Interrupt für Spannungsabfall basteln? Du musst keine Spannung messen. Deine entkoppelte Versorgunsspannung begrenzt du wieder auf Vcc (zb. mit einer Zenerdiode) und legst sie auf einen normalen Pin. > Welche Pins am Atmega32 taugen denn dafür ne Interruptroutine > auszulösen, wenn sie high gesetzt werden? Datenblatt studieren.
He Gr wrote: > Hmm... ich finde zu brown out nicht so viel. Es geht da immer nur um > einen reset. Wie kann ich denn ne Interruptroutine anhängen bzw. dem > Reset vorschieben? Gar nicht. > Oder über A/D: muss ich da immer wieder die Spannung messen oder kann > ich nen Interrupt für Spannungsabfall basteln? Wieso denn ADC? Ich habe oben doch schon den Analog-Komparator erwähnt. Und ein Blick ins Datenblatt sollte Dir sofort verraten, mit welchen Pins der arbeitet. > Nen negierer davor, der nen Pin high setzt, wenn die Spannung abfällt? Auweia... Auch noch High...
Karl heinz Buchegger wrote: > Du musst keine Spannung messen. > Deine entkoppelte Versorgunsspannung begrenzt du wieder auf Vcc > (zb. mit einer Zenerdiode) und legst sie auf einen normalen Pin. Oder so...
Warum machst du es nicht so, wie einige hier schon geschrieben haben. Komparator oder Z-Diode. ADC ist quatsch, da du ständig messen müsstest und der Stromausfall eventuell genau dann kommt, wenn der ADC gerade beschäftigt ist. Brown-Out ist auch Quatsch (warum hab ich schon erwähnt). Also les dich in die benannten Themen ein und frag wenn du etwas nicht verstehst konkret nach. Und PIC oder AVR ist eigentlich egal, da beide auf benannte Weise gesteuert werden können. Es sind halt nur andere Pins und andere Register zu verwenden. Sven
Ich glaub, ich habs schon. Ich habe ohnehine ne entkoppelte Spannungsversorgung. Von da aus gehe ich Richtung Komparator und setze die Register so, dass bei fallender Flanke ein Interrupt ausgelöst wird. Werde mich daran nachher mal versuchen. Bei Fragen, frag ich. Grüße!
Ich noch mal. Kann mir jemand was zu dieser Fehlermeldung sagen? error: static declaration of '__vector_18' follows non-static declaration Der Aufruf sieht so aus:
1 | ISR(ANA_COMP_vect) |
2 | {
|
3 | //save to eeprom
|
4 | }
|
Danke!
He Gr wrote: > Ich noch mal. > Kann mir jemand was zu dieser Fehlermeldung sagen? > > error: static declaration of '__vector_18' follows non-static > declaration > Hört sich so an als ob du versuchst eine ISR in einer anderen ISR zu definieren. Überprüf mal deine { - } Hierarchien. Wahrscheinlich hast du sowas ISR( xxxxx ) { .... if( ... ) { ... } ISR( yyyy ) { } Also irgendwo eine } vergessen. Ansonsten poste mal den relevanten Abschnitt. Daran denken, dass in dem Fall der Fehler wahrscheinlich vor der angemäkelten Funktion liegen wird.
Tatsächlich. Hab nen Klammerfehler übersehen. Peinlich peinlich. Aber danke!
@ Karl heinz Buchegger
> Vergiss den Brown Out
Wenn mann den bei 4V auslöst, hatt mann genügend Zeit
ca 500 Byte im EE zu speichern. (Mega8 1Mhz Tackt intern!)
Bis die Spannung auf 2,7V zusammenbricht (4,7µF Stütz und nichts
anderes drann!!!) vergehen mehrere ms. Das ist für ein µC eine EWIGKEIT.
ist getestet!
Gruß Fred1
Fred wrote: > @ Karl heinz Buchegger > >> Vergiss den Brown Out > > Wenn mann den bei 4V auslöst, hatt mann genügend Zeit > ca 500 Byte im EE zu speichern. Aber leider nicht sehr sicher. > Bis die Spannung auf 2,7V zusammenbricht (4,7µF Stütz und nichts > anderes drann!!!) vergehen mehrere ms. Das ist für ein µC eine EWIGKEIT. Für ein EEPROM ist das gewiss keine Ewigkeit, zumindest beim schreiben.
> Für ein EEPROM ist das gewiss keine Ewigkeit, zumindest beim schreiben.
testes mal! 512 Byte sicher 1024 Byte keine Garantie
obacht: keine aktiven ISR's im Hintergrund!
Gruß Fred
Ist ja nun schon alles am Komparator und läuft. Nun schlage ich mich mit dem EEPROM-Kram rum. Die Beispiele aus dem Tut wolln nicht. Mal weiter suchen. Ich will nur eine variable lesen und schreiben aber syntaktisch gibts da wohl fehler. Bekomme zumindest Copilerfehler. Das section attribute könne für lokale Variablen... Such mir mal ne andere Anleitung...
He Gr wrote:
> Das section attribute könne für lokale Variablen...
Musst beachten, dass EEMEM-Variablen immer global sind und auch global
deklariert werden müssen.
und wieder einer aus dem C-Lager. Johannes M. der nicht weiß wie lange es dauert?! Fred
Jup, schon dahinter gekommen ;) Danke
Was mir gerade zu schaffen macht ist, dass ich nur uint16_t schreiben kann. Die Variable, die ich abspeichern will muss aber 5(besser noch 6) Zeichen vorm Komma und 2(besser noch 3) dahinter packen. Wahlweise wäre auch ein ausreichend großer Zahlenbereich schick. Das Komma kann ich mir dann ja immer noch verschieben wie ich lustig bin. Aus den tuts werd ich nicht so richtig klug. Ich les mal noch was...
Fred wrote: > und wieder einer aus dem C-Lager. > > Johannes M. > > der nicht weiß wie lange es dauert?! > > Fred ATMega8 10/06 Datenblatt Seite 21: EEPROM Programming Time (Write from CPU): 8,5ms bei 1MHz clock. 512 Bytes würden meiner Meinung nach fast 4,5 Sekunden dauern. Na dann. PS: Was hat eigentlich C damit zu tun?
Simon K. wrote:
> PS: Was hat eigentlich C damit zu tun?
...und v.a.: Was habe ich damit zu tun? Ich habe zu dem Thema
keinerlei Äußerung abgegeben...
Hmm... Wenn ich das Ereignis absichtlich triggere, dann funktioniert alles prima. Leider reicht die Zeit im echten Leben anscheinend doch nicht für den Interrupt und das Speichern. Irgendwie geht auch doch alles ziemlich schnell aus, wenn das Netzteil ab ist. Das weiterlaufen hatte ich wohl in einer anderen Umgebung beobachtet. Ich habe schon zwei 10uF-Kondensatoren zusätzlich eingelötet - ohne Erfolg. Sollte ich da nen noch dickeren nehmen oder gibt es irgendeine brauchbarere Pufferschaltung? Danke & Grüße!
Das hängt auch von deiner Schaltung ab. Einfach nur nen Elko in die Zuleitung hängen hilft nicht. Du musst in deine Spannungsversorgung noch ein Diode hängen. Vor der Diode greifst du das Signal für den Spannungsausfall ab und nach der Diode kommt der Elko. Damit erreichst du, das die Spannung vor der Diode sofort ausfällt durch den Elko der µC aber noch eine Weile versorgt wird. Ohne diese Diode misst du nur die Spannung am Elko, welche aber genau die gleiche ist wie die am µC. Also so ---------------- Messsignal µC | +5V --- A Diode K --- Versorgung µC | --- --- Elko | --- Sven
Das schon klar. Die Diode existiert. Problematisch könnte sein, dass außer dem Mega noch ne Reihe anderer Verbraucher HINTER der Diode hängen. Die ziehen dann vielleicht einfach alles an Saft ab. Ich versuchs mal anders. Derzeit hab ich eh das Problem, dass a) der 7805 immer tierisch heiss wird, sobald die Hintergrundbeleuchtung des LCD an ist und b) bei Betrieb am Netzteil nur die obere Zeile des LCD angezeigt wird (kommt der Saft übern ISP ist das Problem nicht da)
Hab den Schaltplan mal geändert. In dieser Version hängen die anderen Verbraucher VOR der Diode. So funktioniert zwar das LCD nicht, wenn nur der ISP angeschlossen ist aber was solls. Bevor ich das alles umlöte - müsste das theoretisch so funktionieren? Macht vielleicht ein größerer Kondensator hinter der Diode Sinn (derzeit 10u)? Achtung: hab den 7805 gegen nen Lowdrop getauscht. Die Pinbelegung ist Vin Vout GND/adj Fällt sonst noch was auf? Grüße!
He Gr wrote: > Fällt sonst noch was auf? Dass der Anhang kein Schaltplan ist, sondern ein Layout. Und Bildformate
Hm, weiß nicht. Du steuerst ja sicher die anderen Verbraucher über den µC. Damit bekommen die anderen Verbraucher 5V Betriebsspannung der µC aber nur ca. 4,3 (wegen der Diode). Normalerweise mögen µC keine Spannungen an ihren Eingängen welche mehr wie 0,5V über der Betriebsspannung liegen. Das könnte aber nun passieren. Denk da noch mal drüber nach. Und nein, auch ich werde mir nicht die Platine antun. Ein Schaltplan wär schon besser. Sven
Der Controller könnte die anderen Verbraucher auch mit einem p-Kanal-FET abschalten, sowie er einen Ausfall der Primärversorgung entdeckt hat. Dann hat er die restliche Kondensatorladung für sich, und am Rdson des FET fallen nur 100...200 mV ab, wenn man ihn passend dimensioniert. Ein 7805 ist natürlich an sich schon ein Übel, wenn man mit Energie sparen will. ;-)
He Gr wrote: > Derzeit hab ich eh das Problem, dass a) der > 7805 immer tierisch heiss wird, sobald die Hintergrundbeleuchtung des > LCD an ist Naja, wieviel Watt muss der Linearregler denn verbraten? Was hast du für eine Eingangsspannung? Hängt das Ding im Auto an 14 Volt? Falls ja ist das normal das der heizt, musst du eben gut kühlen. > und b) bei Betrieb am Netzteil nur die obere Zeile des LCD > angezeigt wird (kommt der Saft übern ISP ist das Problem nicht da) Das klingt aber eher nach einer unsauberen Initialisierung. Kannst du schon Text anzeigen oder zeigt es nur den schwarzen Balken an? Sven Stefan wrote: > Hm, weiß nicht. Du steuerst ja sicher die anderen Verbraucher über den > µC. Damit bekommen die anderen Verbraucher 5V Betriebsspannung der µC > aber nur ca. 4,3 (wegen der Diode). Normalerweise mögen µC keine > Spannungen an ihren Eingängen welche mehr wie 0,5V über der > Betriebsspannung liegen. Mit einer Schottky-Diode sollte es funktionieren oder?
Hab einfach noch ne Diode vor die VCC der angeschlossenen Schaltungen gehängt. Mach ich mir wann anders nen Kopf drüber obs schicker geht. Das mit dem LCD passt alles, wenn es über ISP versorgt wird. Bei Betrieb über Netzteil kann ich nur die obere Zeile nutzen. Unten bleibts LEER. Keine schwarzen Balken oder so. Was ist denn mit den 10u? Reicht das um ein paar 16 bit Vars ins EEprom zu schreiben? Soll ich den größer Dimensionieren. Danke & Grüße.
He Gr wrote: > Das mit dem LCD passt alles, wenn es über ISP versorgt wird. Bei Betrieb > über Netzteil kann ich nur die obere Zeile nutzen. Unten bleibts LEER. > Keine schwarzen Balken oder so. Klingt trotzdem nach einem Softwareproblem. Eventuell sind die Wartezeiten falsch gesetzt. Die externe Spannung wird vielleicht langsamer steigen als die ISP-Spannung. Möglicherweise sendet der Controller da schon die init-Sequenz, obwohl das Display noch nicht bereit ist. Oder anders: Der ISP Adapter steckt, du programmierst, der Programmer führt einen Reset aus. Die Versorgungsspannung wird dadurch nicht unterbrochen, daher ist das Display weiterhin bereit. Sobald der Controller resettet wurde kann (und darf) er dem Display sofort Signale senden und das Display reagiert wie gewünscht.
Hmm.. ich versuchs mal mit ein paar Delays... Was anderes: die Daten im EEPROM: gibts ne Möglichkeit, diese zu erhalten, wenn ich den Atmega neu programmiere ohne sie gleichzeitig zu sperren? Also so, dass die Anwendung die Daten überschreiben können, diese aber nach nem Update des Atmega erhalten bleiben. Hab schon was gegoogled aber irgendwie werd ich nicht richtig klug draus...
EESAVE-Fuse programmieren...
Sorry, hatte das falsch verstanden. Dachte, das würde den Inhalt des EEPROM dauerhaft schützen (er könnte auch aus dem Programm nicht mehr manipuliert werden). Hab gerade eine passendere Beschreibung gefunden. Danke!
So. Ich bin ein ganzes Stück weiter aber noch nicht am Ziel. Folgende Beschaltung: +5V | 10uF---Diode---470uF---Atmega VCC,Atmega Pin3 (AIN0) | Diode | 10uF | Display, Messschaltungen, Atmega Pin4 (AIN1) Im Quelltext: ACSR = (1 << ACIE); //eigentlich nur fallende Flanke auswerten aber zu testzwecken... ISR ( ANA_COMP_vect ) {4 Mal eeprom_write_word(... Der Interrupt wird manchmal ungewollt ausgelöst und macht dann auch was er soll. Wenn ich den Saft wegnehme, dann klappt das allerdings nicht. Reichen 470u nicht aus oder liegt der Fehler woanders? Die Displaybeleuchtung wird über einen Transistor geschaltet. Wenn die Netzspannung weg ist (ISP hängt mit am Verbrauchernetz, da kann man das gut beobachten), dann bleibt das Display leer (erhält ja keinen Saft), die Beleuchtung geht aber. Der Saft muss irgendwie über den Pin am Mega kommen. Das ist ja ein ziemliches Desaster, weil der Pin überhaupt nicht so stark belastet werden darf. Kanns daran liegen? Das die Beleuchtung den 470u C leersaugt, bevor der Mega speichern kann? Die Schaltung ist überhaupt nur so aufgebaut um diese Funktion nutzen zu können. Ich meine, ich kann ja nicht jede Sekunde ins EEPROM schreiben (dann ist das Ding ja ruckzuck kaputt) und manuelles Speichern fällt auch weg. Wie kann man das lösen?
Eigentlich sollte das gehen. Du musst allerdings die Spannung für den Eingang, welcher die Spannung misst vor den Dioden abgreifen. Sonst misst du ja die Spannung an dem 470µ und der Elko hat sich schon halb entladen, wenn du merkst, dass die Spannung weg ist. Desshalb baut man ja die Dioden ein. Wenn die Spannung vor den Dioden weg ist, merkst du es sofort, da kein Strom durch die Dioden zurück fliesen kann. Der µC hat aber noch Saft bis der Elko leer ist. Ich hatte bei mir auch bemerkt, das der Interrupt mehrmals ausgelöst wird, wenn die Spannung verschwindet. Sowohl bei steigender als auch bei fallender Flanke. Liegt wohl daran, dass der Komparator am Schwellwert mehrmals hin und her flattert und jedesmal einen Interrupt auslöst. Das musst du SW-technisch abfangen. Sven
So hatte ich das schon. War aber zu nervös. Bei der jetzigen Schaltung ist es doch so, dass die Spannungsversorgung und der Sollwert 470u zur Verfügung haben (alles hinter der Diode) und der Istwert nur 10u hinter seiner Diode. Will sagen, der 10u C sollte doch ruckzuck leer sein und die Spannung am Ist-Pin weg.
@ He Gr (dare) >ist es doch so, dass die Spannungsversorgung und der Sollwert 470u zur >Verfügung haben (alles hinter der Diode) und der Istwert nur 10u hinter >seiner Diode. Wozu? > Will sagen, der 10u C sollte doch ruckzuck leer sein und >die Spannung am Ist-Pin weg. Rechung? Welche Last hängt an den 470uF und welche an den 10uF? C = I *t / U (Kondensatorkapazität) t = C * U / t MFG Falk
Immer dieser Falk. Hilft an alles Fronten. Der 10u Kondensator sollte ein bisschen abfedern damit nicht bei jedem kleinen Holperer der Interrupt ausgelöst wird. 470 hatte ich rumliegen und passte von der Bauform her noch auf die Platine ;) An dem Zweig der Ist-Spannung hängen drei Messchaltungen mit recht geringem Verbrauch und ein LCD-Display samt Beleuchtung mit etwa 200+ mA. An der Soll-Spannung (470u) hängt nur der Mega und ein Quarzoszi. Grüße!
Ich hatte gerade ne Idee bezüglich eines Fehlers in der Transistor-Beschaltung. Obs was damit zu tun hat, weiss ich nicht aber ich werds auf jeden Fall morgen als ersten gerade rücken.
Hallo, Zitat Autor: Sven Stefan (stepp64) Datum: 05.08.2008 16:40 ... Ich hatte bei mir auch bemerkt, das der Interrupt mehrmals ausgelöst wird, wenn die Spannung verschwindet. Sowohl bei steigender als auch bei fallender Flanke. Liegt wohl daran, dass der Komparator am Schwellwert mehrmals hin und her flattert und jedesmal einen Interrupt auslöst. Das musst du SW-technisch abfangen. Zitat ende Aus diesem Grund habe ich innerhalb des nicht-maskierbaren-Interrupts (automatisch höchste Priorität), am Ende der Abspeicherung der paar Byte ins EEPROM (bei mir ist es ein Betriebsstundenzähler) eine Endlosschleife. Da kann der COntroller auch keinen anderen Unsinn anstellen, da kein Austritt aus der ISR sattfindet und durch nichts anderes unterbrochen werden kann. Gruss dreg
Mannmannmannmannmann... Man sollte sich die Bauteile schon noch mal ansehen bevor man sie verbaut. Reichelt hatte mir die falschen Transistoren geschickt und ich habe sie einfach verbaut. Ich hab die Schaltung dem Bauteil angepasst und nun gehts. Echt nervig. Die haben mir echt jede Menge falsche Teile geschickt. Nicht nur die Transistoren - auch noch Quarzoszis in 16 statt 4Mhz und Dioden 1N4004 statt wie bestellt 1N4001. Die 4004er können aber doch nur mehr ab und tun hier sowieso, was sie sollen, oder? Jedenfalls tut jetzt alles, was es soll und ich bin happy. Grüße!
dreg wrote: > Aus diesem Grund habe ich innerhalb des nicht-maskierbaren-Interrupts > (automatisch höchste Priorität), am Ende der Abspeicherung der paar Byte > ins EEPROM (bei mir ist es ein Betriebsstundenzähler) eine > Endlosschleife. Da kann der COntroller auch keinen anderen Unsinn > anstellen, da kein Austritt aus der ISR sattfindet und durch nichts > anderes unterbrochen werden kann. > So hatte ich das Anfangs auch. Mir gefiel aber nicht, dass der µC sich aufhängt, wenn die Spannung nur mal kurz den Messwert unterschreitet, ohne dass sich der Elko komplett entlädt. Ich habe nun in die ISR ein 2 sekündige Warteschleife eingebaut. Der Elko hat sich nach ca. 1 Sekunde komplett entladen. Wenn der Strom also nur mal kurz weg ist, bleibt der Proc zwar zwei Sekunden stehen, macht aber danach normal weiter. @ He Gr: Ist mir bei R bis jetzt noch nicht passiert. Nur das falsche Datenblatt zu einem bei R gekauften Transistor hatte ich letztens bei R mal gefunden. Da waren doch tatsächlich die Anschlüsse vertauscht (BC338 und BC328). Die Dioden sollten passen. Sind halt für 400V und nicht nur für 100V.
Ich habe ein ähnliches Problem wie der OP, allerdings mit erschwerten Bedingungen. Vielleicht hat jemand einen Tip aus eigener Erfahrung. Zur Situation: Ein Tiny2313 wird über einen Schaltregler (24 Volt Eingangsspannung, MC34063 beschaltet wie in der Artikelsammlung) mit 5 Volt versorgt und bedient eine gemultiplexte LED-Ziffernanzeige, durchschnittlicher Strombedarf etwa 60 mA. Über den Komparator soll ein Interrupt ausgelöst werden, um ein einziges Datenbyte zuverlässig im EEPROM zu speichern, wenn die Betriebsspanung abfällt. Aber: Das Display verbraucht viel Strom, und würde einen Puffer-Elko (oder den am Ausgang des Schaltreglers) sehr schnell entladen. Kann jemand abschätzen - da ich noch keinen aufgebauten Prototypen habe, um das auszuprobieren - ob es möglich ist, über Spannungsteiler ein Einbrechen der 24 Volt zu erkennen, in der ISR sofort das Display abzuschalten (was nicht wirklich sofort geht, schlimmstenfalls befindet sich der Tiny gerade in einer anderen ISR, um das Display zu aktualisieren) und mit der Restladung des 5V/100uF Elkos ein Byte sicher in den Speicher zu schreiben? Das Display hardwaremäßig zu entkoppeln ist problematisch, da gemeinsame Kathode.
@ Sebastian (Gast) >werden, um ein einziges Datenbyte zuverlässig im EEPROM zu speichern, >wenn die Betriebsspanung abfällt. Aber: Das Display verbraucht viel >Strom, und würde einen Puffer-Elko (oder den am Ausgang des >Schaltreglers) sehr schnell entladen http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren MFG Falk
Danke! Die Formel habe ich gesucht, wußte aber nicht, wie ich das als Suchbegriff nennen sollte.
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.