Anonymní profil Wintel – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Wintel – Programujte.comAnonymní profil Wintel – Programujte.com

 

Příspěvky odeslané z IP adresy 213.220.245.–

Wintel
Mikrokontroléry › AVR přerušení program
17. 2. 2009   #95196

Zdravím,
Chtěl jsem si vyzkoušet výrobu a programování a vrhnul jsem se do výroby palubního počítače do auta (na internetu jsem našel již pár řešení, ale chtěl jsem si to zkusit sám). Bohužel se mi nedaří dodělat poslední část programu, část pracující s přerušením. Chápu jak na to teoreticky, ale nedaří se mi přijít na to, jak to napsat ideálně.
Proto jsem se chtěl zeptat, zda by mi někdo nemohl poradit s touto částí programu,aby byla efektivní.

Teď se pokusím nastínit, o co jsem se marně snažil.

Používám procesor Atmega32 a programuji v AVRku v Cčku.

Můj problém se týká dvou signálů, které přivádím na porty procesoru:

Na port INT0 přijde signál (hardwarově je jedno, jestli 1 nebo nula, takže co se hodí do programu) a po dobu, co je přiveden signál, počítá Timer1 (tím změřím délku pulsu které se rovná spotřebě paliva za určitou dobu) a po konci pulsu přičte svůj obsah k proměnné PAL1.

Jestliže je přiveden signál na INT1 je přičtena jednička (inkrementováno) do VZD1.

S tímto jediným si tak nějak asi tuším rady, že by to mohlo vypadat:

Nastavím vektor přerušení aby reagoval na signál na tento port a když dojde k přerušení, přičtu do registru a je hotovo.

Bohužel nevím, jak to v praxi napsat.

Pak jsem chtěl použít ještě jeden timer (Timer2), který počítá a odpočítává čas, třeba vteřinu, a vždy, když dopočítá vteřinu, tak dojde k zapsání proměnných VZD1 a PAL1 do proměnných VZDALENOST a PALIVO a vymazání proměnných VZD1 a PAL1.

Za pomoc bych byl moc vděčný, už 14 dní s tím nemůžu hnout a v mém okolí není nikdo, na koho se obrátil. Jsem na tohle nějaký zabedněný.


 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý