Monday, June 23, 2014

PIC32MX250F128B ipl7: odd shadow register set behavior and observations

This issue has now been solved. Scroll to the bottom for the update.

I started working on a pure sine wave inverter based on the PIC32MX250F128B. The first stage was to just get the SPWM working and test that before proceeding to add the power stage, feedback and other control, etc.

This led me to some interesting observations regarding the PIC32MX250F128B interrupts, especially the use of the shadow register set and a related problem.

I set up Timer 2 to be the time base for sine wave generation (DDS/SPWM) using OC1. In the Timer 2 interrupt, the duty cycle update request is performed (OC1RS is updated). Timer 2 interrupt priority was set to 7.
This all worked fine. The initial ISR definition was:

void __ISR(_TIMER_2_VECTOR, ipl7) T2int(void) {

However, when I used the ADC (input from potentiometer for amplitude control - a start at implementing feedback), accessing any of the ADC registers in the while (1) loop in main stopped the PIC32 from working. 

I then added a line of code in main to continuously toggle RA0 (PORTA bit 0). This would stop when trying to access the ADC registers as well. (It worked fine if I removed the code that accessed the ADC.) This meant that the core was being stopped. So, I thought that it might be some kind of exception being thrown (?).
However, changing the timer 2 interrupt priority from 7 (which I had initially) to anything else fixes the problem. My guess was that something went wrong when the shadow register set was being used for interrupt priority level 7 (?).

So I did some more tests and came up with this:

The way I have the ISR defined initially selects the "AUTO" mode of selection where, I believe, the compiler decides whether to use the shadow register set or software for context save/restore.
Forcing the compiler to use the software context save/restore instead of the shadow register set seems to fix it:

void __ISR(_TIMER_2_VECTOR, ipl7SOFT) T2int(void) {

I forced the shadow register set just to confirm:

void __ISR(_TIMER_2_VECTOR, ipl7SRS) T2int(void) {
and sure enough it didn't work.

So, since it worked with ipl6, my guess was that for ipl6 (and for any ipl except 7), the compiler chooses software for AUTO, whereas for ipl7, the compiler chooses SRS.

So, I forced the shadow register set on ipl6:

void __ISR(_TIMER_2_VECTOR, ipl6SRS) T2int(void) {
and sure enough, it didn't work.

Forcing software for ipl6 fixes it (as does AUTO).

I looked through the errata of the chip and couldn't find anything. (The errata is an interesting read.)  I am also a little surprised since I did have ipl7 running fine previously. Maybe something weird happens with a certain combination of peripherals (?) that I unfortunately happened to use. I'll still see if I can find this documented, and I'll have to check whether an exception is thrown and if so, what type. If nothing else, at least it was a nice, albeit frustrating, lesson. Hopefully, it'll help someone else who might run into a similar problem.

UPDATE/SOLUTION: It turns out that the PIC32MX250F128B does not have a shadow register set, as mentioned in the datasheet. I seemed to have missed that while concentrating on the reference manual which talks about the shadow register set for the PIC32 series. Thus, from the point of view of my 'experiments', the lesson learnt could very well just be that when using ipl7, force the compiler to use software instead of the default AUTO mode (which may make the compiler try to use the shadow register set, which doesn't exist - explaining the problem I faced earlier).

DDS = direct digital synthesis
ipl = interrupt priority level
ISR = interrupt service routine 
SPWM = sinusoidal pulse width modulation
SRS = shadow register set


  1. The PIC32MX1xx/2xx have only one register set (ie. no shadow registers).

    1. I seemed to have missed that in the datasheet while concentrating on the reference manual. So, I guess it's best to force the compiler to use software context save/restore when using ipl7 instead of the default AUTO mode. At least that's what my little 'experiment' just taught.

      I'll edit the article to reflect this.

      Thanks for your input!

  2. I posted asking for some help and you have deleted my post. Why?

    1. The question you posted was in no way relevant to the PIC32. If you post in the relevant section, I will gladly answer it.

  3. I see. I apologize, but you could have answered as you just said now, instead of you have deleted my comment. It would be more polite on your part.
    Anyway, now I commented on the post IR2110.


  4. Hey Tahmid, the Smart Sine software links thay you gave is not available any more, if I ask you can you share it again. Thanks a lot.

  5. Hi, I have been working on pic32mx250f128b and not getting command on the basics. By basics i mean i am not able to interface LCD and having problem in serial communication :(. Can u help me or suggest me anyone of ur blog.? plzzzzzzzz

  6. Are you working on bipolar or unipolar spwm?

  7. It's a Nice post! Thank you for sharing your knowledge to others, it was very informative and in depth one.
    R Training in Electronic City

  8. Buna ziua, eu sunt Allison Howarts Dupa ce am fost în rela?ie cu Anderson ani de zile, s-a despar?it de mine, am facut tot posibilul sa-l aduc înapoi, dar totul a fost în zadar, l-am dorit atât de mult din cauza iubirii pe care o am pentru el, L-am implorat cu tot, am facut promisiuni, dar el a refuzat. I-am explicat problema mea prietenului meu ?i ea mi-a sugerat ca ar trebui sa contactez mai degraba o caseta de vraja care m-ar putea ajuta sa arunc o vraja pentru a-l readuce, dar eu sunt tipul care nu a crezut niciodata în vraja, nu am avut de ales decât sa-l încerc, eu i-a trimis caseta vraja ?i mi-a spus ca nu este nicio problema ca totul va fi bine înainte de trei zile, ca fostul meu se va întoarce la mine înainte de trei zile, a aruncat vraja ?i surprinzator în a doua zi, era în jurul orei 16.00. Fostul meu m-a sunat, am fost atât de surprins, am raspuns la apel ?i tot ce a spus a fost ca îi pare atât de rau pentru tot ce s-a întâmplat, încât a vrut sa ma întorc la el, încât ma iube?te atât de mult. Eram atât de fericit ?i m-am dus la el încât a?a am început sa traim din nou ferici?i împreuna. De atunci, mi-am facut promisiune ca oricine ?tiu ca are o problema de rela?ie, a? fi de ajutor unei astfel de persoane, referindu-l la ea singura casa de vraji reala ?i puternica care m-a ajutat cu propria mea problema. e-mail: pute?i sa-i trimite?i un e-mail daca ave?i nevoie de asisten?a sa în rela?ia dvs. sau în orice alt caz sau WhatsApp, la +2348069032895
    1) Vraji de dragoste
    2) Vraji de dragoste pierdute
    3) Vraji de divor?
    4) Vraji de casatorie
    5) Vraja de legare.
    6) Vraji de rupere
    7) Alunga un iubit trecut
    8.) Dori?i sa va promova?i în vraja dvs. de birou / Loterie
    9) dori?i sa va satisface?i iubitul
    Contacta?i acest om grozav daca ave?i vreo problema pentru o solu?ie de durata

  9. Mulțumesc domnule pentru vrăjile tale reale. Numele meu este Zara Matteo. Acest lucru este cu adevărat incredibil și nu am experimentat niciodată așa ceva în viața mea. Înainte de a vă cunoaște, domnule, am încercat toate mijloacele probabile pe care le-am putut pentru a-mi aduce soțul înapoi, dar am realizat că nimic nu funcționează pentru mine și că soțul meu mi-a dezvoltat multă ură. Am crezut că nu există nicio speranță de a mă reîntâlni cu fostul meu soț. Dar când am citit recenzii bune despre modul în care DR WHITE îi ajută pe ceilalți, am decis să-i trimit un mesaj prin WhatsApp: +17168691327. să încerc și am făcut tot ce mi-a instruit și am avut încredere în el și i-am urmat instrucțiunile, întrucât el m-a garantat în 48 de ore și tocmai atunci fostul meu m-a sunat. Domnule, acum suntem mai fericiți ca niciodată. Totul arată perfect și atât de natural! Vă mulțumesc foarte mult domnule pentru vrăjile dvs. autentice și incontestabile. aici din nou e-mailul său:

    .com Îl poți și Whatsapp:

  10. It's so common: you're in love with someone and you want him to love you too ... or you're going through a difficult "breakup" and you want him or her to come back ... or you're alone and looking for someone special. It all depends on what you want. If you are alone and want to find a new love, there is a spell for you. Contact Dr. Jasper now if you need her help in your relationship or in any other case.
    1) Spells of love
    2) Spells of lost love (make him love you again)
    3) The spell of divorces
    4) Marriage spell (make him propose to you / make her accept your proposal)
    5) Binding spells
    6) Divisions
    7) The spell of death
    8.) You want to be promoted to your office
    9) You want to thank your boyfriend
    10) Lottery
    11) stop miscarriage / get pregnant
    12) magic spell (cure that deadly disease)
    contact her now, she has a lasting solution for you. has 32 years of experience as a practitioner of black and white magic, Tarolog, Runemeister (mantle, runic magic, amulets, amulets, talismans), she is the best!

  11. Este atât de comun: ești îndrăgostit de cineva și vrei să te iubească și el... sau treci printr-o „despărțire” dificilă și vrei ca el sau ea să se întoarcă... sau ești singur și cauți pe cineva special. Totul depinde de ce vrei tu. Dacă ești singur și vrei să găsești o nouă iubire, există o vrajă pentru tine. Contactează-ți acum Dr. Jasper dacă ai nevoie de ajutorul ei în relația ta sau în orice alt caz.
    1) Vrăji de dragoste
    2) Vrăji de dragoste pierdută (fă-l să te iubească din nou)
    3) Vraja divorțurilor
    4) Vraja căsătoriei (fă-l să îți propună / fă-o să accepte propunerea ta)
    5) Vrăji de legare
    6) Diviziuni
    7) Vraja morții
    8.) Vrei să fii promovat în biroul tău
    9) Vrei să-i mulțumești iubitului tău
    10) Loteria
    11) opriți avortul spontan / rămâneți însărcinată
    12) vrajă magică (vindecarea acelei boli mortale)
    contactează-o acum, ea are o soluție de durată pentru tine. are 32 de ani de experiență ca practicantă de magie alb-negru, Tarolog, Runemeister (manta, magie runică, amulete, amulete, talismane), este cea mai bună!

  12. Salutare tuturor celor de pe acest blog, vreau să-mi mulțumesc Dr. Jasper. marele vrăjitor care mă ajută să-mi recuperez fostul după ce am fost înșelat de patru vrăjitori care pretind că sunt adevărați și autentici, am contactat acest mare vrăjitor în punctul în care îmi pierd speranța că nu pot obține omul meu înapoi din nou, am făcut exact ce mi-a cerut acest om să fac și spre cea mai mare surpriză a mea totul se întâmplă așa cum acest mare vrăjitor mi-a spus că se va întâmpla. Omul meu, care nu m-a sunat în ultima lună, m-a sunat după ce Dr. Jasper Malo i-a făcut vraja asupra lui și chiar sunt surprins că există încă un vrăjitor grozav precum Dr. Jasper Malo, care este atât de puternic. Sunt foarte fericit astăzi că-mi văd bărbatul înapoi la mine și chiar mă iubesc mai mult decât oricând înainte de a-l întâlni. Nu mă voi ierta dacă părăsesc acest blog fără a lăsa adresa de e-mail a acestui mare vrăjitor pentru cei dintre voi care ar putea avea nevoie de ajutorul lui pentru a-l contacta. deci iată adresa de e-mail a acestui mare vrăjitor: contactează-o acum și toate problemele tale vor dispărea pentru totdeauna

  13. Unë po e ndaj këtë dëshmi për partnerët që vuajnë në marrëdhëniet e tyre, sepse ka një zgjidhje të qëndrueshme. Burri im më la mua dhe 2 fëmijët tanë për një grua tjetër për 3 vjet. U përpoqa të jem e fortë vetëm për fëmijët e mi, por nuk munda t'i kontrolloja dhimbjet që më mundonin zemrën. Isha i lënduar dhe i hutuar. Unë kisha nevojë për një ndihmë, kështu që bëra një kërkim në internet dhe hasa në një faqe ku pashë Dr.Fady një magjistar, që mund të ndihmojë të kthehen të dashuruarit. E kontaktova dhe ai bëri një lutje dhe magji të veçanta për mua. Për çudinë time, pas disa ditësh, burri im u kthye në shtëpi. Kështu u ribashkuam përsëri dhe kishte shumë dashuri, gëzim dhe paqe në familje. Ju gjithashtu mund të kontaktoni Dr.Fady, një magjistar i fuqishëm për zgjidhjet e kontaktit të tij ose mund ta shtoni në Whatsapp +2349039422406

  14. Soțul meu a cerut divorțul, dar cu ajutorul Dr. Dawn Acuna, eu și soțul meu trăim în pace, cu bucurie și fericire, Dr, Dawn acuna a ajutat-o ​​cu o vrajă de dragoste puternică care l-a făcut pe soțul meu să realizeze cât de specială sunt și acum mă tratează ca pe o regină și mă îmbrățișează toată noaptea, asta este ceea ce mi-am dorit vreodată de la soțul meu, datorită Dr. Dawn acuna, contact pe Whatsapp:{ +2348032246310 }
    *Dacă vrei să te împaci cu iubitul tău.
    *Dacă doriți ca plante medicinale să conceapă.
    *Dacă vrei un inel magic.
    *Dacă vrei să vindeci orice fel de boală.
    *Dacă vrei să devii celebru în afacerea ta.
    Si altii,
    Îți promit 💯 la sută rezultat pozitiv, e sinceră, se ține mereu de cuvintele ei.

  15. Çdo problem ka një zgjidhje kur takoni personin e duhur! Mos kini frikë se ekziston një magjistar i shkëlqyer dhe zgjidhës shpirtëror i problemeve që është në gjendje t'i japë fund problemit tuaj. Dua te vleresoj Dr Fady qe me riktheu martesen time me magjine e saj, Pas 1 viti ndarje me burrin tim, me ndihmen e magjistares se mrekullueshme Dr Fady burri im erdhi ne shtepi dhe tani jemi te lumtur bashke per mire, edhe nje here faleminderit per Dr Fady gjithashtu shëroi të gjitha llojet e sëmundjeve si

    8 HIV SIDA.
    DREJTSHKRIMI I LOTARIVE DHE ÇËSHTJA GJYQËSORE Kontakt Kontaktoni atë për ndihmën tuaj nëpërmjet:

  16. M-am căsătorit cu dragul meu soț în ultimii 12 ani fără să rămân însărcinată, iar fibromul a fost problema. Am luat diferite medicamente prescrise, dar nu am putut să le vindec, dar soțul meu era atât de încrezător în mine și mă tot încuraja că într-o zi cineva mă va numi mamă. nu s-a odihnit căutând o soluție de la diferiți medici, tot ce au putut vedea a fost o intervenție chirurgicală și mi-a fost frică de asta, o prietenă din cabinetul meu mi-a prezentat doctorul DAWN ACUNA, ea a spus că Dawn acuna a ajutat-o ​​când avea tubul blocat și a ajutat-o ​​și ea. multe dintre prietenele ei să conceapă,
    I-am scris imediat pe Whatsapp, mi-a promis ca ma ajuta dupa ce i-am explicat totul, mi-a dat niste instructiuni care am facut totul perfect conform instructiunilor, la 3 saptamani dupa tot am fost la spital si doctorul mi-a confirmat sarcina in 1 saptamana dar chiar acum am copilul meu frumos.
    *Dacă vrei să tratezi infertilitatea.
    *Daca vrei sa ramai insarcinata rapid.
    *Dacă vrei să-ți întorci iubitul.
    *Dacă vrei o căsătorie pașnică.
    *Dacă doriți să tratați boala canceroasă.
    Și mulți alții îl contactează pe Dr dawn acuna pe Whatsapp:+2348032246310

  17. Vă mulțumesc pentru ceea ce ați făcut pentru mine { Dr dawn acuna }! Soțul meu a încetat să completeze actele de divorț după ce te-am contactat pentru a mă ajuta să opresc divorțul cu soțul meu și acum lucrurile merg mult mai bine acum. După cum ați spus, tot procesul privind divorțul a fost anulat și femeia rea ​​care provoacă problema în căsnicia mea a fost trimisă de soțul meu și acum suntem fericiți împreună, dacă aveți probleme în relație sau căsătorie sau orice alte probleme. , îi puteți e-mail la: ( ) sau WhatsApp ei ( +2348032246310 ).

    S-a specializat pe următoarele vrăji:

    *Vrăji de dragoste
    *Vrăji de căsătorie
    *Vrăji de bani
    *Vrăji de frumusețe
    *Vrăji de bogăție
    *Vrăji de cazinou
    *ELIMINAȚI Vrăjile de blestem
    *Vrăji de protecție
    *Vrăji de loterie
    *Vrăji de noroc

  18. Sunt aici pentru a depune mărturie despre modul în care acest puternic vrăjitor numit Dr.DWAN m-a ajutat să-mi repar relația. Mi-a fost zdrobit când logodnica mea mi-a spus că nu mai este interesat să se căsătorească cu mine pentru că avea o aventură cu cealaltă femeie la care lucrează. Plângeam și plângeam în fiecare zi, până când a devenit atât de rău încât am apelat la Internet pentru ajutor, atunci când am citit o recenzie despre marea muncă a Dr.DAWN, apoi l-am contactat pentru ajutor pentru a-mi recupera iubitul, el m-a ajutat să fac o puternică (vrajă de dragoste de reconciliere) și spre cea mai mare surpriză a mea, după 48 de ore în care am făcut vraja de dragoste, logodnica mea s-a întors în genunchi rugându-mă să-l iert. Acum suntem căsătoriți fericiți și toate mulțumirile sunt adresate Dr.DAWN Wonders pentru că m-ați ajutat să-mi salvez relația, puteți contacta Dr.DAWN prin adresa sa de e-mail: ( )

  19. E ULIMĂTOR SA VORBI MINUNAT DESPRE DR DAWN. Sunt Vanessa Canga. Am avut o uniune frumoasă cu soțul meu și am împărtășit fericire, căldură și dragoste adevărată. Am locuit împreună timp de 10 ani și am avut doi copii. În urmă cu câteva luni, am început să avem probleme nesfârșite și certuri constante. Casa era plină de nefericire și copiii mei plângeau mereu văzându-ne luptăm tot timpul. În cele din urmă, a plecat și a tăiat toate mijloacele pentru ca noi să comunicăm cu el. Am făcut tot ce am putut să-l recuperez din cauza cât de mult l-am iubit, dar fără rezultat. DR DAWN mi-a venit în ajutor când l-am contactat și mi-a dezvăluit că în spatele problemelor pe care le aveam se afla o femeie și mi-a promis că mă va ajuta, ceea ce a făcut când i-am urmat procedurile de lucru. Soțul meu s-a întors acasă la noi și am inventat lucruri. Trăim din nou fericiți împreună. DRAWN te poate ajuta și pe tine. contactați-l prin WhatsApp: +2349046229159
    *Dacă vrei să te reîntâlnești cu soțul/soția ta.
    *Dacă doriți să aveți o căsătorie/relație pașnică.
    *Daca ai nevoie de vraja pentru a ramane insarcinata/a ramane insarcinata.
    *Dacă doriți să tratați infertilitatea.
    *Dacă doriți să vă răzbuni/reprimi proprietatea.
    *Dacă vrei o vrajă de promovare.