mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Datenempfang während EEPROM Schreiben


Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich wollte mal eine allgemeine Frage stellen.

Bei meinem Controller - einem ATMEGA 2561 - dauert das Beschreiben einer 
EEPROM Speicherzelle 3,3 ms. Das ist natürlich sehr viel. Werden nun 
während dieser Zeit komplett alle Interrupts gesperrt oder nur während 
diverser Assemblerbefehle innerhalb der 3,3 ms?

Denn ich habe ein Problem, dass manchmal einkommende Zeichen über UART 
während des Beschreibens nicht mehr abgehandelt werden. Ich nutze die 
eeprom_write_byte - Funktionen innerhalb einer Schleife über max. 16 
Zeichen, zum Empfang der UART Zeichen nutze ich Interrupts.

Wie verhält es sich da? Interruptsperre während der kompletten 3,3 ms 
oder nur kurzfristig?

Gruß

Bernhard

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[Quizmaster]

Na wer weiß weiter?

[/Quizmaster]


Gruß
Bernhard

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach knapp 24 (in Worten vierundzwanzig) Minuten zu pushen ist einfach 
unhöflich. DU hast das Problem und nicht wir.

Ich lass Dir mal ein paar Wochen Zeit darüber nachzudenken.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard N. schrieb:
> Na wer weiß weiter?
Wie wärs mit selber schauen?
Z.B. dort, wo eeprom_write_byte() definiert wird, in eeprom.h?

> Interruptsperre während der kompletten 3,3 ms oder nur kurzfristig?
Was sagt der Quellcode?
        "/* START EEPROM WRITE CRITICAL SECTION */\n\t"
        "in  r0, %[__sreg]    \n\t"
        "cli        \n\t"                      ---- Ints sperren
        "sbi  %[__eecr], %[__eemwe]  \n\t"
        "sbi  %[__eecr], %[__eewe]  \n\t"
        "out  %[__sreg], r0    \n\t"           ---- Ints wieder herstellen
        "/* END EEPROM WRITE CRITICAL SECTION */"
Fazit:
Der Int wird nur sehr kurzzeitig gesperrt, du hast ein anderes Problem.

Poste mal deinen Code...

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo lkmiller,

Ich denke mal das reicht mir erstmal als Info. Danke.

Gruß
Bernhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.