vor USI_START interrupt andere Aufgaben fertig machen

OP #3239799
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 ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.