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
PIC'in bozulduğunu nereden anladın? Silip başka program atabiliyor musun? Devre üzerinde mi programlama yapıyorsun yoksa dışarıda mı?
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..
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.
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.
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.
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.
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.
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 (https://www.picproje.org/index.php/topic,32044.msg224037.html#msg224037)
aramış olduğunuz konu bu ise;
https://www.picproje.org/index.php/topic,50815.0.html#quickreply (https://www.picproje.org/index.php/topic,50815.0.html#quickreply)
@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.
devredeki yükleri devre dışı bırakıp denediniz mi hocam.PIC devre değilse o başka tabi.
Elinde 16F88 olan bir gönüllü varsa şu kodu bir deneyebilir mi acaba?
PIC devrede değil.
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.
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ı.
pic bozulmuyordur mutlaka çıkar nedeni yakında.
16F628 de çözümü şöyle bulmuştuk
pickit2 de USE VPP FIRST PROGRAM ENTRY seçeneğini seçiyorduk.
Aynı PIC'e katil programı atmadan önce, daha önce yazdığım bir programı attım. Sorunsuz yükledi. Yüklediği kodu okuyup baktım sorun yok. Sonra katil programı atınca PIC öldü.
Yarın 1-2 tane PIC alıp şansımı başka türlü deneyeceğim bakalım.
mesaj birleştirme:: 05 Haziran 2014, 23:54:43
Bu arada bende Brenner var.
En başında, programlayıcınızın orjinal olduğunu düşünerek yorumlar yazmıştım.
Size tavsiyem, birkaç mcu daha bozmadan önce, orjinal programlayıcı ile bu gün bozduğunuz mcu yu silip, yeniden programlamaya çalışmanız.
Çünkü bu klon programlayıcının sorunu olabilir.
Bir ikinci tavsiyemde, orjinal programlayıcı almanız. Pic kit 2 ve 3 ün, 100 lira civarında fiyatı olması gerekli. Bu işlerle uğraşan kişiler için çokta para değil..
@müh.müh seni bir yerden tanıyor gibiyim, tarzı bir arkadaşı hatırlattı.
Son bir tane PIC vardı elimde. Onu denemeden önce bilgisayarı kapattım.
10dk bekledim.
Bilgisayarı açtım.
Brennerı açtım.
MPLAB X açtım.
main.c kısmındaki tüm satıları kapattım. Derledim yükledim sorun yok.
Sonra while(1) den önceki satırları açtım. derledim yüklemdim sorun yok.
SLEEP ve CLRWDT kodlarını kapalı olarak derledim yükledim sorun yok.
CLRWDT kodunu açtım derledim yükledim sorun yok.
ve son hamle SLEEP kodunu açınca PIC öldü.
Hadi buradan buyurun bakalım!
programlama uçları devredışı kalıyormu acaba sleep den dolayı,
(Konuyla alakasız ama ben de biryerler çıkartacağım gibi Müh.Müh. ü)
Bir ara 16f88 aldım 2 tane.Pickit2(kolon) ve MikroC kullanıyorum ve buna benzer bişey yaşadım.2 çipte saçma hatalar verdi program atarken.5-6 kere deniyorum atmıyor.Sonra atıyor ama doğrulamayı yapamıyor falan..En sonunda atıyor ama en az 7-8 kere uğraşıyorum.Mplab kurulu değil şu an kurulu olsa deneyecektim programı.Yarın vakit bulursam deneyeceğim.Bende merak ettim bu konuyu.Acaba 16f88 lerle ilgili kaçırdığımız bişey mi var?
"Muhtemelen" pic herhangi bir şekilde enerjilendiğinde,
anında uykuya yatıyor. RB0 pinini gnd ye bağlayıp öyle
programlayı deneseniz??? diye düşünüyorum...
Elde 16f88 kalmadı. Şimdi bu kodu 628 için uyarlayıp oradan test edecem.
while(1) den önce 2sn. gibi bir gecikme ekleseniz?
Bu işe sebep olanlar,
PIC, programlama cihazına bağlı da olsa enerjilendiğinde Vpp nin hemen aktif olmaması sebebiyle program calışıyor.
Program içinde sleep veya interrupt veya clock ureten pinler var ise konum değiştirdiğinde iş biryerlerde tıkanıyor.
Aslında olay tamamen programlayıcı cihazın dizayn hatası. İlk yapması gereken Vpp yi gereken H voltaja cıkarmak olmalı, bundaki gecikme picin bir iki adım işlem yapmasına sebep oluyor ve iş tıkanıyor. Lvp açıksa durum daha kötü porttaki değişimler Lvp algılanmasına sebep oluyor.
1 haftadır başımı belaya sokan bir sorunun büyük tarafı bu imiş.
PK3 den K128 e gectim rahat ettim. ;D
Alıntı yapılan: OG - 06 Haziran 2014, 01:12:04
PIC, programlama cihazına bağlı da olsa enerjilendiğinde Vpp nin hemen aktif olmaması sebebiyle program calışıyor.
Çalışamaz hocam, FOSC = XT ve
subram bunu devre dışında programladığını söylüyor. Kristal yoksa çalışmaz.
Gökçe ben birşey demedim ya :) Yanlış anlaşılma oldu herhalde
Kodu 16f628 için düzenledim hiç bir sorun yok. Çatır çatır attı programı.
#include <xc.h>
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // RA5/MCLR pin function select (RA5/MCLR pin function is MCLR)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOD Reset disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Code Protection bits (Program memory code protection off)
#define _XTAL_FREQ 4000000
void main (void) {
TRISB=0x01; //
PORTB=0x00; //
PSA=1; //Prescaler is assigned to the WDT
PS0=1; //PS Rate 1:128
PS1=1;
PS2=1;
while (1) {
RB1=~RB1;
while(RB0==0) {
CLRWDT();
}
SLEEP();
}
}
.hex
:02000000FE2FD1
:100FCA0001308316031386008312031386018316E6
:100FDA0003138115011481140115023083120313BE
:100FEA008606831203130618FC2F6400F62F63008B
:060FFA00F22F8301E52F38
:02400E000DFFA4
:00000001FF
16f88'de bir gariplik var sanırım.
ICSP ile 16F628' program attım.olmadı.microchip'in tüm verilerini okudum.daha evvel aynı pinlerden arkadaş atmış. üşenmedim IC'yi söktüm Pic StartPlus'a taktım sorunsuz programı aldı.baktım devrede 10Mhz kristal var,
pompa ile bir bacağını ayırdım ,tekrar ICSP'yi bağladım kusursuz programlandı.normalde VPP'yi görür görmez osilatörün durması lazımdı ama öyle olmuyordu.kıllık olsun diye 10Mhz'lik kristalin yerine 4Mhz taktım yine sorun yoktu.
arkadaşımın başına böyle bir durum gelmiş saç baş yolma faslı bitince LVP ayağına 10k takıp bunu artık hatırlamıyorum ya VDD yada VCC 'ye bağlamış sorun çözülmüş.onun geberttiği çipleri bana verdi bunlara ulaşılamıyor diye ben hepsini pic start ile adam edip kullandım.aklımda bir soru işareti kaldı bu ICSP işi daha tam oturmamış galiba.
Çok merak ettim, yarın yegane PIC16F88'imi feda edeceğim.
ipek hocam, ICSP oturmamış değil ama bazı nazları var, dikkat edilmezse sorun çıkarıyor.
88 feda edeceksen verdiğim ilk kodu gömmeden önce while(1)'in önünen 2-3 saniye koyup o şekilde dener misin?
ARM dan bu yana program başlamadan önce önüne belli bir süre gecikme koyuyorum. (3 adet stm32f103 gidince)
628'e kodu atarken 3-4 saniye sürüyor işlem. 88 ile normalde 1sn bile sürmüyor. Sorunun bir noktası da burada olabilir gibi.
Bu kod üzerinde konuşulur ama,
alternatif olarak 16f88 rb0 kesmesi veya portb de değişiklik oldu kesmesi ile
uyanıp kesme içinde ledi toggle yapsa olmaz mı?
Tabi program sadece ledi toggle etmek için yazılmayacakta diyebiliriz,
şimdilik bu kadarı yeterliyse kesme denenebilir.
Yani problem wdt den kaynaklımı fikir sahibi oluruz.
bence sorun sadece USE VPP FIRST PROGRAM ENTRY seçeneği ile alakalı
yani işlemci içindeki program başlamadan işlemcinin yazma moduna geçmesi gerekiyor.
olay bu.
fakat bu özelliğin geçerli ve işe yarar durumda olması için
ya orjinal pickit2 veya voltaj kontrolü yapabilen kaliteli klon bir pickit2 kullanıyor olmanız lazım.
brenner bunu yapıyormu?
yada elinizdeki klon pickit2 voltaj kontrollü mü? eminmisiniz?
menüdeki seçeneği seçmeniz özelliği kullanıyorsunuz anlamına gelmiyor.
EDIT1:
@subram
ilk mesajdaki hex dosyasınımı denemem gerekiyor?
EDIT2:
İlk mesajdaki hex dosyasını bendeki dandik klon pickit2 ile denedim (16F88)
bir sorun yok?
Yükleme anında CONFIG bitleri programlamanın en sonunda yukleniyorsa default durumlar;
CONFIG1.7 biti ve CONFIG2 bitleri default hali sıkıntı yapıyor olabilir. Yine bu durumda uzun bekleme veremezsiniz CONFIG1.2 ile WDT defaultta enabled oluyor.
Benim kullandığım pk2 de voltaj kontrolü yok.Bazı bölümleri eksik bir klon.Bencede sorun burada.Orjinaliyle problem olacağını sanmıyorum.
Alıntı yapılan: muhittin_kaplan - 06 Haziran 2014, 02:27:06
ARM dan bu yana program başlamadan önce önüne belli bir süre gecikme koyuyorum. (3 adet stm32f103 gidince)
Hocam 3 adet STM32 önüne delay koymadığınız için bozulmaz sizin sorununuz SWD dedect pinlerini değiştirmek ile ilgili olabilir. Çipler bozulmamıştır.
Alıntı yapılan: ogy - 06 Haziran 2014, 09:31:07
Benim kullandığım pk2 de voltaj kontrolü yok.Bazı bölümleri eksik bir klon.Bencede sorun burada.Orjinaliyle problem olacağını sanmıyorum.
K128 de aynı sebeple sıkıntı çıkarmıyor.
mesaj birleştirme:: 06 Haziran 2014, 09:40:26
OSC XT olsa bile program neden yürür,
CONFIG2.1 (IESO) R/P-
1 CONFIG2.0 (FCMEN) R/P-
1IESO: Internal External Switchover bit
1 = Internal External Switchover mode
enabled0 = Internal External Switchover mode disabled
TWO-SPEED CLOCK START-UP MODE
Two-Speed Start-up mode minimizes the latency
between oscillator start-up and code execution that
may be selected with the IESO (Internal/External Switchover)
bit in Configuration Word 2.
This mode is
achieved by initially using the INTRC for code
execution until the primary oscillator is stable.If this mode is enabled and any of the following conditions
exist, the system will begin execution with the
INTRC oscillator. This results in almost immediate
code execution with a minimum of delay.
@subram
bende Brenner ve Pickit3 programlayıcıları mevcut. ilk mesajdaki hex dosyasını Brenner ile programladığımda hata mesajı verip 16f88 birdaha kullanılamaz hale geldi ancak orjinal pickit3 ile tekrar kurtardım. bu tamamen Brennerın bir acizliği olabilir.
başka denememi istediğin bişey varsa deneyebilirim. elimde feda etmeye hazır yeterince 16F88 var.
pickit3 ile kurtarabildiysen güzel, bende 7 tane bozuk PIC var şuan :)
while(1) komutundan önce 2-3 saniye bir gecikme koyup o şekilde deneyebilir misin brenner ile? mplab+xc yoksa direk hex gönderebilirim.
mesaj birleştirme:: 06 Haziran 2014, 18:36:12
bozulan PIC'leri expkits klonları ile hayata geçirebilir miyim acaba?
senin sorunun kesin brennerla ilgili
bendeki dandik klon bile sorun çıkarmıyor
Alıntı yapılan: subram - 06 Haziran 2014, 17:28:35
bozulan PIC'leri expkits klonları ile hayata geçirebilir miyim acaba?
Geçirirsin.
muhtemelen Brenner ile alakalı. bu adamlar halen üretime devam ediyorsa feedback atayım adamlara.
Ramazan o zaman katil diye hitap ettiğin kod üstünde ki suçlamalar kalktı. O kadar ağır ithamlarda bulundun koda karşı iade-i itibar etmelisin.
sine-i kod yapacam Erhan. Bu iş ancak böyle temizlenir :P
Alıntı yapılan: subram - 06 Haziran 2014, 17:28:35
while(1) komutundan önce 2-3 saniye bir gecikme koyup o şekilde deneyebilir misin brenner ile? mplab+xc yoksa direk hex gönderebilirim.
Ramazan, bahsettiğin yere
__delay_ms(2000); komutunu ekleyerek gecikme koydum. Brenner bu sefer hata vermedi.
XC versiyonum 1.31 pro mode.
Cuma günü koşturmacadan deneme yapmaya fırsatım olmadı ama gördüğüm kadarıyla sorun çözülmüş gibi.
Bu arada, aklıma geldi bir dip not olarak ekleyeyim dedim: Kesme ile uyanmada eğer kesme koduna atlanması isteniyorsa - ki istenmezse, kesme ile uyanıldığı halde kesme koduna girmeden kalınan yerden devam edilebilir - SLEEP()'ten sonra bir tane NOP() koymakta fayda var. Çünkü uykudan uyanınca, kaçınılmaz olarak SLEEP'ten sonraki ilk ASM komutu çalıştırılıyor.
12f1822 için benzer durum başıma geldi. Dahili osc kullanılıyor ve MCLR disable. Tek sefer programlandı artık silinemiyor ve programlanamıyor. Kopya pickit2 kullanıyorum.
VPP first programming entry yapabilmek için VDDyi elle açıp kapatabileceğimiz bir switch ekledim. VDDyi kapattım kartın beslemesini kesip test menüsünden VPPyi aktif ettim. sonra ICSP soketi taktım. şimdi beslemeyi verince VPP aktif olduğundan mclr disable olsa bile picin çalışmaması lazım. sonra VDDyi açtım. tekrar silmeye çalışıtım olmadı. galiba bu esnada yine VPP kısa bir süre kesildiği için pic yine çalışmaya başladı dolayısıyla programlanma işi yine olmadı. BU arada tekrar sorun yaşamayalım diye yüklenecek program içinden mclr on yapmıştım.
Sonuç olarak elle açılıp kapatılan VDD anahtarı işe yaramadı. Orijinal pickit3 ile kısa sürede silinip programlama yapılabildi. orijinal pickit3 programlayıcım eskimesin diye saklayıp kullanmıyordum. İlk kullanım bu şekilde oldu.
pickit2 kopyası yapılırken VDD anahtarını ihmal etmemek gerektiği anlaşılıyor. onu da eklemek iyi olur.
Alıntı yapılan: pwm.c - 07 Haziran 2014, 12:35:05
Ramazan, bahsettiğin yere __delay_ms(2000); komutunu ekleyerek gecikme koydum. Brenner bu sefer hata vermedi.
XC versiyonum 1.31 pro mode.
Sağolun hocam sorunun kaynağı açık şekilde ortada.
Şunun cevabını bilen varmı?
CONFIG registeri/registerleri normal datadan öncemi ,sonramı, beraber mi yükleniyor.
Sanıyorumki en son yükleniyor. Çünkü yükleme sonrası doğrulama yapılması gerekir, protect programlarda doğrulama yapabilmesi için config en son atanması gerek. En azından birkaç biti öyle. Ve problemin önemli bir parçası bu. Çünkü PIC safe osc ile adım atıyor biryerde de çakılıyor. Farkındaysanız safe osc olmayan pic lerde bu sorun yok.
Modele göre değişken olabilir ama
bence 12f ve 16f serisinde aynıdır
pic12 den pic16 ya md ler "pic16 method" diye
tabir edilen yöntemle programlanıyor
şukadarını kesin söyleyebilirim 16f877 de
ister önce ister sonra config registerları yüklenebiliyor
ama genel olarak en son yüklenmesi tavsiye-tercih ediliyor,
misal write protect yapılan bir programı
önce config yüklemeye çalışarak pice yazamayız
veya read protect yazılan programı
önce config yazarak yükleme esnasında verify ile yükleme yapamayız.
An910 a bakıp pice program yükleme ile ilgili detaylara ulaşabilirsiniz
https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CBwQFjAA&url=https%3A%2F%2Fwww.microchip.com%2Fstellent%2Fidcplg%3FIdcService%3DSS_GET_PAGE%26nodeId%3D1824%26appnote%3Den012156&ei=9VKXU8GnB6uA7Qa0q4DoDw&usg=AFQjCNFLALZGGS_PZmo8UIQOproEWfWQoQ&sig2=W46Q7Ou56xsLOYWHqlv_HA&bvm=bv.68693194,d.ZGU (https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CBwQFjAA&url=https%3A%2F%2Fwww.microchip.com%2Fstellent%2Fidcplg%3FIdcService%3DSS_GET_PAGE%26nodeId%3D1824%26appnote%3Den012156&ei=9VKXU8GnB6uA7Qa0q4DoDw&usg=AFQjCNFLALZGGS_PZmo8UIQOproEWfWQoQ&sig2=W46Q7Ou56xsLOYWHqlv_HA&bvm=bv.68693194,d.ZGU)
Alıntı yapılan: RaMu - 10 Haziran 2014, 21:49:26
misal write protect yapılan bir programı
önce config yüklemeye çalışarak pice yazamayız
Bildiğim kadarıyla write protect sadece programın kendi program belleğine erişimini (yazmasını) engelliyor. Programlayıcı donanım üzerinde bir etkisi yok.
code protect desem daha iyi olurmuş
söylemek istediğim oydu çünki,
ama write protect durumunda programlayıcı donanım mdye programı yazabilirmi net bilmiyorum
şu verdiğim dökümandada var
read protect yapılınca programlayıcı donanımda mddeki programı okuyamıyor.
Alıntı yapılan: RaMu - 11 Haziran 2014, 23:16:38
mdye programı yazabilirmi .
..
mddeki programı okuyamıyor.
md nedir? ne demek?
Mikrodenetleyici?
gizemll olmuş biraz ,bence mikro denetleyici'nin kısaltması
Ben de RAM, ROM gibi hafıza bölümlerinden daha önce duymadığımız bir bölüm olabilir diye düşünmüştüm.
bu arada birşey daha test ettim. P16f628 uyarladığım kodda sorun olmadığını yazmıştım. Bir kere programladıktan sonra (sorunsuz şekilde programlanıyor) devreye takıp çalıştırınca 2. kez tanımıyor Brenner.
Almanca bilen biri varmı? Brenner konu ile alakalı yazayım dedim ama translate.google bile çeviremedi siteyi ingilizceye.
Brennerin şuandaki en son güncellemesi 20.05.2013 tarihli.
http://www.sprut.de/electronic/soft/usburn/usburn.htm#download (http://www.sprut.de/electronic/soft/usburn/usburn.htm#download)
sanırım tasarımcısı artık ilgilenmiyor olabilir.
bende bir ara sorun bildirecektim ama senin gibi Almanca engeline takıldım. aslında Almancı çok sayıda yakın akrabam var ancak teknik terimleri çevirebileceklerini sanmıyorum ve güncellemelerin azaldığını görünce bende orjinal pickit3 alıp bu dertlerden kuruldum.
Evet Md=mikrodenetleyici