Hej hej! Håller på att flytta ett projekt från PIC32 starter kortet till ett eget kort.
Vårt egna kort har ej extern klocka och vi vill alltså använda den interna 8MHz oscillatorn med PLL å hela köret för att komma upp i 80MHz som vi kört innan på starterkittet.
Får fan inte till hastigheten alls. Kör med dessa config-bitar just nu. Hastgheten är mycket långsammare än det ska vara.
6.3.1.3.2 FRC Oscillator with PLL Mode (FRCPLL)
The output of the FRC may also be combined with a user-selectable PLL multiplier and output
divider to produce a SYSCLK across a wide range of frequencies. The FRC PLL mode is
selected whenever the COSC bits (OSCCON<14:12>) are ‘001’. In this mode, the PLL input
divider is forced to ‘2’ to provide a 4 MHz input to the PLL. The desired PLL multiplier and output
divider values can be chosen to provide the desired device frequency.
"Hastgheten är mycket långsammare än det ska vara."
Det brukar vara en bra ledtråd att kolla exakt vilken hastighet man faktiskt får.
Låt en pinne växla mellan 1 och 0 och mät med t.ex frekvensräknare eller oscilloskop.
Ofta blir det då ett "ah, just det ja".
Den interna är väl egentligen failsafe oscilatorn, som snurrar på betydligt lägre frekven.
Tror du har missuppfattat det lite, inga av pic-startkorten använder extern klocka, alla använder den interna oscillatorn med extern kristall.
PBUS klockan har inget att göra med detta.
Det brukar vara en bra ledtråd att kolla exakt vilken hastighet man faktiskt får.
Låt en pinne växla mellan 1 och 0 och mät med t.ex frekvensräknare eller oscilloskop.
Ofta blir det då ett "ah, just det ja".
Har testat med en räknare som skall gå i 10Hz och får med detta fram att jag kör ca 0.42 ggr hastigheten av 80MHz vilket är 33,6MHz. Mycket konstig klockning. Men här har jag säkert räknat fel på nått så. Men det är iaf. inte 1/2 eller 1/10 fel nånstans vilket hade varit enklare att feltolka.
Den interna är väl egentligen failsafe oscilatorn, som snurrar på betydligt lägre frekven.
Tror du har missuppfattat det lite, inga av pic-startkorten använder extern klocka, alla använder den interna oscillatorn med extern kristall.
Nu hänger jag inte riktigt med. Hur använder man den interna oscillatorn med en extern kristall? Jag förstår inte hur du menar nu
Så här står det i databladet under Peripheral Features:
Internal 8 MHz and 32 kHz Oscillators
Vilket jag tycker borde ge mig möjligheten att skippa en extern 8MHz oscillator/kristall.
Du menade sannolikt "Vårt egna kort har ej kristall".
"Extern klocka" är något helt annat. Eller är det det ni har?
Det finns (minst) två oscillatorer, den ena har en fabrikstrimmad RC-krets
för frekvensen, den andra använder en extern kristall för frekvensen.
Sen kan det finnas en intern low-power oscillator på ca 32 KHz också...
> Vilket jag tycker borde ge mig möjligheten att skippa en extern 8MHz oscillator/kristall.
Har du verifierat att både 8Mhz oscillatorn för extern kristall och den helt interna
oscillatorn på 8Mhz kan kopplas/konfigureras att köras genom samma PLL ? Jag kan
inte PIC32, men det är inte alltid så på andra PICs.
Jag är nästan helt hundra på att alla PIC32 kan köras utan extern kristall.
Fick lov att söka lite mer och starter-kit-dokumentet säger detta:
2.1.6 Oscillator Options
The installed microcontroller has an oscillator circuit connected to it. The main oscillator
uses an 8 MHz crystal (Y2) and functions as the controller’s primary oscillator. Use of
an external crystal is not required for PIC32 designs. Your design may use the internal
oscillator, if desired.
På bilden ser det ut som att det skulle vara *3* bitar, fast det räcker med
en bit med bara två ingångar att välja mellan. Märkligt. Hur ser COSC ut
i själva registret ? Alltså COSC<2:0>.
Kollar databladet lite senare...
Om jag ser rätt så bör FPLLIDIV = 2, PLLMULT = 20 och PLLODIV = 1.
8/2 = 4. 4x20 = 80. 80/1 = 80.
Och TUN måste vara satt att ge 8 MHz...
Detta kan grunda sig i något mycket enklare som det ser ut nu.
Jag tror att jag har strulat till det med min timerinterrupt som ska räkna upp med 10Hz, men den verkar ha blivit initierad på fel sätt eller har någon felaktig prio som gör att det inte blir en interrupt så länge jag kör en manuell for-delay.
Jag kör nu med bara FRC på FNOSC tills min interrupt inte styrts av de manuella delay-rutinerna som finns.