Hallo, ich bin vom dsPIC33 auf einen PIC32MX470F512 umgestiegen. Bei
einem ersten Testprogramm ist mir aufgefallen, dass der Mikrocontroller
für einfache Dinge - beispielsweise das cs-Bit nach der
SPI-Kommunikation wieder auf high setzen - unverhältnismäßig lange
braucht.
Ich nutze einen externen Quarz (20MHz) und bringe die System-Frequenz
per PLL auf 100MHz.
1 | #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_4, FPLLODIV = DIV_1, FWDTEN = OFF
|
2 | #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_1
|
3 | #pragma config JTAGEN = OFF
|
4 | #define SYS_FREQ (100000000L)
|
Das Problem der langsamen Ausführung von Anweisungen habe ich durch den
Aufruf von
1 | SYSTEMConfigPerformance(100000000);
|
in der Main in den Griff bekommen (Das cs-Bit schaltet nun ca. in einem
Drittel der Zeit). Was jetzt aber nicht mehr beachtet wird, ist die
FPBDiV-Einstellung. Egal welchen Teiler ich für den Peripherie-Takt
wähle, stellt sich immer eine Frequenz von 50MHz ein. Anscheinend wird
die "DIV_1" Anweisung von der oben genannten Funktion überschrieben.
Daher nun die Frage, wie ich beides unter einen Hut bekomme. Also ein
schnell rechnender PIC bei einem beliebigen Peripherie-Takt.
Vielen Dank für die Unterstützung!