Forum: Mikrocontroller und Digitale Elektronik Umsetzbarkeit und Anregungen für Atmega-Projekt


von Mario W. (enceladus)


Lesenswert?

Hallo zusammen,
ich plane einen "kleinen" Aufbau mit einem Atmega Mikrocontroller 
(bisher plane ich die Verwendung des Atmega16PU).

Ich möchte mich daran versuchen folgende Bedingungen zu programmieren 
und erhoffemir hierInformationen zur Umsetzbarkeit und eventuell auch 
Anregungen für gewisse Funktionen. Sollte ich dann mit Eurer Hilfe den 
Code komplett "auf die Beine" stellen können wird dieser natürlich auch 
gepostet.

Zu meiner Idee:

Ich habe die Bits 0....7 diese setzte ich Anfangs alle auf logisch 1.

Auf einen Tastendruck hin (jedes Bit hat eine Taste an einem Eingang 
zugewiesen) kann eine Funktion getriggert werden die sich auf eine PWM 
auswirken soll.

Wenn nach dem zugehörigem Tastendruck das Bit "n" = 0 ist müsste über 
Interupts des Timers in einer Schleife runtergezählt werden bis eine 
bestimmte Zeit abgelaufen ist (40s).

Nach meiner Überlegung muss ich mir Anhand der Zeiten des Timers 
ausrechnen wie weit ich runterzählen muss um eine "Ruhezeit" zum 
abfeuern der Funktionen, die meinen Vorstellungen entspricht, zu 
gewährleisten.

Im Mikrocontroller umzusetzten wären also:

- Ein dauerhaft laufender Timer (kein PRoblem soweit)
- 8 zu jedem Zeitpunkt überwachte Bits
- 8 aufrufbare Funktionen die jederzeit bei "Abruf" prüfen müssen ob das 
zugehörige Bit 0 oder 1 ist und die dann auch jeweils paralell 
ausgeführt werden.
- 8 Counter die bei Ablauf je ein Bit auf 1 setzen und bei einer 
negativen Flanke des Bits ihren "Stand" wieder auf einen Wert setzten 
der heruntergezählt wird und ca. 40 Sekunden entspricht.
- die PWM
(-evtl. zu jeder wieder "verfügbaren" Funktion eine Indikator LED an 
einem Ausgang)

Ist dieser Umfang überhaupt umsetzbar? Am meissten Gedanken mache ich 
mir dabei im die Timer Funktion, da diese ja durch Counter im weitesten 
Sinne nur "dupliziert" werden würde.

Ein alternativer Ansatz für die "Freigabe" der Funktionen wäre einen 
Counter zu haben der "durchtaktet". und bei einem Abfeuern einer 
Funktion den aktuellen Wert zu sichern und das "Freigabebit" über einen 
Vergleichsoperator mit einer festgelegten Differenz zu setzen.

Ich würde mich sehr freuen wenn Ihr mir ein paar Anregungen und eine 
grundsätzliche Aussage zur Umsetzbarkeit geben könntent und mich 
natürlich auch in eine sinnvolle Richtung der Umsetzung lenkt.

Zum Beispiel Anhand der Vor- und Nachteile der Timer und 
Countervarianten.

Bei weiteren Fragen zu der Idee oder den Hintergründen werde ich 
natürlich gerne Auskunft geben.

Mit freundlichen Grüßen

Enceladus

von STK500-Besitzer (Gast)


Lesenswert?

Was soll das werden?

von Düsendieb (Gast)


Lesenswert?

Mario W. schrieb:
> bis eine
> bestimmte Zeit abgelaufen ist (40s).

Bei diesen Zeitrahmen ist es kein Problem die Counter per Software zu 
realisieren.

Mach mit einem Timer ein Wackelbit von 0,1 sec und zähle in 
Hauptprogramm die Impulse.

Die Überwachung der Eingänge läuft immer im Hauptprogramm.

Was soll die PWM machen? Was hängt daran? Wie schnell soll die sein?


Axel

von Mario W. (enceladus)


Lesenswert?

Vielen Dank schon einmal für den Hinweis mit dem Wackelbit.

An der PWM soll ein MOSFET hängen der einen DC Motor mit seiner Spannung 
versorgt.
Ich denke ich werde hier bis ca 9V gehen. Aktuell läuft der besagte 
Motor mit 4,5 V - ist aber meines Wissens nach für mehr ausgelegt 
(Geschwindigkeit eben druch niedrige Versorgungsspannung herabgesetzt).

@STK500-Besitzer: Ein Interface mit 4 Plätzen und je 2 Tastern. Jeder 
Taster kann einmal alle 40 Sekunden betätigt werden und bewirkt ein 
Herauf- oder Herabsetzten der am Motor anliegenden Spannung.

Ich bin gespannt auf weitere Ansätze und werde heute, gegen späten 
Abend, erste versuche des Programmaufbaus angehen. Sobald sich da etwas 
(hoffentlich) vorzeigbares abzeichnet lasse ich es euch wissen.

Mio

von MaWin (Gast)


Lesenswert?

> die dann auch jeweils paralell ausgeführt werden.

Es gibt keine echte zeitliche Parallelität auch einem 1-Prozessor Chip.

Nur zeltlich so schnell nacheinander, daß du es nicht merkst.

Das setzt voraus, daß die Funktion zeitlich so kurz ist,
oder daß die mehreren Funktionen zeitlich so verschachtelt
werden können, daß du es nicht merkst.

Alles andere ist supersimpel und selbst für den kleinsten ATmega kein 
Problem.

von STK500-Besitzer (Gast)


Lesenswert?

Mario W. schrieb:
> @STK500-Besitzer: Ein Interface mit 4 Plätzen und je 2 Tastern. Jeder
> Taster kann einmal alle 40 Sekunden betätigt werden und bewirkt ein
> Herauf- oder Herabsetzten der am Motor anliegenden Spannung.

Ist also nur eine Frage der Auflösung und damit der Variablengröße.

von pompete (Gast)


Lesenswert?

Warum baust und programmierst Du die Sache nicht einfach?
Wie andere User es schon erwähnten , ist hier nur Anfängerwissen gefragt 
...Beiträge für den Umgang mit Timern findest Du über die Suchfunktion 
massig.....was ist also Deine Frage?

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Mario W. schrieb:
> ich plane einen "kleinen" Aufbau mit einem Atmega Mikrocontroller
> (bisher plane ich die Verwendung des Atmega16PU).

Warum dieses "40-Pin-Schlachtschiff"? :-)

Mal abgesehen davon, dass der ATmega16 veraltet ist und ich eher den 
Nachfolger ATmega164A empfehlen würde, für deinen Zweck tut es ein 
kleiner ATtiny84A mit 14 Pins genauso.

von Mario W. (enceladus)


Lesenswert?

@pompete: Weil mir ein paar Ansätze (Eben Anfängerwissen) gefehlt hat 
und ich wohl zu kompliziert gedacht habe. - Das kommt davon wenn man nur 
mal nebenher von unterwegs eine fixe Idee in Foren wirft...

Die Beschreibungen zur Umsetzung habe ich nun (Herzlichen Dank dafür).

Das 40 Pin Schlachtschiff soll es sein weil davon noch 2 herumlagen und 
ich nicht erst los muss welche kaufen oder bestellen ;)
Mal sehen ob mein erstes Programm überhaupt was wird...

Vielen Dank für die vielen und schnellen Antworten!

MfG

Mio

von Düsendieb (Gast)


Lesenswert?

Mario W. schrieb:
> Mal sehen ob mein erstes Programm überhaupt was wird...

Versuch nicht Alles auf einmal zu erschlagen. Mache mehrer kleine 
Programme, in denen Du jede Problemstllung einzeln löst.

1. Taster abfragen und davon abhängig LED leuchten lassen.
2. LED blinken lssen
3. Mit PWM eine LED dimmen
4. ......

http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte

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.