12f629 da #int_ra2 yokmu?? var yazıyor :))

Başlatan SpeedyX, 08 Ocak 2005, 23:37:09

SpeedyX

12f629 un include dosyasında şöyle yazıyor....

////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
//                      EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H              0x40
#define H_TO_L                 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL                    0x0BC0
#define INT_RTCC                  0x0B20
#define INT_EXT                   0x0B10
#define INT_TIMER1                0x8C01
#define INT_TIMER0                0x0B20
#define INT_EEPROM                0x8C80
#define INT_COMP                  0x8C08
#define INT_RA                    0x0B08
#define INT_RA0                   0x010B08
#define INT_RA1                   0x020B08
#define INT_RA2                   0x040B08
#define INT_RA3                   0x080B08
#define INT_RA4                   0x100B08
#define INT_RA5                   0x200B08

#list


fakat ben normal interrupt konumuymuş gibi programın içine şunları yazdığımda hata veriyor... neden?
#int_RA2
void IRAl() {
	IRMode=1;
	DISABLE_INTERRUPTS(INT_RA2);
	ENABLE_INTERRUPTS(INT_TIMER1);
	setup_timer_1 (T1_INTERVAL | T1_DIV_BY_8);
	.
	.
	.
}


main de inerruptları kurarken ise :
ENABLE_INTERRUPTS(INT_RA2);							// RA2 tsop interrupt pin
	EXT_INT_EDGE(H_TO_L)										// int şartı


yani benim burada demek istediğim :
   ra2 bacağı + dan - ye düştüğünde program #int_ra2 yazdığım yere konumlansın idi....
yoksa benmi yanlış biliyorum bu işi???

yardımcı olursanız sevinirim arkadaşlar....
[/code]

mmengi

Dostum 12f629 un bütün bacaklarında interrupt on port change özelliği var asm de hangi portların bu özelliği taşıyacağı IOCB registerinden belirlenir.CCS de bu interrupt ı kullanabilmek için belkide bu registeri düzenlemek gerekiyordur elle.Ve ayrıca option registerininde 3. bitinin de aktif edilmesi gerekmektedir.

DumrulBey

Alıntı yapılan: "SpeedyX"fakat ben normal interrupt konumuymuş gibi programın içine şunları yazdığımda hata veriyor... neden?
Soruya soruyla cevap vermiş gibi olacağım ama hata kodu nedir? Belki mmengi'nın söylediği olmalı. O yüzden bunu denedikten sonra yine hata veriyorsa açıklamaları ile nakledersen mutlaka çözüm bulunacaktır.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

SpeedyX

hata : is not valid interrupt vector idi.
ben onu düzelttim ve derlemesini başardım.
program başında hiç değişken tanımlamamıştım. bir değişken tanımlayınca nedense düzeldi.... derleyicinin sorunu olduğunu düşünüyorum...

fakat bu seferde
proteus ta çalıştıramadım devreyi...
simülasyon yapamadan hata veriyor...
hata ise 12c6x.dll hatalı diyor.

hatalı olan ya benim programım, yada proteusun söz konusu dll dosyası...
hiç bilemiyorum.
programdaki interrupt hatası hala devam ediyor olabilir.... ;)
en iyisi olayı realde denemek diye düşünmeye başladım.
acaba proteusun son versiyonunu nerden indirebilirim? bende 6.2 var
629 ve 818 yok.... demo olan 6.6 da denedim devreyi... çalışmadı...

ilgilendiğiniz için çok teşekkür ederim..