Страница 1 из 1

Помогите с AtMega16...

Добавлено: Пн ноя 02, 2009 20:38:09
nndpc
Здравствуйте. Осваиваю вот потихоньку МК, дошёл до практики. Первый опыт, поэтому сильно не пинайте :) Собрал простенькую схемку на AtMega16 и 8-ми светодиодах, которые подключил к порту A. Писал в CodeVision.

Код: Выделить всё

...
while(1)
   { 
          PORTA=0;    
     delay_ms(500);
          PORTA=1;
     delay_ms(500);
    };
...
После прошивки получилось, что мигают только 6 светодиодов(PA2-PA7)...
Тогда попробовал написать иначе, проверить светодиоды, подключенные к PA0, PA1:

Код: Выделить всё

...
PORTA.0=0;
PORTA.1=0;
delay_ms(500);
PORTA.0=1;
PORTA.1=1;
delay_ms(500);
...
Прошил -оба мигают... :shock: Так в чём же может быть дело?

Добавлено: Пн ноя 02, 2009 21:23:25
Krik99
попробуй так:

Код: Выделить всё

... 
while(1) 
   { 
          PORTA=0x00;    
     delay_ms(500); 
          PORTA=0xFF; 
     delay_ms(500); 
    }; 
...

Добавлено: Пн ноя 02, 2009 21:58:03
nndpc
Попробовал -то же самое... :cry: Отнёс к другу, прошили на его EasyAVR 5A, программа на mikroC, и там -та же картина. Есть подозрение, что эта пара светодиодов вспыхивают и гаснут очень быстро... Может, сам МК повреждён?

Добавлено: Пн ноя 02, 2009 22:14:23
WandererSc
Может МК поврежден, а может и светодиоды.
А в той программе весь PORTA включен на выход? (регистр DDRA)
А перифирия (АЦП) отключен?
Попробуй на PORTB(или любой другой).

Добавлено: Пн ноя 02, 2009 22:26:07
nndpc
Да, регистр DDRA настроен на выход. Диоды точно рабочие, я же выше писал, что они работают. На портах B,C,D всё работает...

Добавлено: Пн ноя 02, 2009 23:43:44
WandererSc
Значит МК повреждён.

Добавлено: Вт ноя 03, 2009 01:25:58
smac
nndpc писал(а):Да, регистр DDRA настроен на выход. Диоды точно рабочие, я же выше писал, что они работают. На портах B,C,D всё работает...
Пин AVCC подключен? Если подключен то как? (схему и программу полностью приведите).

Добавлено: Вт ноя 03, 2009 11:11:06
nndpc
Текст программы...

Код: Выделить всё

#include <mega16>
#include <delay>
void main(void)
{
PORTA=0xFF;
DDRA=0xFF;

while(1)
   {
          PORTA=0;   
     delay_ms(500);
          PORTA=1;
     delay_ms(500);
    }; 
}
Схема из мануала к EasyAVR, светодиоды там подключены ко всем портам, здесь, для примера, к PORTB...

Добавлено: Вт ноя 03, 2009 14:39:06
Krik99
В начале программы неплохо бы дописать #include <mega16>
Значение фьюзов в студию :)

Добавлено: Вт ноя 03, 2009 14:52:15
nndpc
неплохо бы дописать #include <mega16>
Да так и есть, при копировании первую строчку забыл :)
А вот и фьюзы...

Добавлено: Вт ноя 03, 2009 14:56:40
smac
nndpc писал(а):...
Схема из мануала к EasyAVR, светодиоды там подключены ко всем портам, здесь, для примера, к PORTB...
AVCC подключите.

Добавлено: Вт ноя 03, 2009 15:14:57
nndpc
На AVCC можно вместо индуктивности поставить резистор?

Добавлено: Вт ноя 03, 2009 16:15:50
pyzhman
В моем CodeVision'е эта программа вообще моргает только РА0 (при PORTA= 1).

Добавлено: Вт ноя 03, 2009 18:44:11
nndpc
А на mikroC должна работать...

Добавлено: Вт ноя 03, 2009 19:03:31
Krik99
Ну тогда как вариант скачай тот же Code Vision и протести МК этим кодом:

Код: Выделить всё

... 
while(1) 
   { 
          PORTA=0x00;    
     delay_ms(500); 
          PORTA=0xFF; 
     delay_ms(500); 
    }; 
...
Если и так не работает, тогда скорей проблема в МК :(

Добавлено: Вт ноя 03, 2009 23:54:41
nndpc
Нашёл новый МК, прошил его -то же самое. Может быть, это особенность такая этой Меги16? :) Потыкал вольтметром: напряжение на PA0 и PA1 меняется, но совсем незначительно. Уже сам в Протеусе сделал -там всё работает

Добавлено: Ср ноя 04, 2009 00:45:25
WandererSc
Чудеса.Вроде-бы нет там такой особенности. Если в Proteus работает, должно и в железе работать.
Выложи проэкт протеуса и исходник, попробую разобратся.

Добавлено: Ср ноя 04, 2009 01:06:14
nndpc
Вот и я удивлён :)

Добавлено: Чт ноя 05, 2009 00:13:30
WandererSc
А у меня "в железе" работает. Подключал светодиод и к GND и к VCC - работает.
Программа правильная. Надо искать ошибки в схеме.

Добавлено: Чт ноя 05, 2009 17:39:46
nndpc
Всем спасибо за помощь! Сегодня, наконец-то, проблема была решена. :)) Действительно, первый МК был неисправен, а второй на макетке криво собрал. Бывает же так...