[elektro] Nuvoton

Bali Zoltan eltexto at freemail.hu
Fri Jan 2 11:37:59 CET 2015


Hali!

Eddig el voltam vele. De most már nagyon
unom. Egy saját USB kezelést írtam rá pár
éve (NUC120LC1BN) siker0lt probléma mentesre
csinálni. Ha gond volt, mindig és hibáztam.
Ezt most átraktam NUC120LE3DN-re. Ami működött
az előzőnél a max. sebesség kipréselése miatt,
a double, buffer (váltogattam a buffer szegmens
címet a regiszterben) ennél nem működik.
Tudomást sem vesz róla hogy átírtam és az előzőt
küldi el. Nem gond, most nem kell speed, vissza
írtam egy pufferre.

Közben nyüstölöm az M051-et. A TIMER-el vacakolok.
Lehet én vagyok béna 3 napja, de nagyon gáz érzésem
van. Az egy dolog hogy elejétől szarul működik a debug,
gondoltam majd javítják, de nem. Még mindig keveri a
töréspontokat hol működik ha leteszek egyet, hol nem.
Ha bent hagyom a töréspontot és újraindítom a debugot,
akkor működik. Néha elveszti a fonalat. Szóval bizonytalan.
Így nem lehet debuggolni, hogy nem tudom most azért nem áll
le a töréspontnál, mert ez a valóság, vagy mert épp úgy gondolja.
Most jutott eszembe, van másik is, majd azzal is megpróbálom.
Hátha HW gond van(A FW új drivernél már jó néhányszor
frissítette).
Vissza a TIMER-re, ahol valaki debounce lehetőséget lát,
és anomáliák vannak, kapcsolja ki. Ha nem, nálam a
Capture módban, a TEX bemenet magas esetén, ha resteltem CEN = 1
estén a CRST-vel a TIMERT, generált egy TEXIF-et. Debounce
kikapcsolásra megszűnt. Most vettem észre. hogy inicializálásnál
a TIMER0 mexakítás engedélyezésekor lefut egy TIMER0 IT
(betettem egy töréspontott és oda lép mindjárt az engedélyezés
uton. AZ IT lefut üresen mivel shared és az IF bitek szelektálnak.
DE nincs egy IF bit bebillenve. 3 napja szórakozom vele.
De még mindig lehet én vagyok a béna.

ez a kritikus pont configurálás után:

   /* Step 5. Enable Timer0 module */
   TIMER0->TCSR.CEN  = 0;          // már ezt sem engedem
   TIMER0->TCSR.CRST = 0;          // már ezt sem resetelem
   TIMER0->TCSR.WAKE_EN = 0;       // már ezt sem engedem

   NVIC_EnableIRQ(TMR0_IRQn);      // Enable Timer0 Interrupt
   /* A követkeő sorra lépve már lefut az TIMER0 IT /*
   /* pedig még nincs semmi engedélyezve /*
   TIMER0->TISR.TIF = 1;           // Write 1 to clear for safety
   TIMER0->TCSR.IE  = 1

   TIMER0->TEXISR.TEXIF    = 1;
   TIMER0->TEXCON.TEXIEN   = 1;

Hozzáteszem ez az init IDLE előtt van nem indulásnál,
tehát előtte jó néhány clock kikapcsolásra kerül,
portok beállítása, periféria reset, stb.
A fentit többféle sorrendben, variációban kipróbáltam,
semmi.


Bocsi, hosszú lett és érthetetlen :).

Üdv.  Zoli




More information about the Elektro mailing list