Chyby v MPLAB 8.02 - riesenie, cast II

Michal HW michalgregor@centrum.cz
Středa Srpen 13 12:10:24 CEST 2008


Na skutecnem procesoru CCP4 nenuluje TMR3,

Podle mne zadny TMR1 internal neexistuje, je tam pouze bufer pro TMR3 a ten se zapina bitem RD16.
Je to pekne videt na obrazku 15-1 a 15-2. 

Michal Gregor



  ----- Original Message ----- 
  From: j s 
  To: hw-list@list.hw.cz 
  Sent: Wednesday, August 13, 2008 11:36 AM
  Subject: Chyby v MPLAB 8.02 - riesenie, cast II


  > Vezmu to od konce:
  > Kapitola 18.2.1 Special Event Triggers are not implemented for ECCP3, CCP4
  > or CCP5. Selecting the Special Event Trigger mode for these modules has the
  > same effect as selecting the Compare with Software Interrupt mode
  > (CCPxM3:CCPxM0 = 1010). No je to v PDFku pekne schovame - klasicka poznamka
  > malym pismem.... Ja jsem ji nasel az po dlouhem hledani proc mi procesor
  > dava 140ms a pritom v simulatoru MPLABU tam mam 100ms.

  Ta poznamka nie je malym pismom. Je to standardny font textu v datasheete.

  Pozrime sa do toho datasheetu este raz. Strana 197, asi v polovici,
  velkym pismom
       REGISTER 17-1: CCPxCON: CCPx CONTROL REGISTER (CCP4 MODULE, CCP5 MODULE)
  Teda CCP4 a CCP5 funguju ako standardne CCP moduly, podla kapitoly 17,
  nie ako ECCP (pricom to E znamena Enhanced, ale tyka sa to PWM
  modulov) moduly podla kapitoly 18, na ktoru sa odvolavate. Ako som
  pisal skor, nastavenie CCP4CON do 0x0B = 1011 = Compare mode: trigger
  special event, reset timer, start A/D conversion on CCPx match. Teda
  resetuje timer.

  Pre ECCP moduly (CCP1 az CCP3):
  1011 = Compare mode: trigger special event (ECCPx resets TMR1 or TMR3,
  sets CCPxIF bit, ECCPx trigger also starts A/D conversion if A/D
  module is enabled)(1)
  ....
  ....
  Note 1: Implemented only for ECCP1 and ECCP2; same as 1010' for ECCP3.

  Teda, netyka sa to CCP4 a CCP5.
  V tom datasheete je to mozno nestastne napisane, ale takto som to
  pochopil ked som sa na to pozrel a zda sa, ze to takto aj funguje.

  ----------------------------------------------

  O tom timere 1 som napisal vsetko co som povazoval za potrebne. Zrejme
  je to malo.
  V MPLAB-e 5.7 to fungovalo zrejme inak. Nespominam uz na tuto verziu
  (je to uz peknych par rokov dozadu, co bola aktualna) a kedze
  pravdepodobne nemal TMR1_Internal, tak to citanie celeho stavu TMR1
  bolo urobene nekorektne voci realnemu HW. Preto to upravili tak, aby
  sa ten timer spraval tak, ako ma, teda podla toho vysvetlenia, ktore
  som Vam podal v predoslom prispevku. Preto je spravne, pri simulacii,
  pozerat sa na TMR1_internal, hoci program moze narabat s registrami
  TMR1H a TMR1L, pricom je treba dodrzat logiku citania a zapisu tak ako
  som ju popisal predtym.
  Ta "paseka" je hodnota TMR1H, ktoru ste tam zapisal predtym. Kedze
  TMR1L program necita, neobnovuje sa ani TMR1H a preto simulator vidi v
  TMR1H hodnotu, ktoru neocakavate (ale ktora tam bola programom
  zapisana). TMR1_Internal obsahuje skutocnu hodnotu timera. To ze tam
  tu (neocakavanu) hodnotu vidite aj po resete je dosedok toho, ze TMR1H
  a L si zachovavaju svoj stav po resete, resp. reset im neudava nijaky
  definovany stav, tak je to to iste ako pred resetom.
  Teda ten timer vzdy preteka pri 0xFFFF-0x0000. To ze to nevidite, este
  neznamena, ze to tak nie je.

  ----------------------------------------------

  Co sa tyka vypoctu Tad, zda sa byt v poriadku.
  Bolo dolezite podotknut, ze sprava sa zobrazuje len raz pri "otvoreni
  MPLAB-u". To je pochopitelne, pretoze po resete je obsah ADCON1
  definovany na 0x00. Iste si dokazete spocitat, ze potom je Tad
  skutocne menej ako 0.70us.


  J.S.
  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list@list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20080813/72996664/attachment-0002.htm 


Další informace o konferenci Hw-list