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.