www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C oder SPI Counter


Autor: Burny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: 3360 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerd ein CPLD nehmen.

Autor: Burny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Burny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lang ist so ein Impuls?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Burny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Burny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.