Per iniziare la programmazione di un dsPic33 nuovo, provo la cosa più semplice: blinking led? Ancora meno, accendere un led e basta. Il led fa una luce fioca, guardo con l'oscilloscopietto tascabile e vedo le cose più strane.
Dopo qualche ora persa a fare prove e confronti, noto un messaggio in rosso del compilatore: warning: control reaches end of non-void function.
Aggiungo while(1); prima della parentesi graffa finale e tutto va a posto. Chissà cosa succedeva?
control reaches end
Moderatore: Paolino
19 messaggi
• Pagina 1 di 2 • 1, 2
1
voti
Sarebbe piu' istruttivo postare il codice che provocava il funzionamento anomalo e la tua correzione.
COsi' altri utenti potrebbero trarne vantaggio.....
COsi' altri utenti potrebbero trarne vantaggio.....

Se funziona quasi bene, è tutto sbagliato. A.Savatteri/M.Mazza
0
voti
- Codice: Seleziona tutto
#include "fusebit.c"
#include "p33FJ128MC802.h" //fusebit fastRC wPLL e tutto libero
//_FOSCSEL (FNOSC_FRCPLL & IESO_ON) //Oscillatore FastRC 7,37 MHz with PLL
//pin 12 ledv, 14 ledr,
#define ledv _LATA4 // RA4 pin12 led verde
#define ledr _LATB5 // RB5 pin14 led rosso
int main (void) { //Main Program
PLLFBDbits.PLLDIV=41; // M=43 PLLDIV=41 clock oscillator Tcy=25 ns
CLKDIVbits.PLLPOST=0; // N1=2 N2=2(default) 7.37*M/N1/N2=79Mhz~40MIPS
while (OSCCONbits.COSC != 0b001){}; // Sure for FastRC w PLL
while(OSCCONbits.LOCK!=1) {}; // Wait for PLL to lock
TRISA = 0b1111111111101111; //OUT RA4 PIN12 LED verde
TRISB = 0b1111111111011111; //OUT RB5 PIN14 LED rosso
ledv=1; ledr=1;
//while (1);
}
Allora: il compilatore dà il warning, sul pin 14 vedo una tensione di circa 1 V (la alimentazione è 3,3V) con sovrapposto un bruttissimo dente di sega irregolare ogni cira 20 microsec.
Togliendo il // prima del while (e ovviamente riprogrammando il micro), il compilatore non dà il warning e la tensione sul pin 14 è pulita, oltre 3V.
Il compilatore è XC16 sotto MPLABX con Pickit3 marcato W MPLABIDE
0
voti
Io pensavo che accendesse i led e basta, ma è chiaro che sbagliavo.
Mi sembra incomprensibile però quel tipo di uscita (dimenticavo, abbiamo come carico un led rosso da 3 mm con 820 ohm in serie), capirei basso, alto, appeso, onda quadra, ma una uscita disturbata che senso avrebbe? Semplice curiosità.
Allegherei la foto dell'oscilloscopio ma purtroppo da quando ho il Samsung Galaxy J6 non riesco più a travasare le foto sul PC col cavetto USB.
Mi sembra incomprensibile però quel tipo di uscita (dimenticavo, abbiamo come carico un led rosso da 3 mm con 820 ohm in serie), capirei basso, alto, appeso, onda quadra, ma una uscita disturbata che senso avrebbe? Semplice curiosità.
Allegherei la foto dell'oscilloscopio ma purtroppo da quando ho il Samsung Galaxy J6 non riesco più a travasare le foto sul PC col cavetto USB.
0
voti
Effettivamente non mi sono mai posto il problema su cosa succede all'uscita dal main() di un micro, dato che per ovvie ragioni praticamente nessuno lo fa terminare apposta.
Argomento interessante secondo me...
Argomento interessante secondo me...

Se funziona quasi bene, è tutto sbagliato. A.Savatteri/M.Mazza
19 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti