Hallo liebe Bastler Ich habe ein TWI zwischen 2 µC (ATMega32 und ATMega8) aufgebaut. Dazu habe ich den Quellcode von Manfred Langemann genutzt (C++). Ist es normal das die Daten immer nur alle Sekunde gesendet werden? Die berechnete Frequenz liegt bei 100000 Hz. also eigentlich schnell genug. Aber zwischen dem senden ist immer eine so lange Pause. Bis auf eine 50ms Pause nach dem senden habe ich keine Verzögerungen im Programm. Meine Einstellungen des TWI: Funktionsaufruf: - TWIM_Init (100000) die Funktion: uint8_t TWIM_Init (uint32_t TWI_Bitrate) { TWBR = 0x10; if (TWBR < 11) return FALSE; return TRUE; } Schon vielen Dank an euch!
>Ist es normal das die Daten immer nur alle Sekunde gesendet werden?
Wenn du eine Sekunde Pause machst ist das normal.
Nimm die Pause doch raus.
>Bis auf eine 50ms Pause nach dem senden habe ich keine Verzögerungen im Programm.
50ms ist nicht eine Sekunde.
Da muss irgendwo anders ein Fehler sein.
>50ms ist nicht eine Sekunde. Das ist wohl wahr. >Da muss irgendwo anders ein Fehler sein. CKDIV8 Fuse? Dann kommst du aber auch erst auf 400ms.
das Fuse ist nicht gesetzt.. Beide µC laufen auf 8Mhz mit dem internen Quarz.
>das Fuse ist nicht gesetzt.. Ganz sicher? Fuse vieleicht doch falsch programmiert? > Beide µC laufen auf 8Mhz mit dem internen >Quarz. Es gibt keinen internen Quarz.
Ich hab noch mal gemessen. Die Pause ist doch länger als ich dachte. Es sind so ca. 3s. Das kommt nicht durch Fuse Bits. Da ist Software technisch ein Fehler. Hab mal mein Programm angehängt. Vllt hilft das.
for (;;) { receive(); //Wird hier vieleicht 3s gewartet? Delay_ms (50); //Oder ist diese Routine faul? Speck dein Programm mal ab! Und dann teste noch mal. Wo bitteschön wird hier TWI_Bitrate verwendet? uint8_t TWIM_Init (uint32_t TWI_Bitrate) { /* ** Set TWI bitrate ** If bitrate is too high, then error return */ TWBR = 0x10; if (TWBR < 11) return FALSE; return TRUE; }
Es funktioniert. Es lag an einer falschen Header Datei. Die Version von delay.h die ich hatte , war falsch. Jetzt sendet er ca. 30 mal in der Sekunde. Vielen Dank für euere Hilfe.
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.