ICP1 pin, Timer 1 - jak nastavit? (mega32)

Ahoj, Mám tu trochu (dost) problém zorientovat se v datasheetu, absolutně jsem nepochopil, jak mám nastavit timer 1 (ten 16bitový), aby mi pin ICP1 spouštěl “Input Pin Capture”. Je sice moc hezké, že timer 1 má 15 různých modu (viz tabulka 47 na straně 109 v DS - mega32), ale sakra který tam mám dát, aby mi ICP1 pin dělal tu svou funkci? Předpokládám, že mám nastavit “Normal Mode”. Hm. A čím dalším nastavím, že ICP1 spouští “Input pin capture”? Nebo to už je přímo součástí tohoto režimu?
Něco jsem tak také někde přečetl, že se žádné “pin normal function overdrive” nekoná, a že ICP se dá aktivovat i softwarově, tím že se na ten pin něco zapíše. Tudíž podle mě je jedno, jestli ICP1 pin nastavim jako vstup, nebo výstup, prostě funkce “Input pin capture” je v Normal mode aktivovaná napořád. Jen se dá ovlivnit, zdali vzniká interrupt. Pochopil jsem to dobře?
D9k moc, Honza

Tak nějak to je. Input capture je aktivní ve všech módech, komě těch, kde je redistr ICR1 použit pro TOP (módy 8, 10, 12 a 14).

Událost input capture se vyvolá vždy, když na pinu ICP1 vznikne zvolená hrana a to jak z externího zdroje tak i změnou log. hodnoty výstupu tohoto pinu. Na str. 54 DS je zapojení každého pinu a vyplývá z něj, že událost ICP by nastala i tehdy, pokud by byl ICP1 jako výstupní v log. 1 a vznikl by zkrat proti zemi. Při čtení z portu se vždy čte skutečná hodnota na pinu, nikoliv registr a ICP1 není vyjímkou.

Imput capture se nedá vypnout nebo odstavit u ATmega32, je vždy funkční, krom zmíněných módů. Pokud jej nechceš používat, stačí nečíst reg. ICR1 a zakázat přerušení TICIE1 v registru TIMSK. Novější AVR jako např. ATmega324 mají možnost odstavit části periferie z důvodu snížení spotřeby, ale jestli umí odstavit jen ICP nebo celý Timer1 to teď z hlavy nevím. Ostatně je to jedno, protože mega32 nemá power reduction registr.

Dík za stručnou výstižnou odpověď. Myslel jsem si to, že to tak bude, jen to do toho datasheetu mohli napsat na rovinu :slight_smile:
Když už jsme u snižování spotřeby, v registru ACSR (analog comparator control and status register) je jeden bit, kterým se vypíná napájení toho komparátoru. Bohužel jedna věc se atmelu nepovedla, a to, že krmení komparátoru je defaultně zaplé :slight_smile:
Zejtra to prozkoušim, dělám to kvůli měření frekvence z kapacitního hladinoměru …
Honza