www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Blackfin DSP (PLL)


Autor: mswíerzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
vorweg ich bin ein Einsteiger in den DSP-Bereich und habe so meine
Anfangsprobleme.
Ich habe mir das ADSP-BF535 EZ-KIT gekauft. Programmiert wird das ganze
mit VisualDSP. Nun ist dort ein Beispiel enthalten für das setzen und
zurückstetzten eines Portpins (PFx).
Auf dem KIT ist ein 20MHz Quarz angebracht, nun meine frage wie muss
ich die PLL's konfigurieren damit ich ein möglichst schnelles
"Pin-Toggeling" hinbekomme. Über einen C- Quellcode wäre ich sehr
erfreut da mir da total der durchblick fehlt und mir die Online-Hilfe
nicht weiterhelfen konnte.

Vielen Dank

Marek Swierzy

Autor: ICON (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin auch einsteiger ich kann dir nicht helelfen aber falls du irgend
 wie eine Lösung findest kannst du ihn ja uns Posten so würde einiges zu
Thema Blackfin zusammen kommen.

Autor: mswíerzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm irgendwie finde ich im internet keine Informationen darüber.
Arbeitet den jemand mit einem anderen Blackfin und kann mir etwas zum
thema PLL sagen?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite mit dem ADSP-21992, da dürfte kein Riesenunterschied
bestehen. Wo genau ist das Problem?

Mir ist die Frage einfach zu allgemein formuliert, um jemanden mit
fertigem Code zu füttern. Ist z.B. klar, wie man in C auf die Register
des DSP zugreifen kann, funktioniert das Ganze auch prinzipiell
(Debugger)?

Auf dem ADSP-21992 klinkt man die PLL einfach in einen Bypass-Mode,
stellt Multiplier und Divider ein und schaltet die PLL dann wieder ein
- das wars.

Wenn Initiative erkennbar wird schaue ich vielleicht auch mal in das
Datenblatt deines Blackfin.

Alex

Autor: mswíerzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
He Alex, vielen Dank für dein Anwort. Du bist der erste der mir evt.
helfen könnte.
Ich möchte schnellstmöglich einen Pin setzen und zurück setzen.


#include <sys/exception.h>
#include <sys/excause.h>
#include "defBF535.h"

/*global variables*/
volatile unsigned short * fio_dir_reg;
volatile unsigned short * fio_set_reg;
volatile unsigned short * fio_clr_reg;

/*void main()*/
void main()
{

    fio_dir_reg = (unsigned short *)FIO_DIR;
        fio_set_reg = (unsigned short *)FIO_FLAG_S;
        fio_clr_reg = (unsigned short *)FIO_FLAG_C;

        /* set PF0 - PF3 as output */
        *fio_dir_reg = (unsigned short)0x000F;

        asm("ssync;");
        int a,b,c;

        for(;;)
    {
                /* clear all the LED */
                *fio_set_reg = (unsigned short)0x000F;
                /* set LED to 0xA pattern */
                *fio_clr_reg = (unsigned short)0x000F;
        }

}


vielen dank

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ok,

auch wenn da von PLL weit und breit noch nichts zu sehen ist. Also
schlag als erstes mal die Hardware-Reference auf (auf Seite 364 gehts
los).

PLL_CTL: Bypass Mode aktivieren und PLL abschalten

PLL_CTL: MSEL-Bits auf entsprechenden Faktor einstellen und PLL
aktivieren

PLL_STAT: Bit 5 (PLL_LOCKED) pollen bis es gesetzt ist
(while-Schleife)

PLL_CTL: Bypass Mode deaktivieren.

Das wars, freue mich auf eine programmtechnische Umsetzung.

Alex

Autor: mswíerzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip, ich versuche es umzusetzten.
Ich gebe schnellst möglich ein Feedback.

Danke

Autor: mswierzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So Alex....... ich bekomme es nicht hin...
was mache ich falsch.... hier mal die unterfunktion welche ich for der
entlosschleife abarbeite.

void Init_PLL(void)
{
*pPLL_CTL=0x0102;  // Bypass u. Disable Power to PLL
*pPLL_CTL=0x2F00;  // MSEL adjust and Bypass on
while((*pPLL_STAT&0x0020)==0)
{
    printf("wait");
}
*pPLL_CTL=0x2E00;  // MSEL adjust and Bypass off

}

Aber aus irgendeinen grund scheint er die funktion nicht zu machen.

Vielen Dank


Marek

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marek,

deine Angaben sind leider ein wenig fuzzy ...

Du hast ein EZ-Kit, kannst also eigentlich ständig alle Register
kontrollieren. Nutze diese Möglichkeit.

Wird das Bit korrekt gesetzt nachdem du die PLL umgestellt hast?

Schau alternativ einmal in das Programmverzeichnis vom VisualDSP++,
dort finden sich oft Programmbeispiele. Bei meiner 3.5er Version ist
z.B. der Code für eine PLL-Initialisierung dabei (für den ADSP-BF561).


Alex

Autor: mswierzy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau ich mir gleich mal an....
aber sag mal ist der Source ok ?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, da ich auf dem ADSP-21992 in Assembler arbeite (was in meinen
Augen soundso besser als C auf einem DSP von AD ist), kann ich das nur
schwer beurteilen.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marek,

funktioniert es oder benötigst Du noch ein paar Tips?
Wenn Du das PLL_CTL Register änderst mußt Du auf jeden Fall den Idle
Befehl ausführen.

Autor: Marek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Timo,

ich habe immer noch meine Probleme ;).
Hast du evt. eine Email adresse oder eine ICQ nummer für mich,
damit dieser Post hier nicht ins unentliche geht ?

Gruß

Marek

Autor: Marek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal eine Frage neben bei wie schell kann ich die PFx überhaupt setzen un
clearen was ist da die Maximale Geschindigkeit?


Gruß

Marek

P.s: @admin/mod ich suche nach einem Link um mir mein Passwort zukommen
zu lassen :)....

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Ausgang geschaltet eine Zustandsänderung pro SCLK. Der maximale Takt
eines Ausgangssignales ist demnach SCLK/2. Wenn Du einen Portpin toggeln
lassen möchtest, warum nimmst Du dann nicht einfach das Toggle
Register?

Ich habe leider völlig vergessen, dass ich hier meine Hilfe angeboten
habe. Woran hängt es bei der PLL Initialisierung? Möchtest Du sie in C
oder ASM initialisieren? Ich kenne zwar nicht den BF535 sondern nur
BF561 und BF534/6/7 aber die PLL sollte identisch sein. Ich kann Dir
den Code wahrscheinlich liefern müsste ihn nur etwas anpassen.

Autor: Der Marek :) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wäre echt super von dir.... hast du evt. icq oder eine email-adresse
für mich... falls ich weiter fragen habe ???

Autor: ICON (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt sthet du muss bestimmt sequenzen einhalten oder im
Bootprozess verändern.
Ich Hb auch ein PLL Problem und zwar ich verstehe das Datenblatt nicht
die geben zwar einige Beispiel aber wo wird VCO bestimmt (im Datenblatt
sthet im Register PLL_CTL MSEL[5:0] so weit is ok) aber wie kommt man
denn auf vco=600.. usw. das ist mir irgendwie unklar.

Autor: ICON (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok es hat sich erledigt, ich habs gefunden .

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.