Technik > Tech-Talk Design & Konzepte

Microcontroller Kanal-Steuerung: Einstellungen Speichern?

<< < (3/4) > >>

Andy:
Hi,

ich würde dem µC einen dicken Elko verpassen, damit er etwas "nachläuft" und als "Trigger" die Heizspannung hernehmen - alle 0,5s mal gucken und wenn weg, dann speichern...


Gruß

Andy

Hank from hell:
Hallo,


--- Zitat ---ich würde dem µC einen dicken Elko verpassen, damit er etwas "nachläuft" und als "Trigger" die Heizspannung hernehmen - alle 0,5s mal gucken und wenn weg, dann speichern...
--- Ende Zitat ---


Ich werds wie gesagt etwa so machen wie MetalBasti das auch gemeint hat (das hier kommt ja auch auf's selbe raus). Als "Trigger-Spannung" werde ich die mittels Zener-Diode auf 5V begrenzte Heizspannung nehmen (nur die Spannung die zum µC geht wird begrenzt...).

Die Überprüfung an sich werde ich aber per Interrupt machen. Beim Atmega32 kann ich den externen Interrupt 2 (INT2) dafür nehmen, den hab ich noch frei und der lässt sich so einstellen, dass er auf fallende Flanken reagiert. Somit sollte mein Speichermechanismus ziemlich direkt ansprechen (ich glaube 4 Takte dauert es bis alles auf dem Stack liegt und die Interrupt Routine "anspringt" ;)).

Problematisch könnte es nur noch werden, wenn die Spannung zu schnell abfällt, so dass der externe Interrupt die fallende Flanke nicht mehr erkennt, dann müsste ich auf INT0 oder INT1 (die anderen externen Interrupts) umverkabeln, die können auch Zustandsgesteuert reagieren. Aber das halte ich für eher unwahrscheinlich...

Softwäremäßig hab ich schon alles am Laufen. Ich werde es halt mal so ausprobieren und dann mal schreiben was bei raus gekommen ist :)




Gruß,

Johannes

Stephan G.:
Hi, Folks!

Ehrlich gesagt kann ich nicht nachvollziehen, wieso Du lieber in Hardware investierst, die zusätzliche Interrupt-Programmierung auf Dich nimmst, nur um das direkte Speichern zu umgehen?!!!

Ich sage Dir einen 20 mal höheren Aufwand voraus - inklusive der Ungewissheit, ob Deine Hardware-Interrupts so funktionieren, wie Du es Dir vorstellst ... Vergiss es!!!

Stell den Kanal ein, speicher die Daten im EEPROM und gut iss. Außerdem kann Dir die Kiste dann ruhig mal unkontrolliert abschmieren, ohne dass Du "Datenverlust" hast...  ;)

Dafür gibts ja das EEPROM - darin sollen minimale Datenaufkommen gesichert werden können!!
Wenn eine Speicherung en Block gewünscht wäre, wärs ja ein Flash ...

PLAY LOUD!!  :guitar:

Andy:
Außerdem entgehen Dir noch die "Show"-Effekte beim Einschalten, mit denen man immer so gut das "noch-am-Leben-Sein" des µCs überprüfen kann...

Hank from hell:
Hallo,


--- Zitat ---Ehrlich gesagt kann ich nicht nachvollziehen, wieso Du lieber in Hardware investierst, die zusätzliche Interrupt-Programmierung auf Dich nimmst, nur um das direkte Speichern zu umgehen?!!!

Ich sage Dir einen 20 mal höheren Aufwand voraus - inklusive der Ungewissheit, ob Deine Hardware-Interrupts so funktionieren, wie Du es Dir vorstellst ... Vergiss es!!!

Stell den Kanal ein, speicher die Daten im EEPROM und gut iss. Außerdem kann Dir die Kiste dann ruhig mal unkontrolliert abschmieren, ohne dass Du "Datenverlust" hast...  Wink
--- Ende Zitat ---


Ich will die Einstellungen allein deshalb nicht bei jedem Schalten im EEPROM speichern, weil für jede Zelle nur 10.000 Beschreibungen garantiert sind... Gut, jetzt kann man sagen, dass reicht ja dicke, aber ich mag den Gedanken nicht, dass der EEPROM irgendwann verschlissen ist, nur weil ich zu oft am Taster rumgedrückt hab ;)  Wenn man die Zellen des EEPROM natürlich nach 10.000x schreiben immer durchwechselt könnte man das umgehen. Aber das ist irgendwie auch sinnlos. Außerdem finde ich es wie gesagt sehr ineffizient dauernd in den Speicher zu schreiben, wo eine Beschreibung doch genugen würde. Hoffe jetzt kannst du's nachvollziehen ;)


Ein hoher Hardware Aufwand ist das ja auch nicht... Als "Überwachungsspannung", die ich in meinen Interrupt speise, nehme ich ja die runtergeregelte Heizspannung. Das ist blos eine Z-Diode und ein Widerstand mehr. Dann noch ein Kondensator der die µC Versorgungsspannung liefert wenn die Heizspannung weg ist. Das wäre alles an Hardware.

Softwaremäßig ist es genauso einfach. Gut, ich sollte vielleicht erwähnen, dass ich das ganze in C mache und nicht direkt in Assembler. Im Simulator funktioniert meine Interruptroutine auch wunderbar, und ich sehe keinen Grund warum es auf der Hardware nicht auch so funktionieren soll (zumal es im Datenblatt auch alles so beschrieben ist wie ich's gemacht hab).


Ob's tatsächlich geht wird sich zeigen. Aber wenn ja, dann war's viel einfacher als gedacht ;)


Gruß,

Johannes

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln