DMA vs. EERPOM Zugriff

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • DMA vs. EERPOM Zugriff

      Hallo Zusammen,

      ich finde lt. Foren-Suche nur 11 Einträge zum Thema DMA aber vielleicht kann mir trotzdem jemand helfen.

      Ich nutze die DMA für die Verknüpfung von ADC und SRAM (CH0+CH1 im Burst-Mode), bzw. UART und SRAM. Das funktioniert prima aber
      Problem: nur solange bis ich etwas in den EEPROM schreiben.
      Ursache: Was ich weiß, CPU-DMA und CPU-EERPOM nutzen den gleichen Bus, der EEPROM hat Vorrang und stört meine Messung (ADC).
      Suche: Es würde mir schon reichen wenn der DMA ein Fehler-Flag setzt und ich die Messung dann verwerfen kann. Leider werden im oben genannten Fall weder die globalen Error-Flags DMA_INTFLAGS.4, DMA_INTFLAGS.5 noch die Kanalspezifischen DMA_CH0_CTRLB.5 + DMA_CH1_CTRLB.5. aktiv.
      (((Was ich nicht möchte: Manuell bei jedem EEPROM Zugriff (ca. 50x in dem Program) ein Flag setzen)))



      Hat jemand eine Idee? Oder eine Ermutigung beim Thema Fehler-Flags weiter zu forschen?

      Vielen Dank.

      The post was edited 1 time, last by FlourHorn ().

    • Hm, beim Atmega gibt es das EECR.EEIR = EEPROM Ready Interrupt. Damit könnte man das EEPROM-inBenutzung-Flag global setzen ohne den ganzen code (>30k-Zeilen) anzupassen.

      Gibt es so etwas auch beim xmega? Ich kann leider nichts finden aber bei 480 Seiten Datenblatt überliest man schnell was..
    • New

      Das Problem wurde gefunden und ist völlig anderer Natur. Von daher könnten man diesen Beitrag löschen, da der Titel lauten müsste: Warum funktioniert ein 2. Return in der ISR nicht.

      Folgendes: Beim Zugriff auf das EEPROM wurden weniger Samples per DMA vom ADC in den RAM übertragen. In einer ISR die, den Zählerstand (zeitsynchron) aktualisiert wurde der Fehler erkannt, die Fehlerbehandlung gipfelte in einem 2. Return in einer ISR und das darf es in Bascom nicht geben => Absturz.