Forum: Mikrocontroller und Digitale Elektronik I2C oder SPI Counter


von Burny (Gast)


Lesenswert?

Hallo erstmal!

Ich bin auf der Suche nach einem I2C oder SPI Counter finde aber nichts 
in der Richtung. Mein Lieblingsverein Maxim hätte ne RTC (DS1372) die n 
Binärfomat (jo binär is immer aber halt nicht das HH:MM:SS sondern n 
Zahlenwert) ausgibt. Dummerweise inkrementiert die erst nach 32xxx 
Impulsen - sehr ungeschickt für  meine Aufgabe.

Mit meinem PIC kann ich nicht zählen da dieser nur jede Minute aufwachen 
soll und 32 solcher Zähler auslesen soll.

Ich will weder n weiteren Controller dafür einsetzen noch mich mit 
Elektroniktrickschaltungen verzetteln. Und ein Zähler der 74 Serie über 
I2C Portexpander auslesen gibt bei 32 Countern auch wieder ne größere 
Aktion.

Hat von Euch jmd ne schlaue Idee dazu oder besser ne Typenbezeichnung 
eines Counters im Hinterkopf den ich über SPI / I2C anschließen kann?

Grüße
THX in advance
Burny

von crazy horse (Gast)


Lesenswert?

hm, für SPI bräuchtest du 32 CS-Signale (ok, kann man mit Dekodern 
erreichen), für I2C 32 unterschiedliche Adressen, das wirst du auch 
nicht finden.
Aber nur so am Rande, ich kenne auf die Schnelle nicht mal einen Typ.
Vielleicht wäre es noch interessant, welchen Zählumfang du erreichen 
willst...

von Matthias L. (Gast)


Lesenswert?

>Ich will weder n weiteren Controller dafür einsetzen noch mich mit

Wofür denn?
Bisher hast du nur gesagt, dass du 32 Zähler brauchst. Mehr nicht.
Wie schnell soll gezählt werden? Welchen Zählbereich sollen die haben?
Wie Schnell soll (von EINEM µC) die Zählerstände abgefragt werden?
...


>ür SPI bräuchtest du 32 CS-Signale.
Nein. nur einen. Alle in Reihe und die Werte durchschieben.

von 3360 (Gast)


Lesenswert?

Ich wuerd ein CPLD nehmen.

von Burny (Gast)


Lesenswert?

kinder seid ihr flott. Danke erstmal.

Die zu zählenden Impulse sind langsam (Verbrauchszähler). Vorgesehen 
sind 32 Bit Zähler aber ich könnte ja ohne weiteres einen 8Bit zähler 
per Software auf 32 Bit hochrechnen. Das CS Signal kommt von 16Bit I2C 
Porterweiterungen (Microchip MCP23017). Maximal hängen am SPI Bus 16 4 
Kanal ADCs 64 1 Kanal DACs und 2 MCP 23S17.
Der Zählerstand der Counter sowie alle anderen Geräte sollen 1x pro 
Minute abgefragt werden.

von Matthias L. (Gast)


Lesenswert?

>Die zu zählenden Impulse sind langsam (Verbrauchszähler)

Was ist langsam?
Warum nicht per Software zählen, und den µC immer kurz aufwecken bei 
einer Flanke?

von Burny (Gast)


Lesenswert?

Mhh nun das wäre ne Möglichkeit über die Interrupt Pins von den MCPs 
einen Interrupt an meinem Prozessor auszulösen dann den Baustein 
auszulesen und zu schauen welcher Pin grad high is. Nun bin ich aber 
grad überfragt wie groß die Impulsdauer und die Zeit dazwischen ist (Ich 
hab nur die Vorgabe 32 x 32 Bit Counter für Verbrauchsmengenzähler - 
sprich ich gehe von 1 Impuls pro kWh aus je nach Einsatzort gibt das 5 
Impulse pro Minute oder nichtmal 1) und ob mir das reicht die 
Portexpander schnell genug auszulesen. Ich schätze mal das dauert zu 
lange bis ich endlich gelesen hab.

von Matthias L. (Gast)


Lesenswert?

Wie lang ist so ein Impuls?

von Matthias L. (Gast)


Lesenswert?

Also du könntest eine Porterweiterung mit 4x 74HC165 machen. Damit hast 
du 32digitale Eingänge, die du per SPI einlesen kannst. Weiterhin 
bräuchtest du noch eine OderSchaltung mit 32Eingängen (=32mal 1N4148 + 
ein R) als Interruptquelle.

Wenn somit einer der Zähleingänge EINS wird, tust du solange per SPI die 
32Eingänge einlesen und die richtigen Zähler erhöhen, bis alle Eingänge 
wieder NULL sind. Dann geht der µC wieder schlafen.

Bei 1MHz SPI Clock dauert das Einlesen ca 32µs.

von Burny (Gast)


Lesenswert?

Na grade das is das Problem - keine Ahnung - ! Es wird mit 
unterschiedlichen Verbrauchszählern gearbeitet werden und ich hab keine 
Information über den Typ. Von daher kann ich nur schätzen das die 
Impulsbreite 30ms bei elektronischen Ausgängen und 200ms bei 
Relaiskontakten betragen sollte.

von Burny (Gast)


Lesenswert?

Jup okay überredet aber ich nehme nicht deinen Chip. ;) Dieser MCP23017 
von dem ich dauernd fasele hat eine Interruptfunktion integriert - 
sprich ich kann mir die Oder Gatter sparen. Dem sage ich einfach der 
Defaultwert für die IO Pins is 0 sollte sich der Status ändern löse 
deinen PORTA oder PORTB Interrupt aus. Ich wusste nur nicht, dass diese 
Flanken >30ms sind - ich ging eigentlich davon aus das die bedeutend 
kürzer sind...aber die Datenblätter die ich gefunden hab sprechen eine 
andere Sprache. Was mich an der Sache stört ist, dass der PIC nicht im 
Sleepmode bleiben kann - deshalb hätte ich gerne einen Counter mit SPI 
oder I2C Interface gehabt...zudem muss ich mir dann keine Gedanken 
machen wie groß die Impulsdauer ist...und und und

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.