Hallo Bin absoluter Neuling in Sachen Microcontroller und habe mir von Franzis das Lernpaket Mikrocontroller mit dem Tiny 13 gekauft. Soweit ich das bis jetzt beurteilen kann, scheint der Tiny 13 für die Lösung der achfolgenden Aufgabe geeignet zu sein. Allerdings fürchte ich, dass ich noch ein paar Wochen brauche , bis ich zu einem Ergebnis komme, wobei ich mir auch nicht sicher bin, ob ich mich in Assembler oder lieber in BASCOM einarbeiten soll (etwas Basic habe ich vor langer Zeit mal gemacht). Ich könnte mir vorstellen, dass ein Profi unter Euch diese Aufgabe in wenigen Minuten lösen könnte und wäre für jede Hilfe dankbar. (evt. Link?) Aufgabenstellung: Ein Sensor liefert eine Spannung Ue zwischen 2 und 3 VDC. Diese Spnnung Ue soll auf einen Analogspannungseingang eines Tiny 13 gelegt werden . Während einem High- Signal an einem Digital- Eingang E1 soll der Wert der aktuellen Eingangsspannung Ue als Referenzspannung Uref gespeichert werden (EEPROM). Nachdem das High- Signal des Digital- Eingangs E1 wieder auf Low gegangen ist, soll fortlaufend die aktuelle Eingangsspannung Ue gemessen und mit dem gespeicherten Referenzwert Uref verglichen werden. Ein Digitalausgang A1 soll High sein und bleiben, solange die Eingangsspannung Ue kleiner oder gleich Uref ist und soll Low werden, wenn Ue größer als Uref. ist. Der Wert von Uref muß permanent gespeichert bleiben, auch nach einer Unterbrechung der Stromversorgung. Nach der Wiederkehr der Versorgungsspannung soll der Messvorgang automatisch fortgesetzt werden, d.h. Ue fortlaufend mit Uref verglichen und je nach Ergebnis A1 High oder Low gesetzt werden. Gruß Beginy
Ist die Aufgabestellung "höhere Gewalt" oder kann man darüber noch diskutieren? Ich meine z.B. den H-Pegel an E1. Dem Verhalten nach ist das ja ein "Lerntaster" zum "Lernen" (merken im EEP) des Referenzwertes. Taster schaltet man ohne Not nicht nach Vcc, sondern nach GND, denn dann kann man die internen PullUp-Widerstände nutzen. ~
Wird das eine Batterieüberwachung ? Wenn ja, dann würde ich Dir eine andere Strategie vorschlagen.
Danke für Eure schnellen Reaktionen. @ Sinusgeek: 1) Nein, muß nicht unbedingt H- Pegel sein an E1, könnte auch L-Pegel sein. 2) Ja, ist richtig: Sollte ein Lerntaster (= teach-in) sein. @ Analog: Nein , ist keine Batterieüberwachung, sondern eine Grenzwertüberwachung für einen Sensor- (Spannungs-) wert. Irgendwelche Vorschläge ? - Gruß Beginy (PS. Weiß nicht , ob das hier üblich ist, aber für einen funktionierenden Vorschlag hätte ich natürlich eine kleine Belohnung: Derzeit ein "Traveller- Set" für Notebooks, bestehend aus Mini-USB- Maus und Mini- USB- Hub in einem Reise- Etui....)
> Irgendwelche Vorschläge ?
Ja sicher...
- Timer-Interrupt mit 10ms bis 20ms Aufrufabstand zum Entprellen des
Tasters und Abfragen des ADC. Darin auch ADC-Wert mit Wert im EEP
vergleichen und Ausgang schalten, evtl. eine Hysterese einbauen, um
Klappern zu vermeiden. Falls Taster aktiv war, ADC-Wert mit EEP-Wert
vergleichen und bei Ungleichheit ins EEP schreiben.
- Mainloop: Sleep...
- Reset/Init: Vorbereitung der Ports, Aktivieren von Timer und ADC...
Falls das Teil schneller als im 20ms-Takt reagieren soll, dann noch
ADC-Interrupt nutzen oder den ADC in der Mainloop pollen.
~
Ich hab mal was sehr Ähnliches programmiert. Das Ding sollte ein PWM-Ventil für einen Turbolader steuern. Man kann mit einem Poti einen Wert einstellen der dann als PWM rausgeht. Ein kurzer Tastendruck schaltet zwischen Potisteuerung und gespeichertem Wert um, ein langer Tastendruck speichert den aktuellen Potiwert als neuen Speicherwert. Wenn dir damit geholfen wäre würd ich mal danach suchen. War auch auf einem Tiny13 realisiert und in Assembler geschrieben. bye Frank
Hallo Frank Danke für Dein Angebot. Wenn es mir gelingt, Dein Programm meiner Funktion anzupassen, dann werde ich wohl auch schon das know how haben, das komplett zu programmieren.... Gruß Beginy
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.