Portál AbcLinuxu, 12. května 2025 01:42

Dotaz: ATmega16 - čas při "nepřesných" přerušeních

26.10.2008 21:21 gorg
ATmega16 - čas při "nepřesných" přerušeních
Přečteno: 626×
Odpovědět | Admin
Mám naprogramované MCU. Využívám všechny timery. Pro první mám obsluhu přerušení. Problém je, že dochází k 230.39.. přerušení za sekundu, což pro běh hodin pro měření času není moc ideální. Vlastní program běží v cyklu while v main, takže jeho použití padá. Takže mám 2 možnosti. Buď donutit timer0, aby počet přerušení za sekundu byl celé číslo nebo něco jiného co nevím. Nyní to mám takhle:
...
ISR(TIMER0_OVF_vect) {
	TCNT0=6; // 14.745MHz/256/250=230,4 preruseni/sec - pocita s nastavenim interniho oscilatoru na 	
		// 14.745MHz. Pokud tak neni, je nutne prepocitat
		 // 256 (velikost counteru) - 250 (nas delitel) = 6
...
V main je:
...
bitSet(TCCR0, CS02);
bitSet(TIMSK, TOIE0);
...
Potřebuju, aby počet přetečení timeru0 byl kolem 230/s. Takže s těmi děliteli moc manipulovat nejde a netrefím nikdy celé číslo. Jak to vyřešit? Kdyžtak napište a dám sem ještě kus programu. Celý sem dávat ale nebudu, protože je hrozně dlouhý.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.10.2008 22:03 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
Rozbalit Rozbalit vše Re: ATmega16 - čas při "nepřesných" přerušeních
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro tyhle ucely maji atmega asynchronni citac s oscilatorem s externim hodinkovym krystalem (32.768kHz). Neslo by pouzit ten? A nebo pouzit nejakou lip delitelnou frekvenci hlavniho krystalu.
--- vpsFree.cz --- Virtuální servery svobodně
26.10.2008 22:34 gorg
Rozbalit Rozbalit vše Re: ATmega16 - čas při "nepřesných" přerušeních
Mohu použít přetečení timer1, když už ho používám na pwm frekvenci pro řízení motorků? Zdá se že takhle to funguje, ale neovlivní to nějak pwm, pokud jenom povolím přetečení a clock prescaler nechám na 1?
27.10.2008 00:18 gorg
Rozbalit Rozbalit vše Re: ATmega16 - čas při "nepřesných" přerušeních
Tak timer1 použít nešel, "blbnul", dal jsem tam timer2. Ráno moudřejší večera, ráno se mrknu proč timer1 nešel. :-)
Petr Tomášek avatar 27.10.2008 20:22 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: ATmega16 - čas při "nepřesných" přerušeních
Odpovědět | | Sbalit | Link | Blokovat | Admin
Něco takovéhoto by nepomohlo: http://en.wikipedia.org/wiki/Bresenhams_line_algorithm?
multicult.fm | monokultura je zlo | welcome refugees!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.