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
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.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.