Lettura dati da RTC PCF8563

  • Cecco
  • Autore della discussione
  • Visitatori
  • Visitatori
13 Anni 5 Mesi fa - 13 Anni 5 Mesi fa #1 da Cecco
Lettura dati da RTC PCF8563 è stato creato da Cecco
Sto smanettando col RTCC della Freedom2.
Ho scritto qualche riga per mandare a video ora,data e giorno della settimana leggendo dal PCF8563.
Funziona tutto alla perfezione tranne quando introduco nel codice la stampa del giorno della settimana.
questo il main:
Code:
void main() { lcd_init(); RTC_reset();//reset RTC D_T_set(); //setta data e ora while (true){ D_T_read(); //legge data e ora lcd_gotoxy(3,1); printf(lcd_putc,"%02u:%02u:%02u", hour, min, sec); lcd_gotoxy(1,2); printf(lcd_putc,"%02u-%02u-20%02u %02u", day, month, year, bdow); // se bdow è inserito, la lettura di tutto è sballata. }} [b]questa la parte dell driver:[/b] //setta ora e data void D_T_set(){ output_float(PIN_C0); output_float(PIN_C1); i2c_start(); i2c_write(0xa2); i2c_write(0x00); i2c_write(0x20); //stoppa RTC i2c_write(0x02); //indirizzo dei secondi (primo) i2c_write(0x00); //set secondi i2c_write(0x05); //set minuti i2c_write(0x20); //set ora i2c_write(0x01); //set giorno i2c_write(0x05); //set weekday i2c_write(0x12); //set mese i2c_write(0x11); //set anno i2c_stop(); i2c_start(); RTC_reset(); } //legge ora e data da PCF void D_T_read(){ output_float(PIN_C0); output_float(PIN_C1); i2c_start(); i2c_write(0xa2); i2c_write(0x02); i2c_start(); i2c_write(0xa3); bsec = i2c_read(0); //legge secondi i2c_start(); i2c_write(0xa3); bmin = i2c_read(0); //minuti i2c_start(); i2c_write(0xa3); bhour = i2c_read(0); //ore i2c_start(); i2c_write(0xa3); bday = i2c_read(0); //giorno i2c_start(); i2c_write(0xa3); bdow = i2c_read(0); //weekday i2c_start(); i2c_write(0xa3); bmonth = i2c_read(0); //mese i2c_start(); i2c_write(0xa3); byear = i2c_read(0); //anno i2c_stop(); //conversioni sec = bcd2bin(bsec & 0x7F); min = bcd2bin(bmin & 0x7F); hour = bcd2bin(bhour & 0x3F); day = bcd2bin(bday & 0x3F); month = bcd2bin(bmonth & 0x1F); year = bcd2bin(byear); //dofw= bin2dec[bdow]; <<<<<--------------- è giusta? }

Non ho capito se l'errore sta nel ciclo di lettura oppure nel formato errato nel printf.
Ultima Modifica 13 Anni 5 Mesi fa da Mauro Laurenti.

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

  • Cecco
  • Autore della discussione
  • Visitatori
  • Visitatori
13 Anni 5 Mesi fa - 13 Anni 5 Mesi fa #2 da Cecco
Risposta da Cecco al topic Re: Lettura dati da RTC PCF8563
Aggiungo inoltre che ho provato anche a passare alla printf il valore non convertito ma non ho visto nessun miglioramento.


Come si fa per inserire il codice in una finestra separata?
Ultima Modifica 13 Anni 5 Mesi fa da Cecco.

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

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
13 Anni 5 Mesi fa #3 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Lettura dati da RTC PCF8563
Ciao,

accertati che il formato delle variabili sia corretto e che le dimensioni degli array usati siano corrette.
Caratteri strani sono spesso sintomi di array non propriamente terminati con /0 o di dimensioni errate.
Nel codice sopra vedo dei caratteri strani ma potrebbe essere legato al copia e incolla.

Per scrivere il codice in un altra finestra:

Seleziona il codice e premi il tasto "code" nella finestra del forum in cui stai scrivendo.
Altrimenti scrivi code e /code rispettivamente all'inizio e alla fine del codice.
Devi includere le due parole tra parentesi quadre (cosa che non ho fatto altrimenti sarebbero state considerate parole chiave, e sarebbero state rimosse dal testo).


Saluti,

Mauro

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

  • Cecco
  • Autore della discussione
  • Visitatori
  • Visitatori
13 Anni 4 Mesi fa - 13 Anni 4 Mesi fa #4 da Cecco
Risposta da Cecco al topic Re: Lettura dati da RTC PCF8563
Tutto OK, problema risolto.

In pratica stavo leggendo tutti gli otto bit del registro dei Weekdays invece dei primi tre.
Ho applicato un & bitwise e tutto è andato a posto.

Ho corretto la riga incriminata in:
Code:
wday = bcd2bin(bdow&0x07); //prende in considerazione solo i primi 3 bit, vedi datasheet

ciao.
Ultima Modifica 13 Anni 4 Mesi fa da Cecco.

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

  • Lello Guidi
  • Platino Utente
  • Platino Utente
Di più
13 Anni 1 Ora fa #5 da Lello Guidi
Risposta da Lello Guidi al topic Re: Lettura dati da RTC PCF8563
Hai creato delle librerie apposite?
E' possibile averle ?
Saluti

Lello

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

Moderatori: Mauro LaurentiStefA

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