Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
Dann bieten sich bei der Erfassung sog. vertikale Zähler an, der auf Bitbreite des ganzen Ports (Byte bzw Word) mit kaskadierten Bytes bzw. Words, simultan zählen... geht auch per Bitmanipulation ohne bedingte Sprünge.... bei acht vertikalen Stufen(255 Bit) hat man bei 3 Imp/s schon 85 s Zeit zum sammeln... der Traffic für die Übermittlung ist dann Peanuts... 13x8 Bytes Übertragen pro 85s...
Die Frage ist ja auch, was mit den Daten passieren soll... muss auf diese in einem festgelegten Zeitfenster reagiert werden, oder geht es ums reine Monitoring... davon hängt es ja ab, ob man Daten sammeln kann und als Bulk übertragen, oder ob zeitkritisch auf bestimmte Zustände irgendwelche Reaktionen folgen sollen...
Die Register kann man variieren... habs absichtlich ohne (Bascom-)Code in der Loop gemacht, um mit nosave klar zu kommen... Soll ja auch nix anderes machen, als schnellen Graycode raushauen... verschiedene Speed-Optionen kann man in der Intialisierung einbauen... In der Isr sind es grad mal 4 takte... dazu der isr-Aufruf und der Rücksprung... die Summe bestimmt dann den maximalen Takt, bzw. die minimale Periodenzeit des Timers... mit Timer ist halt die Frequenz besser zu kontrollieren... Ginge a…
Hi... Hab nen schnellen und sehr kurzen Code für 2-bit Graycodeerzeugung mit Bitmanipulation in der ISR geschrieben... Die Folge 00 01 11 10 00... an 2 Ausgängen kann einfach erzeugt werden, indem man jeweils den letzen Stand der beiden Ausgänge immer wechselnd mit 01 und 10 ver-exodert... Der Wechsel zwischen 01 und 10 im Register geht einfach durch fortlaufendes ver-exodern mit 11 . 00 exor 01 = 01 01 exor 10 = 11 11 exor 01 = 10 10 exor 10 = 00 ....etc....