Sari la conținut
ELFORUM - Forumul electronistilor

indrumare pentru un ceas cu ds1307


vasile eugen

Postări Recomandate

SalutareAs avea nevoie de o indrumare,in o finalizare a unui ceas cu Ds1307 si Atmega 8,am reusit sa fac rutina de ceas si data,dar pentru conectare butoanelor de setare nu am reusit.Am incercat cu functiile DEBONCE si GOSUB la porturile la care am pus butoanele dar si cu functiile DIMxx,CONFIGxx si IF THEN xxdar nu reusesc sa fac setarea.Sau se face sub forma de meniu cu functiile de setare?Multumesc anticipat.

Link spre comentariu
  • 3 luni mai târziu...
  • Răspunsuri 19
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • srdjan

    10

  • vasile eugen

    5

  • nana

    3

  • yo6pir

    1

Top autori în acest subiect

da l-am testat,este functionabil cel de pe acel sait.Am inca doua softuri de ceas cu DS1307.Vreau sa incerc acum cu display cu leduri,numai sa fiu mai liber cu serviciul.

Link spre comentariu

va salut. tot asa ceva incerc sa fac si eu dar de la 0. delatfel nici nu m-am uitat peste proiect. folosesc stk500, HD44780, atmega8, DS1307. problema e afisajul. de cate ori afisez ceva pe el...sta putin afisat dupa care dispare. daca reusesc sa resetez MCU-ul pe perioada cat textul e afisat acesta nu mai dispare. mentionez ca folosesc libraria lcd_lb din avr-gcc.

aveti idee de ce se intampla aceasta?

codul de test este:

#define F_CPU 1000000ul#include <avr/io.h>#include <stdlib.h>#include <util/delay.h>#include <stdio.h>#include "lcd_lib.h"#include <string.h>#define LCD_4bit#define LCD_RS 0 //define MCU pin connected to LCD RS#define LCD_RW 1 //define MCU pin connected to LCD R/W#define LCD_E  2 //define MCU pin connected to LCD E#define LCD_BL 3 //define MCU pin connected to LCD BL#define LCD_D4 4 //define MCU pin connected to LCD D3#define LCD_D5 5 //define MCU pin connected to LCD D4#define LCD_D6 6 //define MCU pin connected to LCD D5#define LCD_D7 7 //define MCU pin connected to LCD D6#define LDP PORTD //define MCU port connected to LCD data pins#define LCP PORTD //define MCU port connected to LCD control pins#define LDDR DDRD //define MCU direction register for port connected to LCD data pins#define LCDR DDRD //define MCU direction register for port connected to LCD control pinsint main(void){	LCDinit();//init LCD 8 bit, dual line, cursor right	LCDBLon();	LCDclr();//clears LCD	LCDhome();//cursonr home		LCDstring("SOME TEXT", 9);}
Link spre comentariu

Scuze, is cam obosit, poate vorbesc prostii.Dupa linia LCDstring("SOME TEXT", 9);pune ceva de genul for(;;); sau while(1);altfel programul se termina, si chiar nu mai stiu in ce stare trece procesorul.

Link spre comentariu

am incercat si asta... nu de la aia era problema. intamplator am scos panglica de pe placa de dezvoltare si dupa ce am pus-o innapoi nu a mai facut probleme... :nebunrau: merci oricumLE: ba nu... altu e baiu. dupa ce reprogramez nu se reseteaza LCD-ul si dupa initializare apar rezultate haotice... ideea e ca tensiunile ce apar pe traseele de date si control mentin "alimentat suficient" LCD-ul...cum fac sa "scap" de efectul acesta? ar trebui sa folosesc un tranzistor pentru a stinge LCD-ul cand e resetat MCU?

Link spre comentariu

problema nu este din cod daca zici ca iti afiseaza bine odata si dupa dispare, decat daca nu e in bucla. Si apelezi din nou memoria LCD_ului si rescri alta informatie, LCD_ul mentine datele in memorie si le afiseaza pana la primirea altora noi. Deci probabil dupa executarea scrieri in memorie se intampla ceva cu pinul R/W, masoara cu osciloscopul acel pin si vezi ce se intampla. Incearca mai intai sa nu folosesti BL mergi standard, dar nu prea cred ca are vre-un amestec cu partea digitala.

Link spre comentariu

pfua...trebuie sa-mi fac placi de extensie pt stk500 :) nu routeaza toti pinii asa cum ar fi evident spre porturile de iesire... iar cu soluturile de extensie e destul de incomod cand lucrezi pe breadboard. desi am reusit sa rezolv destul de multe am o problema.cand folosesc lcd_lib si trimit un text spre afisare cu LCDstring("text", 4); imediat dupa ce am asezat cursorul cu LCDGotoXY(0,0); imi afiseaza textul dar mai in dreapta cu cateva pozitii. daca dau imediat dupa LCDinit(); reapare unde trebuie textul. aveti idee de ce si ce as putea face?

Link spre comentariu

1 se pune LCDstring('text',4); Deci mai intai trebuie initializat LCD-ul dupa care daca vrei sa afisezi default nu mai trebuie sa dai pozitionarea cursorului. Pune direct functia de afisare. El la initializare aseaza cursoru direct in poz 0,0.Acu sincer nu prea inteleg ce vrei tu sa faci acolo.2 Uitate exact cum lucreaza acele librari ca sunt descrise modu de adresare a datelor etc, daca nu merge nici asa atunci pune mana pe un debuger.

Link spre comentariu

am studiat integral libraria imediat ce am vazut sf-urile ce-mi apar. indiferent pe care din randuri afisez in momentul in care trimit un text cu functia LCDstring() imi apare cu 8 caractere mai in dreapta. daca execut LCDinit() imediat dupa LCDstring() imi apare textul exact unde ar trebui. asta nu inteleg de ce se intampla asa...mentionez ca o chestie similara patesc si cu LCDsendChar('x'); si anume nu imi apare caracterul (sau apare la coordonate dincolo de intervalul ecranului) si abia la chemarea metodei LCDinit() apar chiar unde trebuie :|. offf... :sparge:

Link spre comentariu

Vă salut! Revin cu proiectul meu. Am ajuns la versiunea finala a hardware-ului pe breadboard.

E clar ca o poză face cât 1000 de cuvinte deci iată 2000 de cuvinte:

Posted Image

Posted Image

 

important e că am reuşit să înghesui tot ce am vrut pe un attiny2313 (şi nu-mi fac griji nici la capitolul soft)

deocamdata (si presupun ca asa o sa ramana) cuprinde urmatoarele:

 

1 x attiny2313

1 x ds1307

1 x 32768Hz quartz crystal

4 x push button NO

2 x two digit 7 segments LED display (common anode)

4 x NAND (pentru inversare; doar doua sunt folosite)

4 x AND (alaturi de NAND pentru decodificare a doi pini pentru anozii display-urilor

4 x BC639 (drivere pentru anozii afisajelor)

1 x 7805

2 x 5mm LED

13 x rezistente 1/4W

1 x capacitor 100nF

si vreo 6-7 metri de fire pentru breadboard.

 

de maine ma apuc de soft dar mai cu lene...

Link spre comentariu

dupa ce m-am stresat cateva seri am ajuns la disperare cu afisajul. m-am enervat si am zis sa incerc softul din link-ul dat de "vasile eugen". si bine am facut. merge ceas :)am adaptat traseele la circuitul din link. foarte probabil librariile folosite de mine aveau scapari ori legate de BUSY FLAG ori de timming. daca o sa am timp de hardcode sau sa "adaptez" substratul la nevoi sau nevoile la substrat o voi face. important e ca am ceva functional desi usor limitat (lipsa calendar) si insuficient personalizat. important e ca am invatat I2C (TWI) fara mult stress. multumiri si la mai mare :)

Link spre comentariu

dupa ce m-am stresat cateva seri am ajuns la disperare cu afisajul. m-am enervat si am zis sa incerc softul din link-ul dat de "vasile eugen". si bine am facut. merge ceas :)am adaptat traseele la circuitul din link. foarte probabil librariile folosite de mine aveau scapari ori legate de BUSY FLAG ori de timming. daca o sa am timp de hardcode sau sa "adaptez" substratul la nevoi sau nevoile la substrat o voi face. important e ca am ceva functional desi usor limitat (lipsa calendar) si insuficient personalizat. important e ca am invatat I2C (TWI) fara mult stress. multumiri si la mai mare :)

I2C e un protocol destul de usor insa daca il implementezi hardware sa vezi cand mai faci si controlul mesajelor atunci distractie, insa daca o faci dupa totu e o boierie, Eu am reusit sa pun 7 dispozitive pe acelasi buss deci 2 fire = 7 dispozitive si le citesc pe toate in 300 de ms. Deci destul de repede si folosesc doar frecv de 100kHz deci se poate si mai repede.
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări