Задача достаточно простая - включение-выключение трех каналом логическими уровнями с необходимыми задержками. Устройство много лет работало как положено, но потом что-то коротнуло и часть схемы благополучно умерло. Дали починить, заодно чуть исправить прошивку. Вот исправил - МК почему-то выставляет 1 в нужный вывод, далее задержка - и всё ( Как-будто из задержки более не выходит программа. Перекинул контроллер на абсолютно другую плату (пустую) - всё аналогично. Слепил тестовую прошивку.
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC=0xFF;
DDRD=0xFF;
while(1)
{
PORTD=0x01;
_delay_ms(3000);
PORTD=0x02;
_delay_ms(3000);
PORTC=0x01;
_delay_ms(3000);
}
return 0;
}
Всё аналогично. ПортД в тестовой прошивки для пробы, так-то нужен С, но на обоих портах ситуация одинаковая. Ставил другую мегу8 (из другой партии) - ничего.. Прошивка проходит вроде как корректно, верификация ОК.
Фьюзы по умолчанию, не менялись.
В протеусе всё работает как положено.
Что-то должно быть на поверхности, но не могу понять, что ЭТО. Кто что подскажет толкового?
