Merhaba,
Pic18f25k22 de "__delay_ms();" fonksiyonunu kullanırken "error: (1355) inline delay argument too large" şeklinde hata alıyorum.
16MHz için max. 49 ms 4 MHZ için max. 197ms gecikme elde edebiliyorum ve bu değerleri aşınca üstteki gibi bir hata aıyorum.
programda _XTAL_FREQ tanımlı.
Bu hatayı sadece 18 serileri için alıyorum ve 16 serileri için böyle bir limit yok.
Microchip formunda pic18 4MHz için 197.170 cycles olabiliyor şeklinde ibare gördüm.
İşin mantığını açıkçası anlayamadım. Yardımlarınızı bekliyorum.
Teşekkürler.
Şu şekilde bir çözdüm üretebilirsin. Fakat o sınırlamanın sebebini bilmiyorum.
void Delay_ms(uint16_t delay)
{
for (uint8_t i = 0; i < delay; i++)
__delay_ms(1);
}
Benzer bir çözümle hallettim ama bunun nedenini merak ediyorum. Birazda saçma geliyor.
Kütüphaneyi yazanlar delay fonksiyonunu öyle tanımlamışlar,
upuzun delay istiyorsan ya ard arda yaz yada
timer vs. kullan demişler,
hobi projesi yapıyorsan beni ilgilendirmiyor,
işlemcimi boş boş bekletme,
boş beklesin istemiyorum, çalışsın başka işlerle uğraşsın,
kodunu ona göre yaz, profesyonel olsun diye düşünmüşler.
Yada delay fonksiyonunu o sınırda yazmak işlerine gelmiştir kolay oluyordur,
ondan öyle yapmışlar,
255x255 x ~3 =197 000 (hesap için asm ile delay rutini yazmaya bakabilirsin)
yani 2 tane 8 bitlik register la işi bitirmişlerdir.
Anladım
@RaMu hocam teşekkürler :)