Učím se programovat a momentálně řeším problém s přerušením.
Konkrétně chci, aby při změně stavu na RB5 procesor skočil do přerušení a vykonal tam nějakou činnost.
Našel jsem výukovou rutinu, která vykoná činnost v přerušení při změně na RB0. Takže jsem si říkal, že jen změním registr INTCON z původní hodnoty B'10010000' na hodnotu B'10001000' a přerušení bude spouštěno při změně na RB4-RB7.
Dosáhl jsem toho, že přerušení spustím změnou na RB5, ale program v přerušení "uvízne" - neustále se opakuje rutina přerušení a program neskočí do klidového stavu kdy bude čekat na podnět k přerušení. Zatím to pouze teoreticky simuluju v MPLABU.
Jinak vycházím z tohoto:
http://pandatron.cz/?154&skola_programovani_pic-10_dil
program zde:
http://pandatron.cz/elektronika2/skolp101.asm
Neporadí mě nekdo jak to správně rozchodit? Předm díky
Přerušení u 16F627
Moderátor: Moderátoři
Na začátek rutiny přerušení hned po uložení W, PCL atd. zakaž RBIE, vynuluj příznak RBIF a přečti port B. To jsou 3 podmínky pro to, aby procesor neustále neskákal do přerušení. Nulování příznaku a přečtení portu je opět vhodné znovu před povolením RBIE.
Nevím jestli tento typ PICu umožňuje povolit přerušení pouze od zvoleného pinu (např. RB5) nebo se dá povolit jen celý port B. Pokud by se dal povolit/zakázat jen celý port B, pak je potřeba zbývající piny kromě RB5 nastavit jako výstupy (nebo je potřeba hardwarově zajistit aby nebyly "v luftě")
Nevím jestli tento typ PICu umožňuje povolit přerušení pouze od zvoleného pinu (např. RB5) nebo se dá povolit jen celý port B. Pokud by se dal povolit/zakázat jen celý port B, pak je potřeba zbývající piny kromě RB5 nastavit jako výstupy (nebo je potřeba hardwarově zajistit aby nebyly "v luftě")