STM32L072KZT6: ADC mit DMA: geht nicht mehr zu main.c zurück

OP #6350498
Lesenswert?
• ▲
▼
Hallo,

ich benutze den ADC mit 2 Kanälen im DMA-Modus (Circular).

Das zyklische Wandeln geht zwar problemlos, aber das Programm kommt 
nicht mehr zur Main-Loop zurück. Irgend wie bleibt es immer im 
HAL_DMA_IRQHandler drin.

Für die Konfiguration benutze ich STM32CubeMX. Bild anbei.

Ich starte den ADC vor der Main-Loop mit:
1
HAL_ADC_Start_DMA(&hadc, (uint32_t*)_ADC.uiAdcResults, ADC_ANZAHL_KANAELE);

ADC und DMA haben keinen ErrorCode (ist jeweils 0). Warum kommt das 
Programm nicht mehr aus dem IRQ-Handler raus?

Gruß
Martin
Angehängte Dateien:
(Firma: fritzler-avr.de) #6350520
Lesenswert?
• ▲
▼
Warum ist der ADC IRQ überhaupt aktiv wenne per DMA abholst?
Da brauchts nur den "DMA hat fertig" IRQ wenn beide Kanäle durch sind.
Den brauchts aber auch nur wenn man daraif hin was auslösen will.

Ansonsten kann auch der DMA überrannt werden, wenn der Bustakt im 
Verhältnis zur ADC Samplezeit zu gering ist (ADC PSC = 2 weist darauf 
hin).
Also dreh mal den Bustakt hoch und lass den nicht bei den 16MHz des 
startups.

Zudem lieber die Sampling CLKs erhöhen anstatt den Prescaler.
Umso länger die Sampletime des ADC umso höher ist die Eingangsimpedanz 
des ADC Kanals, je nach Impedanz der Quelle handelt man sich sonst 
Fehler ein.
Gast #6350532
Lesenswert?
• ▲
▼
Mw E. schrieb:
> Warum ist der ADC IRQ überhaupt aktiv wenne per DMA abholst?
Stimmt, habe ich nun entfernt

> Da brauchts nur den "DMA hat fertig" IRQ wenn beide Kanäle durch sind.
> Den brauchts aber auch nur wenn man daraif hin was auslösen will.
Den kann man im Cube aber nicht deaktivieren.


> Also dreh mal den Bustakt hoch und lass den nicht bei den 16MHz des
> startups.
Bustakt hatte ich bereits bei 32 MHz.


> Zudem lieber die Sampling CLKs erhöhen anstatt den Prescaler.
> Umso länger die Sampletime des ADC umso höher ist die Eingangsimpedanz
> des ADC Kanals, je nach Impedanz der Quelle handelt man sich sonst
> Fehler ein.
Werde ich machen.

Antwort schreiben

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.

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.