Forum: Mikrocontroller und Digitale Elektronik Algorithmus zur Daten Verarbeitung


von blackfinman (Gast)


Lesenswert?

Guten Abend allerseits,

ich arbeite momentan (unfreiwillig) an ein DSP-Projekt unfreiwillig weil 
ich im Rahmen meiner Diplomarbeit was ganz anders machen sollte es war 
eine Hardware-Arbeit mit MCU vereinbart worden leider mein Betreuer hat 
es sich nach 3 Monaten anders überlegt, in dem ein DSP- Board (blackfin 
bf537) MCU ablöst.
in dieser nervenberaubende Arbeit taste ich ein analoges Signal ab 
mittels eine von mir entworfene ADC platine, diese ist an die 
Parallinterface des Boardes angeschlossen. Die digitalisierten Werte 
werden verabeitet und über SPI ausgegeben und genau da habe ich grosse 
schwierigkeiten weil große Totezeiten da sind. ich habe einfach zum 
testen ein Sin-Signal eingespeist leider ist dieses nicht continuirlich.
Mein Algorithmus läuft so ab :
while(1){
          Daten vom DAC lesen;
          //Daten verarbeiten;
          Daten auf SPI schreiben;
        }
1-wie ist es eigentlich bei AVRs werden die Daten zyklich gepuffert 
(Ringspeicher)?? und dann vom Puffer geholt oder wird das anders gemacht

2- wie werden sie dann verarbeitet mich interssiert vor allem, was 
während der Verbeitung geschieht, ob es gleichzeitig vom ADC gelesen 
wird ??

3. ich vermute tote Zeiten kann man nie verhindern, solange man ein 
einprozessorsystem hat aber man kann sie kein hallten. wie könnte man 
das realisieren ???

4-müssen Interrupts eingesetzt werden und wozu ??

ich denke die Ablaufsfoge bzw. die Vorgehensweise soll ähnlich sein wie 
auf DSP und bitte euch sehr um Hilfe, in dem ihr mir diese Schritte 
näher erläutert.

Ich mache das zum aller ersten mal im Leben und  habe da noch meine 
Schwierigkeiten.
Es wäre auch sehr hilfreich wenn ihr mir paar Codebeisspiele habt.

vielen dank

von Zip (Gast)


Lesenswert?

1) Falls man die Werte direkt verarbeiten kann, weshalb sollte man die 
denn Ringpuffern ?

2)Was bedeutet verarbeiten ? FFT? Summieren? Filtern ?

3)Die Verzoegerung sollte fuer den Prozess klein genug sein. Meist 
sollte mit den Daten auch noch was angestellt werden. Dies Alles 
innerhalb eines Zyklus. Sonnst kann man nicht mehr kontinuierlich 
arbeiten.

4)Was bringt der einsatz von Interrupts. Darus ergibt sich deren 
Anwendungen.

von Falk (Gast)


Lesenswert?

@ blackfinman

Zunächst ist ein DSP einem MCU sehr ähnlich, wo ist das Problem?
Klingt eigentlich nach ner sehr schönen Aufgabe.

>in dieser nervenberaubende Arbeit taste ich ein analoges Signal ab
>mittels eine von mir entworfene ADC platine, diese ist an die

Das ist eine Standardanwendung für DSPs.

>schwierigkeiten weil große Totezeiten da sind. ich habe einfach zum
>testen ein Sin-Signal eingespeist leider ist dieses nicht continuirlich.

Du machst einen grundlegenden Fehler.

>Mein Algorithmus läuft so ab :
>while(1){
>          Daten vom DAC lesen;
>          //Daten verarbeiten;
>          Daten auf SPI schreiben;
>        }

Der ADC muss kontinuierlich laufen und seine Daten per DMA oder 
Interrupt zur Verfügung stellen. Dann ist die Datenerfassung 
kontinuierlich und äquidistant.

>1-wie ist es eigentlich bei AVRs werden die Daten zyklich gepuffert
>(Ringspeicher)?? und dann vom Puffer geholt oder wird das anders gemacht

Der ADC beim AVR generiert für jeden Messwert einen Interrupt. Dort kann 
dann der ADC-Wert in einen Ringpuffer geschrieben werden. Eine zweite 
Routine ausserhalb des Interrupts übernimmt dann den Datentransport via 
SPI.

>3. ich vermute tote Zeiten kann man nie verhindern, solange man ein
>einprozessorsystem hat aber man kann sie kein hallten. wie könnte man
>das realisieren ???

Siehe oben.

>4-müssen Interrupts eingesetzt werden und wozu ??

Ja. Siehe oben.

>Ich mache das zum aller ersten mal im Leben und  habe da noch meine
>Schwierigkeiten.

Die hatten und haben wir alle. Nicht nur beim ersten Mal . . . ;-)

Mfg
Falk

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
Noch kein Account? Hier anmelden.