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ý.
Příspěvky odeslané z IP adresy 213.220.245.–
Wintel