Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Katil Program

Başlatan subram, 05 Haziran 2014, 20:57:47

subram

Hadi buyrun bir program da benden olsun. P16f88 için  yazılmış WDT programı. PIC'e atmaya çalışırken PIC'i bozuyor.
Daha önce benzer bir konu vardı 16f628 içindi galiba ama bulamadım.
Nedir bu saçmalık.

kodlar ve hex altta;

#include <xc.h>
#pragma config FOSC = XT  // Oscillator Selection bits (INTRC oscillator; port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin)
#pragma config WDTE = OFF        // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CCPMX = RB0      // CCP1 Pin Selection bit (CCP1 function on RB0)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
#pragma config FCMEN = OFF       // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode disabled)

#define _XTAL_FREQ 4000000

void main (void) {
    ANSEL=0x00;     //
    TRISB=0x01;     //
    PORTB=0x00;
    PSA=1;          //Prescaler is assigned to the WDT
    PS0=1;          //PS Rate 1:128
    PS1=1;
    PS2=1;
    WDTPS0=0;       // WDTPS Rate 1:512
    WDTPS1=0;
    WDTPS2=1;
    WDTPS3=0;
    SWDTEN=1;
    while (1) {
        RB1=~RB1;
        while(RB0==0) {
            CLRWDT();
        }
        SLEEP();
    }
}


:040000008A11FD2F35
:100FB800831603139B0101308600831203138601F5
:100FC8008316031381150114811401158312031765
:100FD80085100511851505120514023083120313B7
:100FE8008606831203130618FB2F6400F52F63008F
:080FF800F12F83018A11DC2FA7
:04400E0009FFFCFFAB
:00000001FF

http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Tagli

PIC'in bozulduğunu nereden anladın? Silip başka program atabiliyor musun? Devre üzerinde mi programlama yapıyorsun yoksa dışarıda mı?
Gökçe Tağlıoğlu

Müh. müh.

#2
Alıntı yapılan: Tagli - 05 Haziran 2014, 21:15:41
Silip başka program atabiliyor musun? Devre üzerinde mi programlama yapıyorsun yoksa dışarıda mı?

Bozuldu dendiğine göre, herhalde silme ve yazma yapılamıyordur değil mi?

mesaj birleştirme:: 05 Haziran 2014, 21:29:27

#pragma config MCLRE = OFF      // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital I/O, MCLR internally tied to VDD)

ve

TRISB=0x01;

Şeklinde ayarlanmış. Pic te hatırladığım kadarı ile, mclr ye ttl seviyesinden yüksek bir voltaj gelince, programlama moduna geçiyordu ve iki adet programlama uçlarından (genelde port b nin 6 ve 7. bitleri oluyorlardı) programlanıyordu.

Yukarıdaki mantığı ARM da uygulasan, işlemciyi kaybedersin. Pic te de böyle oluyormuydu?

Ayrıca programlama pinlerini çıkış yaparak bozmuş olabilirmisin? Pcb şemanı bir kontrol et..
Destiny of white is dirtied. Destiny of black is found guilty...

Tagli

Evet ama FOSC = XT. Bu durumda, PIC devre dışına alınırsa (veya kristal sökülürse) yazılım koşmaya başlayamaz. Bu durumda programlamak mümkün olabilir belki. Bilmiyorum belki de olmaz. Bu sebeple sordum son sorumu.
Gökçe Tağlıoğlu

Gökhan BEKEN

#4
Alıntı yapılan: Müh. müh. - 05 Haziran 2014, 21:22:49
Yukarıdaki mantığı ARM da uygulasan, işlemciyi kaybedersin.
Yanılıyorsunuz. Seriporttan program atabilirsiniz. Mesela St'nin flash loader diye bir programı var. Sadece rx,tx ve gnd ile program atıyorsunuz. Üstelik çip'e daha önceden herhangi birşey yazmış olmanız gerekmiyor.
Özel mesaj okumuyorum, lütfen göndermeyin.

Müh. müh.

Meftun bey,

Arm ın j-tag pinlerini output yapınca, chip i kaybetme gibi durumlar oluşuyordu. Boot pinleri olanlarda bunu çözmek mümkün olabiliyor. Neyse, konumuz pic mcu.


Alıntı yapılan: Tagli - 05 Haziran 2014, 21:34:24
Evet ama FOSC = XT. Bu durumda, PIC devre dışına alınırsa (veya kristal sökülürse) yazılım koşmaya başlayamaz. Bu durumda programlamak mümkün olabilir belki. Bilmiyorum belki de olmaz. Bu sebeple sordum son sorumu.

Buna pek ihtimal vermiyorum. Sonuçta siler, ve yeniden yükler.

-RB6, PB7 pcb de input tu da, output yapılınca port zarar görmüş olabilir.

Destiny of white is dirtied. Destiny of black is found guilty...

subram

Alıntı yapılan: Tagli - 05 Haziran 2014, 21:15:41
PIC'in bozulduğunu nereden anladın? Silip başka program atabiliyor musun? Devre üzerinde mi programlama yapıyorsun yoksa dışarıda mı?

aynen dediğin gibi programı atarken yükleme yapamıyor hata veriyor, PIC'i tekrar okuttuğumda okumuyor.

@müh.müh ortade şema olsa kontrol edeyim ama yok maalesef. Direk olarak programlayıcıdan progrmalıyorum.  Bu mantık pic için sakıncalı bir mantık değil. Daha önce en az 1K bu şekilde program yazdım hiç bir sorun olmadı. Elimde yeteri kadar  PIC olsa sorunu çözmek için denemeler yappı (PIC bozulacak tabi bu denemelerde) sorunun hangi koddan kaynaklandığını çözerdim ama şuan için 4 Tane PIC bozmuş durumdayım.



http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

canbulut

#7
hocam benimde başıma böyle bir durum gelmişti:) meğer işlemciye bağladığım yükten dolayı işlemcileri bozuyormuş böyle bir tecrübem olmuştu.Bence bir yüksüz olarak deneyiniz.

kantirici

628a da çalışırken benimde başıma gelmişti. Sanırım aynı problem bu mcuda  da var.

https://www.picproje.org/index.php/topic,32044.msg224037.html#msg224037


subram

@canbulut PIC devrede değil. ICSP ile programlıyordum 2 tane bozulunca Zif soket ile programlamaya başladım 2 tanede öyle bozdum.

Konulara bir bakayım.
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

canbulut

#11
devredeki yükleri devre dışı bırakıp denediniz mi hocam.PIC devre değilse o başka tabi.

subram

Elinde 16F88 olan bir gönüllü varsa şu kodu bir deneyebilir mi acaba?

PIC devrede değil.
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

RaMu

Bencede linkleri verilen konularda bahsedilen Vpp first uygulanmamasından kaynaklı olabilir,
16f88 net bilmiyorum ama 16f877a programlayan bir programlayıcı programı yazmıştım,
o programı yazarken pici programlamak için nasıl bir yöntem izlendiğini öğrenme fırsatım oldu,
kısaca;
(burada kodlar asm makro şeklinde yazılı
sadece isimlerine bakıp uygulanan adımları anlayabilirsiniz
;>>>>>>>>>>>>>>>>>>>>  MAIN PROGRAM STARTS FROM HERE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

CALL CHIP_ERASE_1







;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,BULK ERASE PROGRAM MEMORY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ENTER_HV_PROG        ;PC=0000H
                                        GOTO JUMP0

LOAD_PROG_MEM        ; BULK ERASE PROGRAM MEMORY ALGORITHM WORKS WELL BUT I HAVE JUMPED TO TEST CHIP ERASE
WRITE3FFF
BULK_ER_PROG_MEM
BEG_ER_PROG_CYCLE

CALL  DELAY8MS

EXIT_HV_PROG
ENTER_HV_PROG
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BULK ERASE FINISHED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,
                                        JUMP0  NOP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITING CONFIGURATION MEMORY AND ID WORDS;;;;;;;;;;;;;;;;;;;;;;;;;

ENTER_HV_PROG                 ;THIS ALGORITHM WORKS FOR NOT PROTECTED CHIP VERY WELL

LOADCONFIG         ;PC=2000H
WRITE3FFF          

LOAD_PROG_MEM       ;1
WRITE3FFF
INC_ADRS
LOAD_PROG_MEM       ;2
WRITE3FFF
INC_ADRS
LOAD_PROG_MEM       ;3
WRITE3FFF
INC_ADRS
LOAD_PROG_MEM       ;4
WRITE3FFF
BEGIN_PROG_ONLY     ;IT IS WORKING WITH ALSO   BEG_ER_PROG_CYCLE COMMAND
CALL  DELAY8MS      ;


END_PROG
INC_ADRS
INC_ADRS
INC_ADRS
INC_ADRS
LOAD_PROG_MEM
WRITE_CONFIG_DATA
BEG_ER_PROG_CYCLE  ;

CALL  DELAY8MS   

EXIT_HV_PROG
ENTER_HV_PROG

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<WRITING CONFIGURATION MEMORY FINISHED<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Burası programlamaya giriş kısmı
ben önce Vdd uygula sonra Vpp uygula
şeklinde yazmıştım ama
bazı piclerde bunun sıkıntı çıkardığını okumuştum,
ENTER_HV_PROG    MACRO       ;
CLRF           PORTC         ;PGD=0V PGC=0V 
BSF            PORTB,0       ;MCLR= 0V ;**  IN CASE IF IT GETS ANY POWER
BSF            PORTB,1       ;VDD=5V
BCF            PORTB,0       ;MCLR=13V
NOP
NOP
NOP                          ;5 US DELAY
NOP
NOP
ENDM


EXIT_HV_PROG    MACRO
BCF       PORTB,1
BSF          PORTB,0
ENDM


Başka programlayıcı varsa onunla deneyebilirsin,
programlayıcın pickit2 ise güncellemelerini yapabilirsin,
bahsedilene benzer bir yöntem seriport programlıyıcı ile deneyebilirsin,
elimde 16f88 olsa yada geçerse denemeyi bende yaparım.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Tagli

Alıntı yapılan: RaMu - 05 Haziran 2014, 23:37:26
Bencede linkleri verilen konularda bahsedilen Vpp first uygulanmamasından kaynaklı olabilir,
Bundan olduğunu sanmıyorum. O olay, hem MCLR iptal hem de dahili osilatör kullanıldığında oluyordu. Burada harici kristal var. Başka bir sebebi olmalı.

Stoklarımda sadece 1 tane PIC16F88 olduğundan kıyıp deneyemedim açıkçası.
Gökçe Tağlıoğlu