Hallo, ich lese mittels I2C/TWI unter Zuhilfenahme von Fleury's Lib ein Thermometer (LM75) aus. Das funktioniert auch gut, jedoch liegen zwischen den einzelnen Bytes scheinbar jeweils knapp 25ms Pause, warum? Code anbei. Dass die Ausgabelogik noch nicht perfekt ist, ist so gewollt. Hab heute erst damit auf'm Steckbrett angefangen. Grüße, Gregor
>jedoch liegen >zwischen den einzelnen Bytes scheinbar jeweils knapp 25ms Pause, warum? Das ist nicht dein Ernst oder? Nimm mal die ganzen uart_puts() raus.
Aber die laufen doch über Interrupts ?! Der mega32 läuft auf 16MHz. 25ms entspricht 400.000 Zyklen, was soll so lange brauchen?
>Aber die laufen doch über Interrupts ?! Wie sollte ich das deinem Code entnehmen ? >Der mega32 läuft auf 16MHz. 25ms entspricht 400.000 Zyklen, was soll so >lange brauchen? Bei 4800 Baud beträgt die Übertragungszeit für ein Zeichen ca. 2ms. Ob mit oder ohne Interrupt. Wie groß ist denn dein Sendepuffer ?
Alles original Fleury. 32 Byte Sendepuffer. Alle Strings sind kleiner als der Puffer. Während das Byte übertragen wird, wird doch das non-ISR (Hauptprogramm) weiter abgearbeitet bis zum Übertragung-Fertig-Interrupt. Die I2C Übertragung besteht ja auch nur aus dem Beschreiben des Registers und dem Warten auf den Acknowledge-Interrupt. Ich kommentiere morgen mal alle UART-Debug-Sachen aus und berichte über eventuelle Performance Veränderungen... Gregor
>Ich kommentiere morgen mal >alle UART-Debug-Sachen aus und berichte über eventuelle Performance >Veränderungen... Geh doch einfach mal auf 9600 Baud. Ich könnte schwören das sich die Pausenzeiten halbieren ;)
Hallo Holger, Du hattest eindeutig Recht! Von 160ms für 5 (I2C-Nutz-)Bytes bei 4800Bps, runter auf 20ms bei 38400Bps. Das schmeckt mir aber gar nicht, das die Übertragung den Prozessor hängen lässt... Besten Dank für den Tipp! Grüße, Gregor
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.