Časovač s atmel AVR

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
daavid
Příspěvky: 146
Registrován: 13 kvě 2013, 00:00

Časovač s atmel AVR

#1 Příspěvek od daavid »

Čau lidi, můžete mi někdo poradit, jak bych mohl sestavit takový časovač, aby: 40 s byl v provozu a 59 min 20 s byl nečinný (samozřejmě ne ten časovač, ale ta časované věc/relé) s Atmel AVR třeba s ATtiny13?
Ale potřeboval bych to podrobnějc, mám základní znalosti a nezhotovím to z této odpovědi: jedno malý AVR, čtyři tranzistory a nějakej napájecí adapter a máš to.
Díky moc. :wink: :wink:
Uživatelský avatar
monterjirka
Příspěvky: 2855
Registrován: 14 čer 2003, 00:00
Bydliště: Blížejov

#2 Příspěvek od monterjirka »

Jak podrobně to potřebuješ vysvětlit? V podstatě je to úplně jednoduchá aplikace, na to by stačil nějaký PIC nebo "2051"...
Podle frekvence krystalu si spočítáš počet cyklů na 1 vteřinu, napíšeš program, který "nahodí" příslušný bit na portu na H a procesor se bude tak trochu flákat a jen počítat, pak schodí bit na portu na L a bude zase počítat a až to napočítá, skočí na "začátek"...
Uživatelský avatar
daavid
Příspěvky: 146
Registrován: 13 kvě 2013, 00:00

#3 Příspěvek od daavid »

No, a jak se programuje PIC? S atmelem si poradím, ale s pic.
Uživatelský avatar
nekmil
Příspěvky: 787
Registrován: 06 bře 2005, 00:00
Bydliště: Havířov

#4 Příspěvek od nekmil »

Ano jeden malý AVR (Attiny2313) jeden tranzistor případně jedno relé.

$regfile = "attiny2313.dat"
$crystal = 1e6 '1MHz při vnitřním RC oscilátoru nebo změnit podle krystalu
$hwstack = 40 ' default HW stack
$swstack = 16 ' default SW stack
$framesize = 32

'konfigurace vystupu
Config Portd.2 = Output 'výstupní pin
Vystup Alias Portd.2 'výstupu přiřadíme jméno

Casovac:
Set Vystup 'nastavíme H na výstup
Wait 40 'počkáme 40 sekund
Reset Vystup 'nastavíme L na výstup
Wait 3560 'počkáme 3560 sekund
Goto Casovac
:)
Uživatelský avatar
silas15
Příspěvky: 90
Registrován: 09 úno 2013, 00:00

#5 Příspěvek od silas15 »

nebo můžeš použít funkci časovače timer/counter. A podle počtu přetečení vypočítat přesný čas. Např.: 1 přetečení je 6 ms * 10 je 60 ms atd. Víc o časovačích a jejich nastavení je tady:
http://maxembedded.com/category/microcontrollers-2/atmel-avr/avr-timers-atmel-avr/
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#6 Příspěvek od frpr666 »

1/ u attiny13a použij timer a vygeneruj si nějakou vhodnou periodu např.1s
2/ každou 1s např. odečítej 16bit proměnnou x o jedničku (+ hlídat přetečení např. 1hod=3600s), pokud bude x<40 nahodím výstup, jinak shodím výstup.

pozn. 1/ algoritmus generování 'přesné' 1s je např. zde:
http://www.romanblack.com/one_sec.htm#ZEZJ
(je to v C, takže lze přenést např. na Atmela)

pozn. 2/ pokud ti stačí tolerance času +-5%, attiny13a má internal calibrated oscillator
Odpovědět

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