PIC18F2431 Programlam sorunu

Başlatan apsis, 23 Mart 2016, 19:12:39

apsis

Daha öncede bu işlemciyle ilgli konu açmıştım ancak şimdiki durum biraz farklı. PCPWM ile ilgli bir program yazdım işlemciye programı attım programlama sırasıda config ile ilgli bir uyarı verdi. İşlemciyi tekrar okumaya çalıştığım zaman işlemciyi tanımadı. Program yazılmışmıdır diye düşündüm ancak board üzerinde denem yaptığımda işlemi ve program gayet güzel çalıştı. config ayarlarında mı bir sıkıntı vardır nedir bilmiyorum. 2 sene önce benzer durumda aynı 2 işlemciyle benzer hatayı almıştım. bozulmuştur diye de hiç denemedim.İşlemci çalıştığı halde "No device detected" hatası vermesinin nedeni nedir?

config ayarları:
#pragma config OSC = HS         // Oscillator Selection bits (HS oscillator)
#pragma config FCMEN = ON      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = ON       // Internal External Oscillator Switchover bit (Internal External Switchover mode disabled)

// CONFIG2L
#pragma config PWRTEN = ON      // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable bits (Brown-out Reset disabled)
// BORV = No Setting

// CONFIG2H
#pragma config WDTEN = OFF      // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDPS = 32768     // Watchdog Timer Postscale Select bits (1:32768)
#pragma config WINEN = OFF      // Watchdog Timer Window Enable bit (WDT window disabled)

// CONFIG3L
#pragma config PWMPIN = ON    // PWM output pins Reset state control (PWM outputs disabled upon Reset (default))
#pragma config LPOL = HIGH     // Low-Side Transistors Polarity (PWM0, 2, 4 and 6 are active-high)
#pragma config HPOL = HIGH      // High-Side Transistors Polarity (PWM1, 3, 5 and 7 are active-high)
#pragma config T1OSCMX = OFF     // Timer1 Oscillator MUX (Low-power Timer1 operation when microcontroller is in Sleep mode)

// CONFIG3H
#pragma config MCLRE = ON       // MCLR Pin Enable bit (Enabled)

// CONFIG4L
#pragma config STVREN = ON      // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF        // Low-Voltage ICSP Enable bit (Low-voltage ICSP disabled)

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000200-000FFFh) not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (001000-001FFF) not code-protected)
#pragma config CP2 = OFF        // Code Protection bit (Block 2 (002000-002FFFh) not code-protected)
#pragma config CP3 = OFF        // Code Protection bit (Block 3 (003000-003FFFh) not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000200-000FFFh) not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (001000-001FFF) not write-protected)
#pragma config WRT2 = OFF       // Write Protection bit (Block 2 (002000-002FFFh) not write-protected)
#pragma config WRT3 = OFF       // Write Protection bit (Block 3 (003000-003FFFh) not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000200-000FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (001000-001FFF) not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF      // Table Read Protection bit (Block 2 (002000-002FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF      // Table Read Protection bit (Block 3 (003000-003FFFh) not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from table reads executed in other blocks)
"Makineye Beyin" MEKATRONİK

apsis

#1
ICSP ile denedim okudum ama silindi gözükmesine rağmen silinmiyor. sokette tanımıyor. neden olabilir? programlayıcı soketinde bir sıkıntı mı yoksa kartında bir sıkıntı mı vardır?

mesaj birleştirme:: 24 Mart 2016, 00:09:21

Arkadaşlar sorunu düzelttim. Elimde bu durumda 3 tane 18f2431 vardı 2 sini yaptığım yöntemle kurtardım. Aşamaları anlatayım belki böyle sorun yaşayan olmuştur.

1-Güç kaynağı destekli board üzerinde bir ICSP bağlantısı yaptım.Burada çipe okuma yapabildim ancak silme gerçekleşse de silinmiyor.
2-Hold Device in Reset'i işaretledim.
3-VPP LVP ve Firs programming seçenekleri işaretli ise kaldırdım.
4-MCU içindeki programı okuyup hiç bir şey yapmadan tekrar çipe yazdım.
5-MCU'yu ICSP den söküp programlayıcı soketine taktım.
6-Sokete taktıktan sonra silme işlemini gerçekleştirdim ve READ yaparak çipi okudum ve içindeki programın silinmiş olduğunu gördüm.

Belki "Oha çok saçma" felan diyeceksiniz ve bu yaptığım bana da çok saçma geldi ama deneme yanılmayla yaptım ve oldu. Şimdi yazdığım programın config ayarlarını değiştirdim ve programlayıcı üzerinden yazıp silebiliyorum. Programlarken çipiniz bozuldu diye düşünürseniz bunu bir deneyin derim zararı olmaz :). Varsa başka çözümlere hala açığım.
"Makineye Beyin" MEKATRONİK

Maxim


apsis

#3
Linkteki çözümünüzü okudum. ICSP den gerilimi ölçtüğümde vpp'de de Vdd de boştayken enerji yok. sadece program üzerinden write read dediğim zaman bir enerji gidip geliyor. MCU'yu takıp denediğimde program okurken vpp 11.5V, vdd 4.5V gözüküyor ve işlem bittiğinde enerji kesiliyor. Voltaj kontrolü gibi gözüküyor.
Programlayıcım bu:



Config ayarlarım yukarıdaki gibi olduğunda bu sorunu aldım ancak değiştirdim ve çok önceden yazmış olduğum bir programın config ayarlarıyla değiştirdiğim zaman sorun çözüldü.
yeni hali:
// CONFIG1H
#pragma config OSC = HS         // Oscillator Selection bits (HS oscillator)
#pragma config FCMEN = ON      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal External Oscillator Switchover bit (Internal External Switchover mode disabled)

// CONFIG2L
#pragma config PWRTEN = ON      // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable bits (Brown-out Reset disabled)
// BORV = No Setting

// CONFIG2H
#pragma config WDTEN = OFF      // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDPS = 32768     // Watchdog Timer Postscale Select bits (1:32768)
#pragma config WINEN = OFF      // Watchdog Timer Window Enable bit (WDT window disabled)

// CONFIG3L
#pragma config PWMPIN = OFF     // PWM output pins Reset state control (PWM outputs disabled upon Reset (default))
#pragma config LPOL = LOW      // Low-Side Transistors Polarity (PWM0, 2, 4 and 6 are active-high)
#pragma config HPOL = LOW      // High-Side Transistors Polarity (PWM1, 3, 5 and 7 are active-high)
#pragma config T1OSCMX = OFF    // Timer1 Oscillator MUX (Low-power Timer1 operation when microcontroller is in Sleep mode)

// CONFIG3H
#pragma config MCLRE = OFF       // MCLR Pin Enable bit (Enabled)

// CONFIG4L
#pragma config STVREN = ON      // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF        // Low-Voltage ICSP Enable bit (Low-voltage ICSP disabled)

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000200-000FFFh) not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (001000-001FFF) not code-protected)
#pragma config CP2 = OFF        // Code Protection bit (Block 2 (002000-002FFFh) not code-protected)
#pragma config CP3 = OFF        // Code Protection bit (Block 3 (003000-003FFFh) not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000200-000FFFh) not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (001000-001FFF) not write-protected)
#pragma config WRT2 = OFF       // Write Protection bit (Block 2 (002000-002FFFh) not write-protected)
#pragma config WRT3 = OFF       // Write Protection bit (Block 3 (003000-003FFFh) not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000200-000FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (001000-001FFF) not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF      // Table Read Protection bit (Block 2 (002000-002FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF      // Table Read Protection bit (Block 3 (003000-003FFFh) not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from table reads executed in other blocks)


Bir arkadaşımda expkit'in pickit2 si var onu alıp MCU yu tanımsız hale getiren configlerle tekrar bir deneme yapıcam. Sıkıntı çıkmazsa programlayıcıyı değiştirmenin vakti gelmiştir ya da modifiye yapılabiliyorsa yapıcam.
"Makineye Beyin" MEKATRONİK

Maxim

sizin sorun %100 ondanmıdır bilemiyorum fakat
tool altındaki "use VPP first program entry" seçeneğini seçtiğimiz zaman bizdeki sıkıntı çözülüyordu

şimdi buradaki fark şu
vdd tabiki hepsinde geliyor, vpp zaten gelmese program atamazsın
işte o seçenek önce vpp yi yollayarak işlemciyi program moduna sokuyor daha içerisindeki program çalışmaya başlamadan
ve dandik klon pickit2 lerin bunu yapamadığını fark ettik, zira vpp ve vdd aynı anda üretiliyordu onlarda.

tekrar yazamak isterim, sizin problem aynı olmayabilir emin olamadım tam.

apsis

Expkits'in pk2'si elime geçti ve vpp modunda kurtaramadığım 3. işlemciyi okudum ve sildim. Config ayarlarını işlemciyi tanınmaz hale getirdiği zamankine döndürdüm ve işlemcinin içine attım ve hiç bir sorun olmadı. Anladım ki bendeki PK2 dandikmiş :)). Ve değiştirme zamanı gelmiş. Aslında ARM'a geçiş yapıcam ancak yine de el altında bulunsun.
Bir de şöyle birşey yaptım, expkits'i kullanmadan önce pk2'yi kaldırıp tekrar yüklemiştim. expkisden sonra kendi pk2'imde denedim bu sefer hata vermeden programı attım.
"Makineye Beyin" MEKATRONİK