Projekt hodin s ATmega8 a se zobrazením na 7-segmentovém LCD

Blikátko při “opravený” meze musí blikat stále stejně, tedy 1x za vteřinu.
Co je rychleji? 2x, 4x…?
Co s těma fuses pořád děláš? Zprovozni mcu, v ponyprogu dej “read fuses” a udělej screen. Pak to překlikej tak, jak se to tam pokoušíš zapsat (než to zapíšeš a mega zdechne) a zas udělej screen. Oba sem vlož.
Taky fotku toho zapojení bys mohl pořídit.

to Janicek: Ta ATmega z Teba musi mat hovadsku radost :slight_smile:

to teda má , asi ji zarámuju na čestné místo :smiley:
interní oscilátor fuses.doc (32 KB)

tady je zapojení na kontaktním poli
zapojení blikátka.rar (761 KB)

tady jsou pojistky na zvýšení rychlosti , jen jejich scen, naprogramuji až po odsouhlasení :cry:
před naprogramováním na vyšší rachlost.doc (32 KB)

S tím CKSEL0 jsem se splet, nech ho prázdný (ikdyž by to nemělo ovlivnit schopnost práce mcu). Jinak by to mělo bejt vpořádku.

Kdyžtak můžeš zkusit povolit BOD (zaškrtnout BODLEVEL a BODEN). Potom když stále nic, zkus jinou hodnotu kondiků u krystalu jak jsem psal výš.

Složitější jsi mi to s těma obrázkama udělat nemohl co :slight_smile: Proč je neuložíš jako gif nebo jpeg a nepřidáš rovnou?

Kterej chytrák naprogramoval “léčitele” tak, aby aktivoval WDT… Prudce inteligentní nápad.

protože se mi pořád daří zablokovat ATmegu8, postavil jsem si toto diy.elektroda.eu/atmega-fusebit-doctor-hvpp/
výborný přípravek na oživení " mrtvých " procesorů. Díky tomu se mi taky podařilo nastavit pojistky tak, aby procesor běhal vychleji a když vytáhnu X-tal, tak přestane Led blikat. Uvidíme co přinese program pro hodiny :unamused:

Teď máš tedy správně nastaveny pojistky pro krystal. Můžeš je ponyprogem načíst a dát sem obrázek? Pokud je jen načteš, nic procesoru nehrozí.
Zajímalo by mě, proč to doteďka nechodilo.

v příloze jsou 2 varianty nastavení pojistek, kdy Led bliká velmi rychle. Avšak při pokusu nahrát program pro hodiny s těmito pojistkama, opět vyskočí hláška o chybě, nelze naprogramovat mcu a jde k doktorovi :imp:
Nastavení fusses pro externí krystal hodin s.doc (44 KB)

Vskutku nechápu, proč obrázky stále cpeš do wordu.

Nemáš náhodou “L” verzi procesoru (mega8L)?
Druhá varianta je lepší, jen s tím rozdílem, že pro rychlý krystal 14MHz by měla být CKOPT zaškrtnuta (zesilovač oscilátoru pracuje s plným rozkmitem).
Zaškrtnutím CKSEL0 jsi skrátil startovací časy oscilátoru, pro krystal jsou doporučeny delší.
Opravdu nechápu, co s tím pořád děláš. S takovými problémy jsi snad první…

dobrý den všem, po delším čase chci Vám všem moc poděkovat ! za rady, názory a čas ! konečně se mi podařilo naprogramovat hodiny. Musel jsem udělat pár podstatných změn a to : postavit hodiny na dps, postavit tester krystalů, postavit sériový programátor s cca 30 až 40 cm dlouhými programovacímy vodiči, dat na radu - postavit blikátko no a zkoušel jsem nastavení fusses pro interní ooscilátor, tak externí krystal, podle konfiguračních slov www.ok1kvk.cz ., kterému patří taktéž velký dík. Snad jen - jak docílím programem to, aby na pinu PD5 kde je +1,72V bylo -1,75V a na pinech PC2,PC3 kde je nyní -1,72V bylo +1,72V. Jde o to, aby se rozsvítila dvojtečka uprostřed segmentovky, bohužel to ještě neumím. Ještě jednou velké díky všem janicek

Kde jsi v zapojení s pouze kladným napájením vzal záporné napětí? :open_mouth:
Samozřejmě to lze nábojovou pumpou (klidně i naprogramovanou) nebo spínaným zdrojem, ale k čemu by ti to bylo?. Nehledě na to, že by to ochranné diody procesoru nedovolily.

Proti čemu to napětí měříš? Neprohodils někde kabely od měřáku? :slight_smile:.

měřím to na patici segmentovky. Podle datasheetu má svítit dvojtečka takto : na pinu 3 mínus oproti pinu 8 a 6 plus, a takto má svítit. Na multimetru jsem to měřil a u naměřené hodnoty je znaménko mínus , tedy - 1,72V. Předpokládám tedy opačnou polaritu napětí na pinech segmentovky.

Jenže ty nechceš -1.7 na PD5, ale na pinu 3 proti pinu 8. A to je zásadní rozdíl. Jesli studuješ nějakou elektrotechnu, tak si zopakuj prvák.
Na 8 přivedeš “1” a na 3 dáš “0”. Tím budeš mít napětí na dvojtečce a zbytek se ztratí na odporu.
Na pinech procesoru je buď (téměř) 0V nebo napájecí napětí (a měří se proti zemi). Rozhodně se tam nemohou vyskytovat taková numera jako 1.75V (pokud nejde o ADC vstup). Pokud by se přeci jen vyskytly, máš někde těžkej průser.

na patici mcu jsem změřil napětí : PD5 (pin11) proti GND (pin8) 2,56V. Pak PC2, PC3 (pin25,26) proti GND shodně 0,74V

Jenže ty to určitě měříš za chodu displeje že? Těch 2.5V je zhruba střední hodnota, protože se ti tam střídá 0 a +5V. Voltmetr je ti v tomhle případě k ničemu. To bys viděl na osciloskopu.
Každopádně někde v programu máš proměnný, který vypisuješ na PORTD během multiplexování. Pokud tedy chceš rozsvítit pin DOT displeje, tak za zápis na PORTD přidej příkaz pro vynulování PD5 ( PORTD &= ~(_BV(PD5)); ).

Jesli máš to zapojení z předcházející stránky, tak chudák procesor :frowning:. Při rozsvícení “8” na segmentu leze totiž z pinu portuC 80mA. Procesor má dovoleno pouze 40mA.

ano, měřím za chodu. zapojení je z předcházející stránky. Jelikož programovat neumím, protože se to při chvilkách učím, prosím o pomoc při úpravě programu. děkuji

Program máš bezezměn z dříve uvedeného zdroje, nebo je už modifikovaný? Jesli druhá možnost, tak ho sem vlož jako přílohu (pro jistotu celý projekt).

zde je odkaz na projekt : ok1kvk.cz/web/index.php/technika … -s-atmega8
hodiny.c (2.6 KB)

switch(show_t) { case 0: //show minutes PORTC = 1<<PC2; PORTD = (~segs[min_1]) & ~_BV(_s_dot); break; case 1: //show 10 minutes PORTC = 1<<PC3; PORTD = (~segs[min_10]) & ~_BV(_s_dot); break; case 2: //show hours PORTC = 1<<PC4; PORTD = (~segs[hour_1]); break; case 3: //show 10hours PORTC = 1<<PC5; PORTD = (~segs[hour_10]); break; default: show_t = 0; break; }