Hallo Frank,
Man kann natürlich in ein Zählermodul noch dies und das an HW reinpacken,
um alle möglichen Eventualitäten zu ermöglichen.
Jedoch ging es mir bei dem Zähler nur um ein einfaches
preiswertes Modul.
Außerdem ist die Hardware (damit meine ich den Stapel Platinen) schon
länger fertig.(ca. 2 Monate) Ich war vor lauter Arbeit nur noch nicht gekommen
die nötigen Treiber (CC2) bzw. Routinen(CC1) zu schreiben.
Es bringt jetzt nichts zu schreiben, dies oder das wäre besser.
Die Interruptleitung beim I2C-CNT8 ist nunmal nicht dazu gedacht,
Interrupts auszulösen, sondern, wie gesagt, um eine Änderung zu signalisieren.
Außerdem dauert der I²C-Bus-Zugriff selbst bei der CC1 nicht länger als
das Lesen von zwei Programmbytes aus dem EEProm.
Und wenn Dein CC1-Proggie z.B. für einen Durchlauf 1sek. braucht, und Du
in dieser 1sek. einmal auf neue Impulse prüfst und ggf. abfragst, so wären
max. 255 Hz drin ohne garantiert auch nur einen Impuls zu verlieren.
Da ich aber schon lange nicht mehr mit der CC1, sondern nurnoch mit
der CC2 arbeite, ist für mich das Thema "Controllerauslastung" nicht
so wichtig.
Wie schonmal gesagt, ist meine komplette I²C-Bus-Hardware in erster
Linie für die CC2 enbtwickelt. (Hauptbreich Wäremtechnik/Hausautomatisation)
Das hab' ich nie so geschrieben.Bei deiner Konzeption hat der Controller ne Menge Arbeit wenn er bei dem Interrupt auf einem Port (der bei jedem Minibewegung/Impuls) ankommt erst mal alle I2C Bausteine lesen muss.
Das Beispiel, was ich gebracht habe, fragt nur solange ab, bis der
Interruptauslösende Baustein abgefragt wurde. Danach wird
die Schleife verlassen.
Gut, im schlimmsten Fall werden alle Bausteine abgefragt, aber das
ließe sich nur mit mehreren Ports für die Interruptleitungen vermeiden.
Aber ich glaub', ich weiß, wo das Problem liegt:
Viele CC1 Nutzer Emulieren völlig unnötig einen I²C-Bus an zwei
I/Os mit Basic-Routinen.
Ich halte das für völligen Unsinn und nutze bei den CC1-Routinen
für meine I²C-Bus-Erweiterungen immer den internen I²C-Bus
mit ASM-Treibern. Hier spielen I²C-Buszugriffe bei der CC1 dann
zeittechnisch eher eine untergeordnete Rolle.
Wenn bei der CC1 schon ein I²C-Bus an zwei I/Os emuliert wird, dann
bitte wenigstens mit ASM-Routinen. Alles andere wäre schwachsinn.
Ein (ASM-)Beispiel hierfür befindet sich z.B. im Buch "MSR mit CC-Basic"
MfG André H.
Lesezeichen