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
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
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
> 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.
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.
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?
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.
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.