Nu este aceasta schema. Am incercat pe doua variante, prima cu Atmega88 si 4 cifre, iar a doua cu Atmega8535, inlocuit ulterior cu Atmega16, cu 6 cifre, folosind la ambele o rutina de afisaj accesata de intreruperea din Timer0, ulterior incercand si cu Timer2.
Acum fac referire la cel cu 8535:
La pornire, in program, am introdus un cod de scriere a registrului de control al RTC-ului si de setare a bitului de pornire a oscilatorului (bit 7 din prima linie, cea a secundelor din RTC). Am folosit prima data MCP7940 si pe urma am incercat cu DS1307. Stiu ca nu sunt echivalente 100%, dar am scris cod pentru amandoua, folosind aceleasi variabile. Pe liniile SCL si SDA am rezistente de pullup de 4,3 kiloohmi, iar pinii folositi sunt cei dedicati, PC0 si PC1 din Atmega. Dupa scrierea registrului si a bitului de pornire oscilator (1 in cazul MCP si 0 in cazul DS) urmeaza o bucla DO-LOOP, in care in functie de starea unui bit setat de iesirea SQWE din RTC, denumit de mine Set_read_flag, citeste memoria RTC-ului. SQWE este legat la INT0, in asa fel incat citirea sa se faca la fiecare secunda.
Daca am vazut ca nu reusesc sa citesc RTC-ul, am introdus diferite valori pentru variabilele ce trebuiesc afisate, pentru a verifica functionarea rutinei de afisaj, si functioneaza, inclusiv cu un cod ce genereaza ceas (secunde, minute, ore) in functie de Timer1.
Ma tot gandesc unde am gresit, ce nu am configurat bine.
Ca idee, PortulD este folosit pentru comanda LED-urilor si se suprapune peste pinii RXT si TXD ai USART si a trebuit sa dezactivez aceasta functie, netrecand in cod setarea baudrate. Inca o chestie, a trebuit sa dezactivez din fusebits JTAG-ul, care imi bloca o cifra, tot din cauza suprapunerii cu iesirea, dar catre unul din tranzistoarele din anozii afisajelor.
Am cerut codul tau in speranta ca imi pot da seama ce setari ai facut tu acolo.
Din pacate nu am acum codul scris de mine sa pot posta ce am facut, dar cand ajung acasa o sa incerc sa postez din el.
Nici cu DS18B20 nu am reusit sa comunic.