Forum: Mikrocontroller und Digitale Elektronik Bitte um Hilfe bei Tiny13 Programmierung


von Beginy (Gast)


Lesenswert?

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

von Sinusgeek (Gast)


Lesenswert?

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.

~

von Analog (Gast)


Lesenswert?

Wird das eine Batterieüberwachung ? Wenn ja, dann würde ich Dir eine 
andere Strategie vorschlagen.

von Beginy (Gast)


Lesenswert?

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....)

von Sinusgeek (Gast)


Lesenswert?

> 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.

~

von Frank L. (hermastersvoice)


Lesenswert?

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

von Beginy (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.