Numeri grandi dimensioni/piccolissimi

di Anonimizzato14393 il
19 risposte

19 Risposte - Pagina 2

  • In questo caso sarei fortunato dato che 256 *4 è circa mille;) altra soluzione a cui avevo pensato era di mettere dei #if e di andare a inserire tutti i casi standard (le frequenze piú usate) , ma se ci metto di mezzo anche il prescaler i valori diventano molti....comunque mo hai dato "l'ispirazione " potrei fare come hai detto aggiungendo un fattore correttivo 256/Fosc1*1.024 con Fosc1 in MHz ....... tutto questo è un buon compromesso se non decido di variare quel 256 . Ti ringrazio molto. Se nessuno conosce un modo per aumentare la precisione del precompilatore farò in questo modo.
  • Quale compilatore usi?
  • Uso XC8 che è il compilatore che ti rifila adesso la microchip con con mplabx....

    Ringrazio tutti quelli che sono intervenuti ! HO RISOLTO
    vi spiego come
    #define Fosc1 8000000 
    #define prescaler 256
    #define tempo_ms  0.1*10*1/Fosc1*4*prescaler*255*1000
    // ho semplicemente inserito 0.1*10 in questo modo il precompilatore capisce da solo che deve //usare usare dei float e non degli int
    
    
    #define cicli 120/tempo_ms
    
    ......
    int a=cicli;
    a forza di sbatterci la testa ce l'ho fatta!
    Un grazie ancora a tutti!
  • Scusa, ma li leggi i post?
    per riassumere: non serve

    0.1*10*1

    basta scrivere

    1.

    Per fr si che il precompilatore utilizzi i floating point, ti basta che nell'espressione ci sia un numenro con la virgola (basta scrivere "1." "0.").
    Per le regole sul numerical casting, tutta l'espressione viene valutata utilizzando il tipo umerico piu' potente: char -> short -> int -> long -> float -> double

    te lo avevo scritto secoli fa
  • Hai ragione! L'avevo letto dal telefonino e non ci avevo prestato particolare attenzione !!! Mea culpa ! Avrei potuto risolvere la faccenda molto prima !
Devi accedere o registrarti per scrivere nel forum
19 risposte