Hallo Zusammen Ich bin gerade dabei das ATMEL USI interface eines ATtiny85 als I2C Slave zu nutzen. Die ganze Kommunikation mit dem I2C Bus funktioniert. Nun mache ich im Hauptprogramme Berechnungen, sind die Werte berechnet, übergebe ich die Daten in einen Datenpuffer, der dann vom Master ausgelesen werden kann. Während der datenübergabe in den Datenpuffer schalte ich das USI_START interrupt aus (atomarer Zugriff). Jetzt habe ich das Problem, dass während dem ausschalten des USI_START interrupts, manchmal eine Start Kondition verpasste wird, und dadurch Fehlübertragungen entstehen. Das ganze sieht etwa so aus: Do 'Hauptprogramm B = Getadc(3) C = 1023 - B C = C - 510 C = C * 5 E = C B = Getadc(2) D = B D = D * 50 D = D / 26 F = D Disable Usi_start 'atomarer Zugriff Strom = E Spannung = F Enable Usi_start Loop Hat jemand einen besseren Lösungsvorschlag, damit ich bei einem USI_START interrupt, zuerst andere Aufgaben fertig machen kann ?
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.