Здравствуйте, начал разбираться с контроллерами недавно, вот написал простейшую программу - бегущий огонь на 8 светодиодах:
Контроллер взял AT90S4434 (нашел у себя в институте, он явно не новый, уже где-то работал). В протеусе все работает как надо, выводы переключаются где-то через 100 мс. А на реальном контроллере - через 30 сек!. И так с любыми программами где используется задержка. Кварц стоит на 8 Мгц, пробовал менять на другой - не помогает, если поставлю на 4 Мгц - еще в 2 раза медленнее работает. Как-будто задан какой-то делитель частоты, но тут же его нет? Подскажите в чем может быть проблема.
Раздел: МК для начинающих
#define F_CPU 8000000
#include <avr/io.h>
#include <avr/delay.h>
int main(void)
{
DDRA=0xff;
DDRC=0xff;
DDRB=0x00;
PORTC=0b00000001;
int del;
del = 100;
while(1)
{
if (PORTC == 0b00000000)
{
PORTC=0b00000001;
//if (del > 10) del--;
}
_delay_ms(del);
PORTC=PORTC << 1;
}
}
Контроллер взял AT90S4434 (нашел у себя в институте, он явно не новый, уже где-то работал). В протеусе все работает как надо, выводы переключаются где-то через 100 мс. А на реальном контроллере - через 30 сек!. И так с любыми программами где используется задержка. Кварц стоит на 8 Мгц, пробовал менять на другой - не помогает, если поставлю на 4 Мгц - еще в 2 раза медленнее работает. Как-будто задан какой-то делитель частоты, но тут же его нет? Подскажите в чем может быть проблема.
Раздел: МК для начинающих