roboforum.ru

Технический форум по робототехнике.

функция delay_ms(1000) - в реальности 500 мс.

функция delay_ms(1000) - в реальности 500 мс.

hadok » 25 дек 2015, 18:19

Добрый день, помогите пожалуйста с такой вот детской проблемой на контроллере Mega16A . В CodeVision есть функция delay_ms - пауза в миллисекундах. В реальности МК работает ровно половину установленного времени. Кварц 16 Мгц. В даташите есть фраза:
Код: Выделить всёРазвернуть
For resonators, the maximum frequency is 8 MHz with CKOPT unprogrammed and 16 MHz with CKOPT programmed.


Изменение бита CKOPT в фьюзах ни на что не влияет.


Других функций в МК нет.
Код: Выделить всёРазвернуть
 void main(void) {   
   
   DDRD = 0xff;   
   DDRC =0xff;


   d_0=200;
   d_1=80; 
   
i=0;
delay_ms(5000); 

while (1) {   
   
PORTD.4^=1; 
delay_ms(d);   
if (PORTD.4==1) {d=d_1;}  else {d=d_0;}
i++; 
//d_0++;   
if (i>35)  {PORTD.5=1;  PORTD.3=1; d_0=50; d_1=150; }
Вложения
фьюзы.jpg

Re: функция delay_ms(1000) - в реальности 500 мс.

Angel71 » 25 дек 2015, 19:35

что бы дилэй нормально работал нужен как минимум дефайн частоты мк. он или в настройках проекта задаётся или в коде. а так или гуглите или посмотрите хотя бы исходник, что там у них за реализация.

Re: функция delay_ms(1000) - в реальности 500 мс.

hadok » 25 дек 2015, 20:01

Angel71, огромное спасибо. Все просто, в настройках параметры чипа были 8 Мгц.


Rambler\'s Top100 Mail.ru counter