Hallo, ich besitze das AVR-NET-IO von Pollin mit dem ATmega32. Ich möchte gerne eine Impulsschaltung bauen, die es mir ermöglicht eine Pumpe in vorgegebenen Zyklen ein- und auszuschalten. Bsp: durch ein Poti wird vorgegeben wie lange die Impuls- und die Pausendauer sein soll. Beides ist immer gleich lang. Praktisch: Ich habe ein vorgegebenes Intervall von einer Minute. Dieses Intervall lasse ich dann beliebig oft Ablaufen, um eine größere Zeit zu erzeugen. Die Intervalle sollen nur ganze Minuten umfassen. So weit der Plan. Ich habe mir überlegt, dass es am einfachsten wäre, den Controller sinnlos zählen zu lassen. Allerdings kann er dann nebenher keine Aufgaben mehr erledigen, was für die Anwendung sehr wichtig ist. Jetzt meine Frage an euch, wie programmiere ich so einen Interrupt und funktioniert das überhaupt so, wie ich mir das vorstelle? Bin für jede Hilfe dankbar. Ich programmiere in C und ich möchte, wenn es geht, keinen fertigen Code haben. Danke :)
Jan Phillip schrieb: > Jetzt meine Frage an euch, wie programmiere ich so einen Interrupt und > funktioniert das überhaupt so, wie ich mir das vorstelle? Für sowas gibt es Timer. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer mfg.
Jan Phillip schrieb: > ich besitze das AVR-NET-IO von Pollin mit dem ATmega32. Schön, und welche Software benutzt du für diese Hardware? Das wäre eine nicht ganz unwesentliche Information, insbesondere unter Berücksichtigung der Tatsache, daß du ja die Software offensichtlich mit einer eigenen Funktion erweitern möchtest, findest du nicht? > Ich möchte gerne eine Impulsschaltung bauen, die es mir ermöglicht eine > Pumpe in vorgegebenen Zyklen ein- und auszuschalten. > > Bsp: durch ein Poti wird vorgegeben wie lange die Impuls- und die > Pausendauer sein soll. Beides ist immer gleich lang. Naja, "Impulsschaltung" ist vielleicht nicht so ganz der treffende Begriff, aber die weiteren Ausführungen sind so geartet, daß man klar genug erkennen kann, was du erreichen möchtest. Kurzfassung: einen Analogwert einlesen (Potistellung) und damit die Periode einer auszugebenden Rechteckfrequenz einstellen. Kein besonders unübliche Aufgabe. Die einzige verbleibende Frage: Wozu brauchst du hier ein AVR-NetIO? Also inwiefern ist hier eine Kommunikation über's Netz involviert? Ich sehe nämlich erstmal keine.
Hallo Jan, wäre eine Ampelsteuerung mit ihren verschiedenen Phasen für rot, rot/gelb, grün, damit vergleichbar?
c-hater schrieb: > Schön, und welche Software benutzt du für diese Hardware? Das wäre eine > nicht ganz unwesentliche Information, insbesondere unter > Berücksichtigung der Tatsache, daß du ja die Software offensichtlich mit > einer eigenen Funktion erweitern möchtest, findest du nicht? Nein, weil auf dem Controller nur mein eigenes Programm ist, ich habe zuvor ein Image gezogen. > Kurzfassung: einen > Analogwert einlesen (Potistellung) und damit die Periode einer > auszugebenden Rechteckfrequenz einstellen. Danke bei meiner Wortfindungsstörung :) > Die einzige verbleibende Frage: Wozu brauchst du hier ein AVR-NetIO? > Also inwiefern ist hier eine Kommunikation über's Netz involviert? Ich > sehe nämlich erstmal keine. Die Frage lässt sich sehr leicht beantworten: Und zwar habe ich das Board gekauft des Controllers wegen. Die Platine war dann der Bonus dabei. Der Controller soll später noch eine Ladeüberwachung übernehmen, diese soll dann geloggt werden und im Netzwerk abgelegt werden. @ Uwe S. Ich bin mir in diesem Falle nicht sicher, der Unterschied zwischen einer Ampelschaltung und der von mir gewollten, ist der, dass mein Intervall variabel ist, die Grundidee müsste aber die gleiche sein. Wie kommst du drauf? Hast du schon eine fertig oder Interesse an einer?
Jan Phillip schrieb: > Nein, weil auf dem Controller nur mein eigenes Programm ist, ich habe > zuvor ein Image gezogen. [...] > Der Controller soll später noch eine Ladeüberwachung übernehmen, diese > soll dann geloggt werden und im Netzwerk abgelegt werden. Also willst du irgendwann doch über's Netz kommunizieren. Da du offensichtlich schon Probleme hast, so einfache Aufgaben wie das Einlesen eines Analogwertes und die Ausgabe eines Rechtecksignals zu lösen, wäre es sehr sinnvoll, von Anfang an auf Basis einer Software zu entwickeln, die später auch die Netzwerkkommunikation übernehmen kann, denn du wirst das heute und wohl auch in den nächsten zwei Jahren sicher nicht alleine hinbekommen. Also z.B. Ethersex als Basissoftware. Das hat dann gleich noch folgende Vorteile bezüglich deines Nahziels: 1) Routinen zur ADC-Konfiguration und zum Auslesen von ADC-Werten sind bereits enthalten. Dein Programm braucht also nur auf die entsprechenden Funktionen zuzugreifen, um die Potistellung einzulesen. 2) Routinen zur Konfiguration der Ausgänge und zur Ausgabe sind bereits enthalten. Dein Programm braucht also nur auf die entsprechenden Funktionen zuzugreifen, um einen Ausgang ansteuern zu können. 3) Es gibt bereits einen systemweiten "heartbeat", in den du dich bloß als Callback einklinken mußt, um regelmäßig irgendwas zu tun. Im konkreten Fall also (in Pseudocode) folgendes: HalbPeriode = Potiwert()*Skalierungsfaktor+MindestHalbperiode Zähler += 1 Wenn Zähler>HalbPeriode ( ToogleAusgabepin() Zähler = 0 ) Und in tatsächlich funktionsfähigem C-Code (und etwas Ethersex-Metacode) ist das Ergebnis auch wirklich nicht viel länger als diese paar Zeilen Pseudocode. Wenn man erstmal ein funktionsfähiges Buildsystem für Ethersex hat, ist eine Erweiterung dieser geringen Komplexität in weniger als einer Minute eingebaut.
Ich finde es ja gut, wenn Aussagen getätigt werden, die man sich lieber gekniffen hätte. Wenn du gelesen hättest, dann wüsstest du, dass das Problem nicht beim Einlesen einen Analogwertes liegt. Und selbst wenn es zwei Jahre dauert?! Na und? Ich will das selber schreiben, aber aufgrund deiner Ausführungen hast du sicherlich schon zu Beginn deiner Arbeiten mit Mikrocontrollern alle Funktionen beherrscht. Ich stehe halt noch am Anfang, heißt aber nicht, dass ich es nicht lernen kann. Ich werde es weiterhin so versuchen, aber auch die von dir vorgeschlagene Software werde ich in Betracht ziehen.
Jan Phillip schrieb: > Wenn du gelesen hättest, dann wüsstest du, dass das Problem nicht beim > Einlesen einen Analogwertes liegt. sondern bei deinem Verständnis über Timer. Links wurden dir ja schon gegeben FAQ: Timer [[http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer]] > Und selbst wenn es zwei Jahre dauert?! Na und? Ich will das selber > schreiben, Ja, dann machs! > aber aufgrund deiner Ausführungen hast du sicherlich schon zu > Beginn deiner Arbeiten mit Mikrocontrollern alle Funktionen beherrscht. Nö. Aber er hats gelernt. Und das ist so passiert, dass er sich auf seinen Hintern gesetzt hat und geübt hat.
Ich bin dabei. Allerdings muss das ganze neben der Arbeit herlaufen, also wird's länger dauern. Das ist wahr, dass er's gelernt hat, und das will ich auch.
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.