Hitech PICCLITE ile hex dosya uretme

Başlatan z, 05 Temmuz 2008, 02:14:44

z

MPLAB IDE V8 ile birlikte Hitech PICCLITE kullaniyorum.

Yazdigim kodu sorunsuz derliyor ancak Hex dosya olusturmuyor.

( cof uzantili bir dosya olusuyor. )

Hex dosyayi nasil urettirebilirim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

KAZIMUGUR

Devrede ne yaparsın bilmem ama proteusda .cof u göster,tıpkı hex gibi çalışır hatta adım adım çalıştırmaya basarsan kodlarda gelir ekrana ve ayıklarsın .

z

Cipin ustune tikladigimda program file kismina hitech tarafindan uretilen cof dosyayi yaziyorum.

Adim adim calistirmak istedigimde karsima kodlarim gelmiyor.

Anlayacaginiz bu isin oldukca acemisiyim.

Ote yandan pic programlayiciya hex dosyayi da verebilmem lazim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

M_B

Merhaba ;
Asagıdaki linkte Arslan74 Hocamızın dokumanları mevcut incelemeni tavsiye ederim.  

https://www.picproje.org/index.php/topic,19127
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

KAZIMUGUR

Resimli anlatım:
http://www.4shared.com/file/53929451/54cb7a1/Hi-tech_egitim.html
Yanlış hatırlamıyorsam @muzoo kardeşimizdendi.

Anladığım kadarıyla derlemeyi yaptınız.Mplab ekranında cof ürettim der ama mplab projesini kaydettiğiniz dosyanın içerisine .hex dosyasınıda mutlaka koyar.Gözden kaçmış olmasın ?

Proteus da pic için dediğiniz gibi cof u gösterdikten sonra play in yanındaki step tuşuna basın.Sonra açılan code-u1 sayfasında sağ üstte koşan adamın yanındaki ayak sembolüne tık tık tık...
Örnek:
http://www.4shared.com/file/53930384/85af4ddc/lcd_contador.html

z

Is yerine gittgimde verdiginiz linklerdeki doc uzantili dosyalari okuyabilecegim.

MPLAB ISIS de Build option da butun ayarlari default degerlere getirince hex dosyayi da uretir oldu.

ISIS hala kodlari ekrana getirmiyor. ISIS ile gelen orneklerde adim adim calistirirken kod penceresi kendiliginden geliyor. Calisan herhangi bir  projede islemciye benim hex dosyami yukledigimde gene kod penceresi gelmiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ferdem

.hex dosyasi ile adım adım çalışsa bile kod penceresi gelmez, .cof ile çalıştırırsanız kod penceresi gelir.

z

Hocam cof dosyasinda da kod penceresi gelmiyor.

Yalniz ISIS 0000 nolu adresde kod yok mesajini verdi. Gercekten de lst dosyasina baktigimda kodlarimin romun en gerisinde oldugunu gordum.

Halbuki en azindan Reset ve interrupt adreslerine goto ile olustulmus vektor programlarinin yerlesmis olmasi lazim.

C kodlarim harfiyen asm kodlara donusturulmus ancak roma yerlesiminde hata var.

Anladigim kadariyla ISIS, 0000 da kod goremeyince kod penceresini getirmiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

KAZIMUGUR

.cof ya da .cod olmasa da .hex yüklü iken step e tıklayınca :
Üstte debug menüsünde en alttaki seçeneklerde , mesela pic cpu register gibi şeylere tıklarsan küçük pencerelerde asm filan izlersin adım adım.

z

Sorunumu olabildigince basit anlatabilmem icin ISIS de 12F675 cipini yerlestirdigimi ve baska hic bir eleman kullanmadigimi ve cipi cift tiklayip program file kutusuna asagida verecegim programin cof uzantili olanini yazdigimi varsayin.

Adim adim calistir dedigimde ISIS de kodlarimi gormem gereken pencere bos geliyor ve icinde su uyari mesaji var.

No source line at PC address [PC=0000]

Simdi asagi satirdaki cipe yuklenenecek anlamsiz kodlamaya bakalim.

#include   <pic.h> 

void 
main(void) 
{ 
	asm ("nop");
} 

static void interrupt 
isr(void)        
{ 
	asm ("nop");
}


HITECH ile yukaridaki kodu derledigimizde

elde edilen LST uzantili kod ise asagida.

Hangi dil kullanilirsa kullanilsin, PIC flash alaninda 0000 adresinden Reset programina ilerlememizi saglayan kodlar olmalidir.

0004 adresine ise interrupt programini yazariz.

HI-TECH Software PICC Macro Assembler V8.02PL1
                                                      Sat Jul  5 14:37:58 2008


     1                           	processor	12F675
     2  0000                     indf	equ	0
     3  0000                     rtcc	equ	1
     4  0000                     pc	equ	2
     5  0000                     pcl	equ	2
     6  0000                     status	equ	3
     7  0000                     fsr	equ	4
     8  0000                     porta	equ	5
     9  0000                     portb	equ	6
    10  0000                     portc	equ	7
    11  0000                     pclath	equ	10
    12                           	global	_main
    13                           	signat	_main,88
    14                           	psect	text0,local,class=CODE,delta=2
    15                           	psect	text0
    16                           	file	"C:\deneme\deneme.c"
    17                           	line	5
    18                           
    19  03FD                     _main
    20                           ;deneme.c: 6: asm ("nop");
    21                           
    22                           	line	6
    23                           # 6 "C:\deneme\deneme.c"
    24  03FD  0000               nop ;#
    25                           
    26                           ;deneme.c: 7: }
    27                           
    28                           #
    29                           	psect	text0
    30                           	line	7
    31  03FE                     l1
    32                           	global	start
    33  03FE  2806               	ljmp	start
    34                           	FNSIZE	_main,0,0
    35                           	signat	_isr,72
    36                           	psect	text1,local,class=CODE,delta=2
    37                           	psect	text1
    38                           	line	11
    39                           	psect	intcode,class=CODE,delta=2
    40                           	psect	intcode
    41                           
    42  0004                     _isr
    43                           	global	int_func
    44  0004                     int_func
    45                           ;deneme.c: 12: asm ("nop");
    46                           
    47                           	line	12
    48                           # 12 "C:\deneme\deneme.c"
    49  0004  0000               nop ;#
    50                           
    51                           ;deneme.c: 13: }
    52                           
    53                           #
    54                           	psect	intcode
    55                           	line	13
    56  0005                     l2
    57                           	local	_isr
    58                           	FNROOT	_isr
    59  0005  0009               	retfie
    60                           	FNSIZE	_isr,0,0
    61                           	psect	intentry,class=CODE,delta=2
    62                           	psect	intentry
    63                           	global	int_entry
    64  0004                     int_entry


Gordugunuz gibi main rutini 03FD yani flashin en sonlarinda.

Interrup rutini ise olmasi gereken 0004 adresinde.

Acaba hex kodda 3FD ye gercekten gecis varmi diye baktigimda (pic programlayiciya hex kodu okuttum ve disasm yaptim) kodlar asagida.

; PIC-Assembler-Listing by sprut 2002..2005
; 14-bit-core

; C:\DENEME\DENEME.hex

; Adr. Code Marke  Mnemonic  
; ================================

	   	ORG	0x0000
	   START
 0000 0183	CLRF	STATUS
 0001 3000	MOVLW	0x00
 0002 008A	MOVWF	PCLATH
 0003 2806	GOTO	M0006

	   INT
 0004 0000	NOP	
 0005 0009	RETFIE	

	   M0006
 0006 0183	CLRF	STATUS
 0007 2BFD	GOTO	M03FD


	   	ORG	0x03FD
	   M03FD
 03FD 0000	NOP	
 03FE 2806	GOTO	M0006

	   	END.
; end of file


Simdi hex kodlara bakarsak 0000 adresinde 03fd adresine gecisi kolayca gorebiliyoruz.

O halde sorun yok gorunuyor. Ancak;

ISIS de cipe yukaridaki programin cof dosyasini yukledigimde karsima source kodum gelmiyor ve daha once dedigim gibi PC=0000 adresinde source olmadigini soyluyor.

Bir seyi yanlis yapiyorum ama sorunu bulabilmis değilim.

Aklima gelen tek sey cof dosyasinda 0000 hex den 03fd adresine gecis olmadigi yonunde.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

M_B

Merhaba Arkadas;
Programını denedim ve bende de aynı sorun oldu.
Cozum olarak yapman gereken
 __CONFIG(MCLRDIS&WDTDIS&PWRTEN&INTIO);



Yazmandır.
Kolay gelsın.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

KAZIMUGUR

çalıştırınca ! işaretli yere tıklayınca ;



z

@M_B

Ornek olsun diye yukarida verdigim basit programa asagidaki satiri ekleyince sorun kalkti. Gel gelelim asil ugrastigim programda asagidaki satir zaten vardi.

Fakat simdi eskiden kodlari ekrana gelmeyen programim da calisti.

__CONFIG(MCLRDIS&WDTDIS&PWRTEN&INTIO);

Herkese cok teşekkürler. Fakat bu yasadigim sorun hala kafami kurcaliyor.

@Kazim hocam bende sari ucgen icinde unlem cikmiyor. o kisim yesil ve icinde herhangi bir olumsuz uyari yok.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

50Cal

merhaba, aynı aptal hata ile ben de karşı karşıyayım(CCS C kullanıyorum)..

__CONFIG(MCLRDIS&WDTDIS&PWRTEN&INTIO);
satırını eklemişsiniz ve sorun çözülmüş. bu satırla bildiğimiz sigorta ayarları yapılıyor anladığım kadarıyla.. CCS C'de MCLR ve INTIO ya karşılık gelen sigortalar var mı, nedir bunlar bilmiyorum.Diğer ikisini zaten aynı seçiyorum.
her zaman kullandığım sigorta ayarlarıyla oluşturuyorum programı fakat proteusta kodları göremiyorum aynı hata, 0000'da kod yok diyor.

siz bu hatanın asıl sebebini anlayabildiniz mi?

fatihinanc

#14
CCS için sigorta ayarları;
#fuses INTRC_IO //Dahili RC Osilatör I/O
#fuses NOMCLR  //MCLR Kapalı

Proteus için;
.DSN uzantılı dosyayı .cof uzantılı dosya ile aynı klasöre atmayı deneyin.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)