Hodiny s Atmega8

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#61 Příspěvek od FHonza »

Dovolil bych si tvrdit, že s RTC si pomůžeš. Už jenom kvůli tomu, že na knoflíkovou baterku poběží několik let. Taky proto ho vyrábí …
Jestli trváš na Arduinu, tak příkladů na internetu jsou mraky i v češtině. Ale myslím si, že obecně Arduino není vhodný framework pro aplikace, kde záleží na spotřebě.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#62 Příspěvek od buchar »

Ne ne FHonza, arduino mě už leze krkem. Právě proto, že je toho všude plno. Zapojení arduino+ ds1307 a ds3231 jsem viděl a ze zvědavosti vyzkoušel mnoho. Chtěl bych to vyřešit s tím RTC a proto prolézám net křížem krážem. Když narazím na nějaký kód, který propojuje atmegu8 a ds1307 tak ho nejdřív pročítám, abych ho trochu pochopil a pak ho zkouším použít. Samozřejmě ho musím upravit podle mého zapojení. Jenže jak už jsem psal, neumím programovat avr jako většina z vás tady a nikdy se mi nepodaří upravit vše tak, aby mi to fungovalo i když při kompilaci nevyskočí žádná chybová hláška.
Proto se obracím na toto fórum jestli by mi někdo nepomohl.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#63 Příspěvek od FHonza »

Mnohem lepší je dát sem kus kódu a diskutovat nad ním. V té knížce, co jsem odkazoval, je pěkný příklad. Použitá knihovna (v textu je odkaz ke stažení) je pěkně okomentovaná. I²C není nic složitého, obzvlášť když bude jeden master a jeden slave.

Edit: případně pěkný popis s příklady je zde.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#64 Příspěvek od buchar »

No jo, pro tebe to není nic složitého, ale co já "Céčkový panic"?
Já jsem zatím zvládnul přehodit segment displeje 1 a 2 z pinů 27 a 28 (SDA, SCL) atmegy na piny 23 a 24, abych mohl připojit ds1307 na SDA a SCL procesoru. Chvilku mi trvalo než jsem přišel na to jakou adresu mám zapsat, aby se segmenty zase rozsvítily, ale přišel jsem na to. No a teď už jen upravit původní kód. Na tu knihu jsem se díval. Obzvláště na článek "TWI", ale nejsem z toho dvakrát moudrý.
Ten odkaz na knihovnu jsem nějak přehlédl. Stáhnu a budu zkoušet s popsaným kódem.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#65 Příspěvek od Mahoney »

"TWI" je to samé co I²C, ale to asi víš.. Já neznám ATmega8, tak nevím jestli má HW I²C (a nechce se mi to zjišťovat), ale pokud má, tak v podstatě ani nemusíš moc studovat, jak to pracuje. Ale SPI je (alespoň dle mého názoru) příjemnější než I²C.

Navíc to řešíš zbytečně, když to máš do auta. Píchni napájení displeje (přes patřičné obvody, samozřejmě) na spínačku a MCU nech běžet na autobaterku, a je po problému.

Proto jsem psal to co jsem psal, mám z toho pocit, že sis toho chtěl naložit víc, než uneseš. Škoda času, elektronika není zas tak fajn věc, jak to vypadá, ale to je na tobě. Život umí překvapit.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#66 Příspěvek od buchar »

Mahoney, něco podobného mě už taky napadlo. Hodiny bych napájel normálně přes spínací skříňku a autobaterii bych přímo napojil na místo cr2032 ( vše samozřejmě přes stabilizátory). Tak bych mohl nechat tu úpravu co jsem udělal, že zhasne displej při odpojení napájení.
S tím ds1307 jsem to chtěl udělat, že se mi to zdá jednodušší, ale vidím, že je to složité na úpravu kódu, když tady nikdo nenabídne konkrétnější řešení.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#67 Příspěvek od FHonza »

ATmega 8 má hardwarové I²C (TWI). TWI tomu museli v Atmelu říkat, protože název I²C měl chráněn tuším Philips.

Případně použij (nebo alespoň nakoukni) nějakou hotovou knihovnu. Namátkou třeba: ds1307. Tam je to i s příklady.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#68 Příspěvek od buchar »

Já už jsem zkoušel několik knihoven, ale mrknu i na tuhle. Já jsem totiž takový, že dokud nějaký problém nevyřeším tak nemůžu klidně spát 😁.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#69 Příspěvek od FHonza »

Fakt to jenom složitě vypadá :) Je dobrý mít ponětí o tom, jak I²C funguje. Jak jsem psal, kdyby Ti nějaký kód nefungoval, tak ho dej sem.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#70 Příspěvek od buchar »

A není to knihovna pro použití s arduinem? Možná se ptám hloupě.
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#71 Příspěvek od FHonza »

Sorry, je to tak. Dá se použít i mimo Arduino, ale musel bys mít projekt v C++. Na tuhle radši zapomeň. :)

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#72 Příspěvek od buchar »

To je v poho.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#73 Příspěvek od buchar »

Tak jsem zkoušel tu DS1307 rozchodit a pořád se mi to nedaří. Shlédl jsem spoustu videí, prošel spoustu webů a zkoušel a zkoušel a zkoušel, ale nic. Prostě to neumím. A vím, že neumím správně nastavit adresy.
A tak mě napadlo, než upravovat původní program, nebude jednodušší udělat na toto zapojení nový?
Troufnul by si někdo z vás na to? Samozřejmě bych to nechtěl zadarmo. Každá práce má být odměněna.
Přílohy
Snímek obrazovky (30).png

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#74 Příspěvek od FHonza »

Adresu má DS1307 jedinou a nedá se měnit. 7 bitová adresa je 0b1101000,
tj. pro zápis do RTC bude 0b11010000, pro čtení z RTC 0b11010001. Nejnižší bit se mění podle toho, zda chceš číst nebo zapisovat.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#75 Příspěvek od buchar »

FHonza díky za nápovědu. Teď zrovna laboruji s jedním kódem. Myslíš, že by jsi se na něj mohl podívat? Je to kód ze zapojení hodin ze strany 1. tohoto vlákna.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“