www.mikrocontroller.net

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


Autor: Beginy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

~

Autor: Analog (Gast)
Datum:

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

Autor: Beginy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....)

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

~

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Beginy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.