Problem mit LCD (Liquid Crystal I2c)

Hallo Leute,
ich habe ein Programm geschrieben in dem ein Schrittmotor sehr schnell hin und her steppen soll.
Nun will ich meine Schrittmotor Steps, und die Frequenz über Taster ändern und alles an einem LCD visualisieren. Das funktioniert auch soweit.
Aber: Immer wenn das Display neu aktualisiert beeinflusst es die Motorfrequenz und immer wenn die Frequenz relativ hoch wird beeinflusst es die LCD anzeige. Die Taster werden über Interrupts eingelesen.

Nun meine Frage: Wie kann ich LCD und Motor so unabhängig wie möglich an einem ArduinoMega miteinander Betreiben ohne dass so ein extremer Einfluss ensteht.

Viele Grüße

Fetcher

TheFetcher:
ich habe ein Programm geschrieben

Und das ist geheim?

Interrupts ist nicht gut.

Wenn möglich, effektiver programmieren oder einen schnelleren µC wählen.

Hi

Bestimme erst Mal, wie viel Zeit Du überhaupt dafür hast, Inhalt auf das LCD zu bringen.
Solange Dir die Zeit bleibt, ein/zwei Bytes zu senden, kannst Du die Änderungen 'abarbeiten'.
Und wirklich nur Das ändern, was sich geändert hat.

Auch ist I²C nicht unbedingt das Protokoll, wenn's schnell werden soll - da ist SPI mit einigen MHz doch deutlich über den maximal 800kHz von I²C (Standard sind 400kHz).
Oder Du lagerst das LCD auf einen weiteren Arduino aus und schickst Diesem die Daten z.B. per SPI - wobei Du aber auch Da vorher schauen musst, ob Dir die Zeit reicht, um Alles am Stück zu versenden.

MfG

Ein LCD - Display braucht man nicht schneller als alle 100 .. 200 ms zu ändern, wenn Menschen sich die Zeichen ansehen sollen. Soll ja hauptsächlich Feedback für die Taster-Eingabe sein.

Was schnell ist bei einem Schrittmotor, muss man auch erstmal klar definieren, man kann da evtl. mit Hardware-Timern und auf jeden Fall nicht blockierend arbeiten.

Von I2C auf SPI umsteigen, oder die Aufgabe auf 2 Controller aufteilen, wird vermutlich gar nicht nötig sein.

Wer Taster per Interrupt einliest, macht vermutlich auch sonst Unsinn :wink: