V knize Mikrokontroléry PIC16F87X to píšou!
ahoj,
může prosím někdo doplnit ten program co psal relatko? nedaři se mi to rozchodit… Zkouším přerušení pouze na RB0 a to mě v pořádku funguje ( sepnu vstup , provede se přerušení a vrátí se zpět do normálního programu, vypnu vstup a nic se neprovede.) Pokud však změním nastavení na RB4 tak přerušení se provede ale po odpadu RB4 se provede znovu přerušení . pokud možno by byl někdo ochotněj opravit příklad od relátka aby si mohl zasimulovat. díky!
Cau, co se tyce preruseni od PB0 koukni tady [forum.mcontrollers.com/t/pic-16f88-prerusenie-na-porte-rb0-nastane-iba-pri-zmene-0-1/1388/1), nez se vratis z preruseni musis vynulovat priznak preruseni ,pokud de o PB0 tak bit INTF, PB7-4 tak RBIF (pred nulovanim je treba precist PortB, jak uz bylo receno),u PB0 jde nastavit preruseni na sestupnou nebo spadovou hranu, u PB4-7 je zmena stavu urovne(0->1 / 1->0) samozrejmosti sou PULLUPy at uz interni nebo ext. nebo sem dej kod a kouknem na to
ahoj,
Aha, u RB0 je možné nastavit přerušení zvlášť na náběžnou hranu a sestupnou pomocí registru OPTION_reg. U RB4-7 tato možnost není? TZN že při odpadu RB4 se provede znovu přerušení které nic neprovede… Prosím tedy o kontrolu programu. díky moc!
preruseni_RB4.asm (2.01 KB)
V preruseni od PB4-7 si musis sam SW precist co se stalo, program funguje v simulatoru dobre , ALE ! precti si co dela instrukce RETFIE, tyka se to tyhle instrukci na konci preruseni MOVLW B’10001000’ MOVWF INTCON a ty 1, osobne preferuju bitovy nastavovani preruseni nez zapisem do registru, co mas pripojeny na RB4 ? mas tam pullup ? pokud na zacatku vypustis ten test RB4 tak jakmyle se vyvola preruseni nastane vzdy naka zmena na LEDce, (nemas osetreni zakmitu to muze pri takle kratkym programu vyvolavat nekolik preruseni za sebou bez viditelneho bliknuti ledky ! )
OK, nerozumim co myslis bitovy nastaveni nez zapisem do registru…co se tyka osetreni vstupu tak to si vyresim opakovanou kontrolou sepnuti RB4.
diky
Zapis do registru
MOVLW B'10001000' ; povoleni zpet pozadovanych preruseni
MOVWF INTCON
nastaveni bitu
BCF INTCON,RBIF
bsf INTCON,GIE
Koukal si na to RETFIE ? (pokud si to neopravis tak ti muze pretect STACK a pak se to nekde zacikli a nepude)
Tohle tam máš zbytečně.
MOVLW B'10001000' ; povoleni zpet pozadovanych preruseni
MOVWF INTCON
clrf STATUS ; Banka 0 obnoveni ulozenych registru