IOC proses PIC16F1509
#1
Interrupt on change ei taha kuidagi tööle hakata kuigi olen isegi prose manuaali lugenud (sic !) Smile
Kivil on edev võimalus valida, millist fronti parasjagu detektitakse. Selle registri laadisin ja simu näitab et sisu õige. Samuti muudel asjasse puutuvatel registritel.
Ootan esmalt PORTA,5 ja/või PORTA,4 vastuvõtja + fronti et asuda mõõtma pulsi kestust. Kui front leitud, ootan - fronti ja siis loen taimerist aja.
Paraku ei teki IOC katkestus mitte kuidagi. Muud katkestused tekivad.
Võimalik, et MPLAB SIM on liiga beeta selle kivi jaoks (on olnud mõnede prosede puhul) aga reaalsel raual samuti toda katkestust ei teki (ja teised tekivad).
Errata PDF ei räägi midagi, Microchipi foorumis oli 1 tüübil sarnane probleem aga ta lahendas asja teise prose kasutusele võtuga...
PIC12F1480-l on samasugune IOC süsteem ja töötab kenasti.
Millest ma üle vaatan... ?
Kood: http://parsek.yf.ttu.ee/~felc/rc_switch_1.asm
Vasta
#2
Mul seda konkreetset PIC-i käepärast pole, aga IOCIF on read-only bitt INTCON-is, kuid koodis on "bcf INTCON, IOCIF"...

IOCIF biti nullimiseks tuleb nullida bitid IOCAF/IOCBF-is. Ehk hakkab hargnema.
Vasta
#3
(26-10-2013, 09:23 PM)andrei Kirjutas: Mul seda konkreetset PIC-i käepärast pole, aga IOCIF on read-only bitt INTCON-is, kuid koodis on "bcf INTCON, IOCIF"...

IOCIF biti nullimiseks tuleb nullida bitid IOCAF/IOCBF-is. Ehk hakkab hargnema.


Paraku ei aidanud.
Huvitav on veel see, et kui prose konfi sõnad on koodi alguses, antakse viga (progr. word too large, truncated to core size) aga hex-i läheb õige asi. Tõstes samad read koodi lõppu, vigu ei anta aga hex-is "fusesid" ka enam pole. MPLAB SIM vist vähe bugine?
Vasta
#4
Veel torkas silma, et katkestust teenindavas RCint funktsioonis kiikad küll alguses korra IOCAF-i, aga pärast kontrollid hoopis IOCAP/IOCAN-i. Kas ei peaks nii olema, et tõusva ja laskuva frondi eristamiseks tuleb katkestuses piiluda nii IOCAF/IOCBF-i kui ka vastavat sisendit (Sul defineeritud CH1 ja CH2, kui ma õigesti aru sain) ja IOCAP/IOCAN-i võib kõrvale jätta?
Vasta
#5
(29-10-2013, 08:28 AM)andrei Kirjutas: Veel torkas silma, et katkestust teenindavas RCint funktsioonis kiikad küll alguses korra IOCAF-i, aga pärast kontrollid hoopis IOCAP/IOCAN-i. Kas ei peaks nii olema, et tõusva ja laskuva frondi eristamiseks tuleb katkestuses piiluda nii IOCAF/IOCBF-i kui ka vastavat sisendit (Sul defineeritud CH1 ja CH2, kui ma õigesti aru sain) ja IOCAP/IOCAN-i võib kõrvale jätta?
Pmst õige. Ma tegin siiski nii, et kontrollin IOCAP/IOCAN meenutamaks, millist fronti ootasin. Tegutsen vastavalt. IOCAF annab üldise signaali et oli sisendite muutuse katkestus.
Paraku aga ei taha nimetet katckestust üldse tekkida, raua peal samuti mitte...
Vasta
#6
(29-10-2013, 08:59 AM)felch Kirjutas: Paraku aga ei taha nimetet katckestust üldse tekkida, raua peal samuti mitte...
Lisaks selgus, et "tavaline" INTE ehk väliskatkestus ei toimi samuti. Ei simus ega ka rauas. Kõik mainitud pinnid on pordi A küljes. Miski asi, mida ma ei suuda märgata....
Vasta


Alamfoorumi hüpe:


Kasutaja, kes vaatavad seda teemat: 2 külali(st)ne