Modificare una define per nuovo avvio

di il
14 risposte

Modificare una define per nuovo avvio

Ciao

ho il seguente problema:

devo modificare un programma su un microcontrollore con linguaggio C.
Attualmente questo micro comanda un led: il suo input è il valore dal sensore, verifica che tale valore sia entro un range (MIN, MAX) e accende o spegne un led.
Questo range attualmente è dato da due DEFINE : MIN_VALUE e MAX_VALUE.
Ebbene con la modifica che devo implementare invece di avere un range prefissato devo avere l'ultimo valore prelevato+-RANGE.
Mi serve quindi memorizzare l'ultima valore misurato.

cioè se prima avevo:

misuraT1 = 7 , (misura al tempo T1)
verifica MIN_VALUE < 7 < MAX_VALUE
dove MIN_VALUE e MAX_VALUE sono define


ora deve essere
misuraT2 = 7 (misura al tempo T1)
verifica tra MIN_VALUE_T1 < 7 < MAX_VALUE_T1
dove MIN_VALUE_T1 = misuraT1 - RANGE_CONST
e MAX_VALUE_T1 = misuraT1 + RANGE_CONST

alla successiva misurazione (misuraT3 ) si avrà pertanto
misuraT3 = numero
veritica MIN_VALUE_T2 < numero < MAX_VALUE_T2




il mio problema è memorizzare il valore della misura nuova.
E' possibile modificare una define e lasciarvi il nuovo valore memorizzato per un successivo riavvio.

spero di essermi spiegato bene, nel caso riprovo

14 Risposte

  • Re: Modificare una define per nuovo avvio

    Spiegato? Cosi' cosi'.

    NO, non puoi modificare una DEFINE per il semplice fatto che NON ESISTE una volta che il programma e' stato compilato.
    Salva le informazioni che ti servono su un file. Al riavvio dell'applicazione, le rileggi.
  • Re: Modificare una define per nuovo avvio

    Non ti sei spiegato molto, ma credo di aver capito


    No, non è possibile
    In nessuna maniera, né usando define né usando variabili

    Nel microcontrollore hai il compilato del programma
    Non puoi salvare modifiche al sorgente del programma


    Al massimo se hai eeprom flash o simili puoi salvare e ricaricare il valore delle variabili, ma non è immediato farlo


    Spiega bene quello che vuoi fare e cosa hai a disposizione per farlo
  • Re: Modificare una define per nuovo avvio

    StandardOil ha scritto:


    Non ti sei spiegato molto, ma credo di aver capito


    No, non è possibile
    In nessuna maniera, né usando define né usando variabili

    Nel microcontrollore hai il compilato del programma
    Non puoi salvare modifiche al sorgente del programma


    Al massimo se hai eeprom flash o simili puoi salvare e ricaricare il valore delle variabili, ma non è immediato farlo


    Spiega bene quello che vuoi fare e cosa hai a disposizione per farlo

    si ho una eeprom.

    ho un sensore di volo controllato da un st.
    e devo di volta in volta cambiare gli intervalli.
    ora sono fissi e definiti da due define.

    mi toccherà salvare i valori in eeprom.
    chissà quanti casini farò
  • Re: Modificare una define per nuovo avvio

    migliorabile ha scritto:


    Spiegato? Cosi' cosi'.

    NO, non puoi modificare una DEFINE per il semplice fatto che NON ESISTE una volta che il programma e' stato compilato.
    Salva le informazioni che ti servono su un file. Al riavvio dell'applicazione, le rileggi.
    lo temevo
  • Re: Modificare una define per nuovo avvio

    Devo memorizzare nell'eeprom di un STM8L151F3:
    i risultati di un sensore di tempo di volo.

    se questo sensore al tempo t1 misura 7, il suo range è 7 +-2 per la misura nel tempo t2,
    e via dicendo se nel tempo t2 misura 8 allora il suo range nel tempo t3 sarà 8+-2
    quindi nel tempo t3 saranno in range i valori da 6 a 10.

    ho visto dal datasheet:
    https://www.st.com/resource/en/datasheet/stm8l151f3.pd
    che i valori dei registri sono da 0x001000 a 0x0010FF
    e che la eeprom contiene 256 byte.
  • Re: Modificare una define per nuovo avvio

    E quindi? Vedi nel datasheet come si scrive nella eeprom e fallo
  • Re: Modificare una define per nuovo avvio

    oregon ha scritto:


    E quindi? Vedi nel dataset come si scrive nella eeprom e fallo
    einstein
  • Re: Modificare una define per nuovo avvio

    E però te lo devi fare da solo

    https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm8-embedded-software/stsw-stm8061.html#get-software

    Il driver è stm8l15x_flash.c

    Che poi, come hai fatto a leggere da un sensore che è più complesso che leggere/scrivere su memoria non volatile?

    Occhio a scrivere in continuazione che la flash e la eeprom si rompono
  • Re: Modificare una define per nuovo avvio

    Weierstrass ha scritto:


    E però te lo devi fare da solo

    https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm8-embedded-software/stsw-stm8061.html#get-software

    Il driver è stm8l15x_flash.c
    credo di aver capito come si fa. domani applico e constato che non ho capito un c@@@

    Weierstrass ha scritto:


    Che poi, come hai fatto a leggere da un sensore che è più complesso che leggere/scrivere su memoria non volatile?
    ho avuto fortuna

    Weierstrass ha scritto:


    Occhio a scrivere in continuazione che la flash e la eeprom si rompono
    ottimo suggerimento grazie.
    esporrò all' hardwarista/firmwarista il problema.
  • Re: Modificare una define per nuovo avvio

    Montanaro ha scritto:


    oregon ha scritto:


    E quindi? Vedi nel dataset come si scrive nella eeprom e fallo
    einstein
    Beh ... non vorrai che ci studiamo il funzionamento del micro e ti scriviamo il codice, genio ...
  • Re: Modificare una define per nuovo avvio

    Montanaro ha scritto:


    Weierstrass ha scritto:


    Che poi, come hai fatto a leggere da un sensore che è più complesso che leggere/scrivere su memoria non volatile?
    ho avuto fortuna
    E vedi se la fortuna ti assiste ancora e prova a scrivere il codice per la eeprom-
  • Re: Modificare una define per nuovo avvio

    oregon ha scritto:


    Montanaro ha scritto:


    Weierstrass ha scritto:


    Che poi, come hai fatto a leggere da un sensore che è più complesso che leggere/scrivere su memoria non volatile?
    ho avuto fortuna
    E vedi se la fortuna ti assiste ancora e prova a scrivere il codice per la eeprom-

    Ma in realtà non sembra così difficile. Dovrebbe essere qualcosa di simile:


    CENSORED

    Ci sarà certamente qualche svista. Domani lo provo sull'oggetto e correggo. Sempre se qualche buon cuore non voglia dirmi prima un eventuale errore
  • Re: Modificare una define per nuovo avvio

    oregon ha scritto:


    Montanaro ha scritto:


    oregon ha scritto:


    E quindi? Vedi nel dataset come si scrive nella eeprom e fallo
    einstein
    Beh ... non vorrai che ci studiamo il funzionamento del micro e ti scriviamo il codice, genio ...
    non lo faresti per me ?
  • Re: Modificare una define per nuovo avvio

    No. Come da regolamento, per nessuno.

    Ma se hai scritto del codice che non funziona, postalo qui.
Devi accedere o registrarti per scrivere nel forum
14 risposte