Hallo zusammen,
ich stehe gerade etwas auf dem Schlauch und brauche Hilfe.
Ich habe an meinem I²C-Bus 2 Teilnehmer. Ein OLED-Display und ein Current-Output-DAC. Ich sende regelmäßig durch einen Timer gesteuert Daten an den DAC. Leider derzeit noch mit Start xxxxx Daten Stop. Das kostet mich aber sehr viel Zeit. Um das zu beschleunigen, wollte ich das eben so machen: Start xxxxx Daten, Daten, Daten, Daten (Stop, wenn OLED was schreiben soll).
Versteht ihr, der I²C-Bus soll die Datenübertragung zum DAC nur dann stoppen, wenn das LCD etwas schreiben soll. Und das kommt nur 1 Mal pro Sekunde vor. Die Restliche Zeit soll der kontinuierlich Daten an den DAC senden. Somit kann ich meine Regelung viel Schneller Arbeiten lassen.
So Schaut das dann grob aus.
Alles anzeigen
Jetzt ist halt der I²C ja immer offen so lange der DAC kontinuierlich Daten bekommen. Muss aber vor dem Umschalten auf OLED ja geschlossen werden. Ich würde nun einfach gerne prüfen, ob dies auch der Fall ist. Und weis nicht so wirklich, wie ich das machen soll.
Hat da jemand eine Idee?
Danke und Gruß
ich stehe gerade etwas auf dem Schlauch und brauche Hilfe.
Ich habe an meinem I²C-Bus 2 Teilnehmer. Ein OLED-Display und ein Current-Output-DAC. Ich sende regelmäßig durch einen Timer gesteuert Daten an den DAC. Leider derzeit noch mit Start xxxxx Daten Stop. Das kostet mich aber sehr viel Zeit. Um das zu beschleunigen, wollte ich das eben so machen: Start xxxxx Daten, Daten, Daten, Daten (Stop, wenn OLED was schreiben soll).
Versteht ihr, der I²C-Bus soll die Datenübertragung zum DAC nur dann stoppen, wenn das LCD etwas schreiben soll. Und das kommt nur 1 Mal pro Sekunde vor. Die Restliche Zeit soll der kontinuierlich Daten an den DAC senden. Somit kann ich meine Regelung viel Schneller Arbeiten lassen.
So Schaut das dann grob aus.
Quellcode
- DAC Senden kontinuierlich Daten:
- I2CSTART
- I2CWBYTE Ltc1427_adr
- I2CWBYTE spg48vHigh
- I2CWBYTE spg48vLow
- I2CWBYTE spg48vHigh
- I2CWBYTE spg48vLow
- I2CWBYTE spg48vHigh
- I2CWBYTE spg48vLow
- .....
- I2CSTOP
- Waitms 10
- Dann immer nach einer Sekunde LCD
- I2cstart 'start condition
- I2cwbyte &H78 'slave address
- 2cwbyte &H40
- For Zab2 = 1 To 128 '128 columns wide
- I2cwbyte Ddata(point)
- Incr Point
- Next
- I2cstop
- Waitms 10
- Und wieder DAC
Hat da jemand eine Idee?
Danke und Gruß