Imparare a scrivere una eeprom partendo da 0

  • lo_sty
  • Autore della discussione
  • Giovane Utente
  • Giovane Utente
Di più
10 Anni 3 Mesi fa #6 da lo_sty
Risposta da lo_sty al topic Imparare a scrivere una eeprom partendo da 0
Primo problema .......
Ho inserito nel codice un controllo sul pulsante " S2 " della scheda FREEDOM LIGHT ma in compilazione mi da errore di sintassi .
In pratica quando viene premuto " S2 " il pic mi scrive dei valori preimpostati in memoria sulla eeprom ....
Ho tolto il ciclo while ed al suo posto ho messo un for ( ;; )
Ecco il codice
Code:
#define BtnStart = PORTBbits.RB5 EnablePullups(); for(;;) { if (!BtnStart) { start; ComWrite(0xA0); ComWrite(0X08); ComWrite(0xFF); stop; } }

Mi da errore di sintassi sull'if .
Da cosa dipende secondo voi ?

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
10 Anni 2 Mesi fa #7 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Imparare a scrivere una eeprom partendo da 0
Ciao Losty!

dal codice mi aspetto che start sia una funzione o macro,
potrebbe essere che la sintassi giusta sia start(); e non start;

L'errore e' subito dopo l'if ma e' segnalato sull'if.

Controlla anche stop;

Saluti,

Mauro

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • lo_sty
  • Autore della discussione
  • Giovane Utente
  • Giovane Utente
Di più
9 Anni 9 Mesi fa #8 da lo_sty
Risposta da lo_sty al topic Imparare a scrivere una eeprom partendo da 0
Dopo tanto tempo mi sono rimesso su questo studio .
Ho buttato il progetto che era tutto sbagliato .
Ho fatto una libreria che gestisce lo start , stop , ricevi dati , invia dati . ora il problema sta nel valore delle delay tra un livello logico a l'altro per creare una comunicazione da 100Khz
Questo è il delay che ho realizzato , il classico bloccante
Code:
void Delay_I2C(unsigned long param) { unsigned long timer; timer = param; while (timer != 0) { timer--; //ClrWdt(); //NOP(); } }
Ora non riesco a calcolare il valore da inserire .
Uso un quarzo da 20 Mhz quindi un ciclo macchina dovrebbe durare 0,0000002 secondi . Per una trasmissione dati da 1Khz devo portare un ritardo di 0,00001 .
Ho calcolato che il valore da inserire è 50 ( 0,0000002 * 50 = 0,00001 ) , giusto ?

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • alfa75
  • Platino Utente
  • Platino Utente
Di più
9 Anni 9 Mesi fa - 9 Anni 9 Mesi fa #9 da alfa75
Risposta da alfa75 al topic Imparare a scrivere una eeprom partendo da 0
Ciao losty

i conti che hai fatto non mi tornano tanto...(se ti serve 1kHz mentre sono ok per 100kHz)
analiziamo la cosa
con un quarzo di 20MHz un ciclo macchina durerà FOSC/4 quindi 5MHz che sono t=1/f -> t=(1/(5*10^6)) -> t=200*10^-9 S -> 200nS per intenderci
quindi se vuoi un ritardo di 1kHz che in secondi diventa t=(1/(1*10^3) -> t=1mS
applicando un po di proprieta delle potenze facciamo diventare per praticita quei 200nS in 2x10^-7 S
quindi..
il fattore moltiplicativo per ricavare 1kHz sarà...
(1*10^-3)/(2*10^-7)=0.5*10^4 -> eliminado la virgola 5*10^3 cioè 5000
ma se ti servono 100kHz diventera 50

per sicurezza facciamo la prova del 9....

5000*200ns -> 5000*(200*10^-9)=1*10^-3S cioe 1mS che equivale ad 1kHz



dopo questa parentesi matematica spero di esserti stato di aiuto :)

ciao
Andrea
Ultima Modifica 9 Anni 9 Mesi fa da alfa75.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • lo_sty
  • Autore della discussione
  • Giovane Utente
  • Giovane Utente
Di più
9 Anni 9 Mesi fa #10 da lo_sty
Risposta da lo_sty al topic Imparare a scrivere una eeprom partendo da 0
Grazie per la risposta .
Mi sono sbagliato , il segnale è da 100Khz e non da 1Khz .
Visto che il valore 50 è esatto vuol dire che c'è qualche errore nel codice perchè la eeprom non viene scritta

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi