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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

функция 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
Аватара пользователя
hadok
 
Сообщения: 166
Зарегистрирован: 06 июн 2005, 02:27
Откуда: Минск, Лида

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

Сообщение Angel71 » 25 дек 2015, 19:35

что бы дилэй нормально работал нужен как минимум дефайн частоты мк. он или в настройках проекта задаётся или в коде. а так или гуглите или посмотрите хотя бы исходник, что там у них за реализация.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

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

Сообщение hadok » 25 дек 2015, 20:01

Angel71, огромное спасибо. Все просто, в настройках параметры чипа были 8 Мгц.
Аватара пользователя
hadok
 
Сообщения: 166
Зарегистрирован: 06 июн 2005, 02:27
Откуда: Минск, Лида


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11