- Messaggi: 32
- Ringraziamenti ricevuti 0
Imparare a scrivere una eeprom partendo da 0
- lo_sty
- Autore della discussione
- Giovane Utente
-
Less
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
Mi da errore di sintassi sull'if .
Da cosa dipende secondo voi ?
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.
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
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
-
Less
Di più
- Messaggi: 32
- Ringraziamenti ricevuti 0
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
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 ?
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();
}
}
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
-
Less
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
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
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
-
Less
Di più
- Messaggi: 32
- Ringraziamenti ricevuti 0
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
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 Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- Timer0 e interrupt
- da marcoilgrande
-
- Strana anomalia LT lib module_EEPROM
- da marcoilgrande
-
- Nuova versione Kicad 9
- da Mauro Laurenti
-
- MODULO GSM SIM900A
- da embedded
-
- Freedom III e compilazioni fallite
- da Black