Hallo, ich möchte einen AVR aller x Minuten aufwecken und für die Dauer von einigen Millisekunden 5V-Impulse zählen. Leider sind meine externen Interrupts schon verbraucht. Meine Idee wäre nun ein Schieberegister zu verwenden. Allerdings gibt es verschiedene Typen und ich bin da gerade etwas am zweifeln ob das der richtige Weg ist. 74HC595 ist nicht geeignet weil der Impulse vom uC in parallel Umwandelt .. Ich suche einen Baustein der die Impulse zählt und bei dem der Zählerstand dann per I2C o. SPI abrufbar ist.. Gibt es da Empfehlungen? Wie würdet ihr das machen? MfG, Georg
Beitrag #7475293 wurde vom Autor gelöscht.
Hey, es soll der ATmega 16A verwendet werden. 2 Eingänge wären schön 4 wären ganz toll. Konkret geht es um einen kapazitive Feuchte Sensor: https://www.ramser-elektro.at/shop/bausaetze-und-platinen/giesomat-kapazitiver-bodenfeuchtesensor-erdfeuchtesensor-mit-beschichtung/ klar könnte ich versuchen die OCxx Pins frei zu lassen aber da ich eh I2C auf der Platine nutze wäre hier ein entsprechender IC schön. Eine Weitere Problematik bei den Frequenzsignalen könnte die Leitungslänge darstellen, 2m bis 6m werden das Signal dämpfen oder die Frequenz verändern, hier hoffe ich durch eine Live Kalibrierung im Gewächshaus diese Abweichung zu kompensieren.
Georg schrieb: ... > für die Dauer von einigen Millisekunden 5V-Impulse zählen. > Leider sind meine externen Interrupts schon verbraucht. Impulse zählt man üblicherweise nicht mit einem Interrupt-Eingang, sondern mit dem externen Eingang eines Counter/Timers. Und wenn es unbedingt ein Interrupt sein muß, dann nimmt man halt einen neueren AVR mit Pinchange-Interrupt. So wie es klingt, ist das ein altes Fossil. Welches denn?
Axel S. schrieb: > sondern mit dem externen Eingang eines Counter/Timers. Ja habe ich gerade realisiert :-) > Fossil. Welches denn? Ich habe noch ein ganz paar alte ATmega 16A daheim. Die würde ich gern für mein Hobby Projekt nutzen weil die einfach zu programmieren sind und völlig ausreichen - und nun einmal auch da sind.
Habe gehofft es gibt mehrkanalige Zähler-ICs mit I2C ... Habe aber bei mouser keine gefunden, nur Zähler ohne i2c --Also einen kleinen uC dafür verwenden? Attiny XY als Zähler u. per I2C abfragen?
Oder mehrkanaligen Frequenzteiler und dann per Multiplexer (über I2C steuerbar!?) die einzelnen (runtergeteilten) Signale abfragen? Die Zählereingänge müssen nicht zeitgleich abgefragt werden. Also als Schleife sähe das im uC Code so aus in meiner Vorstellung: uC Schläft .. Aufwachen uC [ anderer Code ] wählen Kanal Multiplexer Impulse zählen Nächster Kanal Multiplexer ... Auswertung [ anderer Code ] uC Schläft ..
Georg schrieb: > es soll der ATmega 16A verwendet werden. Warum muss es unbedingt der sein? Der ist weder besonders günstig noch besonders gut ausgestattet noch sonst in irgendeiner Hinsicht vorteilhaft. Nimmst du was (etwas) moderneres (und weitgehend abwarts-kompatibles) wie etwa Mega644(P) oder Mega1284(P) löst sich dein Problem ganz einfach. Du musst in der bestehenden Software maximal ein paar Register- oder Bitnamen anpassen und die Sache läuft auch auf dem neuen. Physisch läßt er sich auch 1:1 austauschen. Danach hast du dann alle Freiheiten für deine zusätzliche Funktionalität. Insbesondere natürlich die Fähigkeit, für jeden GPIO-Pin einen Interrupt bei Änderung des Levels generieren zu können.
C-hater schrieb: > Warum muss es unbedingt der sein? Der ist weder besonders günstig noch > besonders gut ausgestattet noch sonst in irgendeiner Hinsicht > vorteilhaft. C-hater, Du hast völlig Recht, vielleicht sollte ich mich nicht so auf diesen Typ versteifen, nur weil er eben da liegt. Hab halt für Hobbysachen den Fetisch das ich gern uC's im DIL Format nehme - ist so ne Macke xD Hatte insgeheim noch auf eine Antwort gewartet wie: "..nimm doch einfach den 4-fach Zähler 74xxx, der ist per Bus auslesbar..." ;-D Aber wird wohl auf nen anderen uC hinauslaufen, was soll der Krampf
Georg schrieb: > Du hast völlig Recht, vielleicht sollte ich mich nicht so auf diesen Typ > versteifen, nur weil er eben da liegt. > Hab halt für Hobbysachen den Fetisch das ich gern uC's im DIL Format > nehme Auch die von mir genannten vier gibt es allesamt im 40Pin-DIL-Package. Das dürfte also nicht das Problem sein. Schon eher, dass sie aktuell wirklich alle unverschämt teuer sind... Der Preis steht wirklich in keinem vernünftigen Verhältnis zur Leistung mehr. Ich würde sowas auch nicht kaufen (hab aber noch einige aus dieser Auswahl rumliegen, weswegen für mich diese Lösung die naheliegendste war)... > Aber wird wohl auf nen anderen uC hinauslaufen, was soll der Krampf Nicht unbedingt. Der Mega16A hat noch zwei Sachen zu bieten, die man als "externen Interrupt" benutzen (eigentlich: mißbrauchen) könnte. Wenn Timer1 in deiner Anwendung bisher unbenutzt ist, kannst du du dessen Capture-Interrupt benutzen. Und wen der AnalogComparator bisher unbenutzt ist, kannst du dessen Interrupt benutzen. > Hatte insgeheim noch auf eine Antwort gewartet wie: > "..nimm doch einfach den 4-fach Zähler 74xxx, der ist per Bus > auslesbar..." ;-D Es ist immer Unsinn, an zusätzliche Hardware zu denken, bevor man die Möglichkeiten des µC selber vollständig ausgenutzt hat.
Georg schrieb: > Hatte insgeheim noch auf eine Antwort gewartet wie: > "..nimm doch einfach den 4-fach Zähler 74xxx, der ist per Bus > auslesbar..." Gibts nicht. Zu der Zeit als Zähler wie 74x193 oder 74x590 designed wurden, gab es I²C oder SPI gerade mal in den wildesten Träumen irgendeines Ingenieurs. Das paßt nicht zusammen. Weil ich gerade den 74x590 angesprochen habe: das ist ein 8-Bit Zähler mit Latch und parallelen Ausgängen. Den kannst du natürlich an ein Schieberegister koppeln und per SPI auslesen. Aber am Ende wird das Drahtverhau größer als dein µC. Nein. Wenn du das nicht in Software erschlagen kannst, dann kannst du auch ein CPLD nehmen. Ist aber wieder was zu programmieren.
Axel S. schrieb: > Georg schrieb: >> Hatte insgeheim noch auf eine Antwort gewartet wie: >> "..nimm doch einfach den 4-fach Zähler 74xxx, der ist per Bus >> auslesbar..." > > Gibts nicht. Zu der Zeit als Zähler wie 74x193 oder 74x590 designed > wurden, gab es I²C oder SPI gerade mal in den wildesten Träumen > irgendeines Ingenieurs. Das paßt nicht zusammen. Ja, habe ich befürchtet ... obwohl ein derartiger IC sicher seine Abnehmer hätte (?) Na ich hoffe ein Signal mit 200 kHz bekommt man mit dem ATmega noch gelesen von der Geschwindigkeit her. Auf meine 4 Eingänge werde ich mit den 2 freien OCx und dem "Missbrauch" das Timers wie C-Hater erwähnt hat werde ich wohl hinkommen.
Beitrag #7475712 wurde vom Autor gelöscht.
S. L. schrieb im Beitrag #7475712: > Falls C-haters Erläuterung nicht ganz verstanden wurde, hier der > Originaltext: > ACIC: When written logic one, this bit enables the Input Capture > function in Timer/Counter1 to be triggered by the Analog Comparator. The > comparator output is in this case directly connected to the Input > Capture front-end logic ... Ähem, nö. Das war ganz und garnicht, was ich sagen wollte. Das ist eine Möglichkeit, das AC-Event an den Timer1 umzuleiten. Dafür würden aber AC und Timer1 benötigt. Ziemlich kontraproduktiv. Nö, der AC hat einen eigenen Interrupt. Den kann man direkt nutzen, ohne ihn über den Timer1 umzuleiten. Und der Timer1 wiederum hat einen eigenen Pin für das capturen, der braucht nicht das umgeleitete AC-Event als Input Außerdem: Ich schrieb: > Wenn Timer1 in deiner Anwendung bisher unbenutzt ist . Es sind (je nach bisheriger Nutzung des Timers) auch Szenarios denkbar, in denen die Nutzung der Capture-Funktionalität als "externer Interrupt" sogar zusätzlich möglich ist, ohne die bestehende Funktionalität zu stören. > > Und wenn ich ihn weiter ergänzen darf: kompatibel gibt es (neben 644 und > 1284) auch noch ATmega164 und 324.
> Ich suche einen Baustein der die Impulse zählt
Einfach noch eine Z80CTC an den Bus tackern.
Ja, so einfach war das frueher™. :)
Georg schrieb: > 2m bis 6m werden das Signal dämpfen oder die Frequenz verändern Eine Leitung kann das Signal dämfen und erheblich verzerren, aber ganz sicher nicht deren Frequenz ändern.
Georg schrieb: > Habe gehofft es gibt mehrkanalige Zähler-ICs > mit I2C ... Gibt es, zum Beispiel Atmega16 😀 Du musst sie nur passend programmieren.
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.