- Messaggi: 51
- Ringraziamenti ricevuti 0
Migrazione codice Arduino vs codice PIC18F (MikroC)
11 Anni 2 Mesi fa #6
da Ultron
Risposta da Ultron al topic Migrazione codice Arduino vs codice PIC18F (MikroC)
E' quello che ho fatto. Ma sembra non esserci una corretta conversione dei tipi di dato. Anzi, mi pare che il buffer non si riempa correttamente.
Mi spiego:
Mentre con arduino (a cul0?) il buffer si riempe sempre con il primo dato (identificativo del sensore) dentro al primo "cassetto" del buffer (buffer [0]), mi pare che con il codice MikroC il buffer si riempa a caso, ovvero adesso con il primo Byte, adesso con il secondo, e adesso ancora con il 3° Byte.
E' chiaro che in quest'ultima condizione, se vado a fare un IF sul primo Byte, se non è quello dell'identificativo ma uno del valore del dato, sarà dura far apparire quello che voglio.
Ho smontato tutto a ho ripreso la configurazione Arduino, (più precisamente un Sanguino con ATmega 644 che ha più pin) ma stasera rimonto i PIC e vedo se riusciamo a fare un pò di DEBUG via Forum...
Mi spiego:
Mentre con arduino (a cul0?) il buffer si riempe sempre con il primo dato (identificativo del sensore) dentro al primo "cassetto" del buffer (buffer [0]), mi pare che con il codice MikroC il buffer si riempa a caso, ovvero adesso con il primo Byte, adesso con il secondo, e adesso ancora con il 3° Byte.
E' chiaro che in quest'ultima condizione, se vado a fare un IF sul primo Byte, se non è quello dell'identificativo ma uno del valore del dato, sarà dura far apparire quello che voglio.
Ho smontato tutto a ho ripreso la configurazione Arduino, (più precisamente un Sanguino con ATmega 644 che ha più pin) ma stasera rimonto i PIC e vedo se riusciamo a fare un pò di DEBUG via Forum...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Ultron
- Autore della discussione
- Senior Member
Riduci
Di più
11 Anni 2 Mesi fa #7
da Mauro Laurenti
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da Mauro Laurenti al topic Migrazione codice Arduino vs codice PIC18F (MikroC)
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
11 Anni 2 Mesi fa #8
da Ultron
Risposta da Ultron al topic Migrazione codice Arduino vs codice PIC18F (MikroC)
Grazie Mauro.
Stasera ho levato il 4550 e cablato il processore definitivo, che sarà un PIC24FJ64GA304 (ovvero TQFP 44 pin). Ho testato la solita demo di MikroC e funziona correttamente come sul 18F.
Domani riscrivo il codice per questa MCU e vedo se funziona. Vi aggiorno...
Stasera ho levato il 4550 e cablato il processore definitivo, che sarà un PIC24FJ64GA304 (ovvero TQFP 44 pin). Ho testato la solita demo di MikroC e funziona correttamente come sul 18F.
Domani riscrivo il codice per questa MCU e vedo se funziona. Vi aggiorno...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Ultron
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 51
- Ringraziamenti ricevuti 0
11 Anni 2 Mesi fa #9
da Ultron
Risposta da Ultron al topic Migrazione codice Arduino vs codice PIC18F (MikroC)
Allora... mi è arrivato il 32 bit, un PIC32MX795F512L, per cui ho smontato tutto e ricablato con questo, che sarà la MCU definitiva del progetto.
Mauro il tuo codice ha funzionato "quasi subito" in qunto era presente anhe un altro piccolo errore di distrazione.
Ho risolto subito questo secondo errore. Me ne sono accorto perchè con la tensione max funzionava (30V = 11111111, quindi lo shift dei bit era ininfluente) mentre con tensioni diverse no!
Cmq c'è un piccolo problema con la funzione FloatToStr: la conversione da float a stringa, che è un pò una porcheria. Invece che darmi numeri con lo zero dopo la virgola, me li da con la notazione scientifica, quindi invece che visualizzare, chessò, 0.000001234, mi esce fuori 1.234e-6, che visualizzato a display non è che sia il massimo dell'immediatezza...
Inoltre i numeri interi non me li da con la virgola, ovvero 21 è visualizzato 21 e basta, mentre in Arduino vedevo un bel 21.00 che rimaneva più elegante come formattazione insieme ad altri valori simili.
Il problema dello zero virgola in notazione scientifica l'ho risolto maldestramente mettendo (visualizzando) a zero qualsiasi valore minore di 1, tanto valori così bassi non mi interessa visualizzarli con questo dettaglio.
Se qualcuno ha un'idea migliore...
Potrei andarea "scavare" nelle librerie AVR GCC di Arduino e vedere se posso fare il porting della funzione di conversione di Arduino, e sostituirla al bruttissimo FloatToStr del MikroC. Secondo voi è fattibile?
Mauro il tuo codice ha funzionato "quasi subito" in qunto era presente anhe un altro piccolo errore di distrazione.
Ho risolto subito questo secondo errore. Me ne sono accorto perchè con la tensione max funzionava (30V = 11111111, quindi lo shift dei bit era ininfluente) mentre con tensioni diverse no!
Cmq c'è un piccolo problema con la funzione FloatToStr: la conversione da float a stringa, che è un pò una porcheria. Invece che darmi numeri con lo zero dopo la virgola, me li da con la notazione scientifica, quindi invece che visualizzare, chessò, 0.000001234, mi esce fuori 1.234e-6, che visualizzato a display non è che sia il massimo dell'immediatezza...
Inoltre i numeri interi non me li da con la virgola, ovvero 21 è visualizzato 21 e basta, mentre in Arduino vedevo un bel 21.00 che rimaneva più elegante come formattazione insieme ad altri valori simili.
Il problema dello zero virgola in notazione scientifica l'ho risolto maldestramente mettendo (visualizzando) a zero qualsiasi valore minore di 1, tanto valori così bassi non mi interessa visualizzarli con questo dettaglio.
Se qualcuno ha un'idea migliore...
Potrei andarea "scavare" nelle librerie AVR GCC di Arduino e vedere se posso fare il porting della funzione di conversione di Arduino, e sostituirla al bruttissimo FloatToStr del MikroC. Secondo voi è fattibile?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Ultron
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 51
- Ringraziamenti ricevuti 0
11 Anni 2 Mesi fa #10
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Migrazione codice Arduino vs codice PIC18F (MikroC)
per ora fai semplicemente funzionare il tutto.
Cerca di mantenere un livello di astrazione che ti permettera´ di cambiare il codice senza stravolgere il tutto.
Per la funzione float to string potresti fare una funzione che richiama un´altra funzione.
In questo modo se vorrai cambiare codice potrai semplicemente cabiare una funione e non cercare di cambiare tutti i punti di chiamata.
Saluti,
Mauro
Cerca di mantenere un livello di astrazione che ti permettera´ di cambiare il codice senza stravolgere il tutto.
Per la funzione float to string potresti fare una funzione che richiama un´altra funzione.
In questo modo se vorrai cambiare codice potrai semplicemente cabiare una funione e non cercare di cambiare tutti i punti di chiamata.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024