Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip XC Serisi => Microchip XC16 => Konuyu başlatan: Tagli - 02 Ağustos 2014, 13:24:22

Başlık: Kütüphane Hataları
Gönderen: Tagli - 02 Ağustos 2014, 13:24:22
Kütüphanelerde hatalar olabiliyor. Bu başlık altında denk geldiklerimizi paylaşalım.

Az önce yakaladığım, XC16'nın (v1.21) Quadrature Encoder Interface (QEI) kütüphanesi ile ilgili. Hatalı fonksiyon ConfigIntQEI ise şu şekilde belgelendirilmiş:
Alıntı Yap3.2         ConfigIntQEI

Function Prototype
   
void ConfigIntQEI(unsigned int config);


Include
   
qei.h


Description
   
This function Configure the QEI Interrupt.


Arguments

config - QEI interrupt priority and enable/disable information as defined below.

QEI Interrupt Enable/Disable

   QEI_INT_ENABLE

   QEI_INT_DISABLE

QEI Interrupt Priority

   QEI_INT_PRI_0

   QEI_INT_PRI_1

   QEI_INT_PRI_2

   QEI_INT_PRI_3

   QEI_INT_PRI_4

   QEI_INT_PRI_5

   QEI_INT_PRI_6

   QEI_INT_PRI_7


Return Value

None


Remarks
   
This function clears the Interrupt Flag bit, sets the interrupt priority and enables/disables the interrupt.


Source File
   
ConfigIntQEI.c


Code Example
   
ConfigIntQEI(QEI_INT_ENABLE & QEI_INT_PRI_1);

Buradan anladığımız kadarıyla  QEI_INT_DISABLE sabitinin QEI kesmesini kapatması gerekiyor. Ama gerçekte kapatmıyor. Neden? Cevap qei.h dosyasında gizli. Bu dosyada sabit şöyle tanımlanmış:
#define QEI_INT_DISABLE             0xFF7F  /* Clear the Interrupt enable bit */

Şimdi dsPIC30F2010'un datasheet'ine dönüp QEIIE bitinin nerede olduğuna bakarsak... IEC2 register'ının 8. biti (0'dan başlarsak). Ama yukarıda tanımlanan 0xFF7F değeri 8. değil 7. biti sıfırlıyor, yani PWM kesmeleri ile ilgili biti.

Siz de bir kontrol edin, yanlışım olmasın.
Başlık: Ynt: Kütüphane Hataları
Gönderen: kimlenbu - 02 Ağustos 2014, 13:42:59
PIC kullanmasam da benim gibi hatayı en son kütüphanede arayanlar için güzel bir uyarı olmuş :)
Başlık: Ynt: Kütüphane Hataları
Gönderen: Tagli - 02 Ağustos 2014, 14:23:15
Bu arada, bu tür hataları Microchip'e nasıl bildirebiliriz? Twitter hesaplarına tweet atsak olur mu acaba?
Başlık: Ynt: Kütüphane Hataları
Gönderen: yldzelektronik - 02 Ağustos 2014, 15:11:58
Alıntı yapılan: Tagli - 02 Ağustos 2014, 14:23:15
Bu arada, bu tür hataları Microchip'e nasıl bildirebiliriz? Twitter hesaplarına tweet atsak olur mu acaba?

cn@microchip.com adresinden sürekli düzeltme mailleri alıyorum.Denemedim ama iş yarayan bir adres olabilir.
Başlık: Ynt: Kütüphane Hataları
Gönderen: subram - 02 Ağustos 2014, 15:36:10
DocErrors@microchip.com
Başlık: Ynt: Kütüphane Hataları
Gönderen: Tagli - 02 Ağustos 2014, 15:43:48
http://www.microchip.com/support/hottopics.aspx (http://www.microchip.com/support/hottopics.aspx) adresinden Support Ticket oluşturup durumu anlattım.

Bu arada, hatayı yanlış tespit etmişim. Durumun bit numarası ile ilgisi yokmuş. Hatamı ConfigIntQEI.c dosyasına bakınca gördüm (support klasörünün içinden erişilebiliyor). Fonksiyon şöyle tanımlanmış:

void ConfigIntQEI(unsigned int config)
{
    _QEIIF = 0;                 /* clear Interrupt flag */
    _QEIIP = config & 0x07;     /* bits <2:0> is the priority*/
    _QEIIE = (config & 0x8)>>3; /* bit 3 is interrupt enable/diable */
}


Yani QEI_INT_DISABLE sabitinin 0xFF7F değil, 0xFFF7 olması gerekiyordu.