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

Магический МК

Добавлено: Вт июл 15, 2008 19:31:35
Lockdog
В общем не знаю, что и делать...
Есть МК ATmega16, на 4 ноги DDRD (порты настроены на выход) должно подаваться 1 0 1 0...
Но иногда там вообще корявое напряжение, колеблется от 1,2 до 3,5 Вольт...

Всё прошивается нормально, проверял на 2-ух МК, кондёры стоят и на питании самого МК и на питании АЦП, и на 78L05 стоят кондёры, поставил внешний кварц, на нём тоже кондёры, ресет подтянут резистором на плюс...
Что ещё сделать можно? Странные глюки...

Добавлено: Вт июл 15, 2008 19:46:37
Пухич
А вы точно порт на выход настроили? И чем кстати меряете? Нагрузка на ногах какая?

Добавлено: Вт июл 15, 2008 19:46:45
biDE
вообще-то именно DDRD и управляет направлением (вход или выход), поэтому 1010 = выход.вход.выход.вход. А на входе напряжение определяется либо подтяжкой, либо внешним напряжением.

Добавлено: Вт июл 15, 2008 20:08:16
Lockdog
Пухич, точно, меряю вольтметром, к ним подключена L293D.
biDE, чтобы было понятнее, вот код:

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

DDRB = 0xFF;

PORTB |= 1<<0;
PORTB &= ~(1<<1);
PORTB |= 1<<2;
PORTB &= ~(1<<3);
Дело в том, что иногда там нормально всё и порты работают как надо, а потом как-то всё сбрасывается и на выходе никаких 0 или 1 нет. И ресет не помогает и выключение\включение. Понятно, что какие-то наводки идут, но как их убрать я уже не представляю, схема спаяна на монтажной плате, то есть без дорожек, а с проводами...
Уже лезет в голову мысль обернуть МК фольгой и соеденить с "землёй"... :))

Добавлено: Вт июл 15, 2008 21:36:38
smac
Но иногда там вообще корявое напряжение, колеблется от 1,2 до 3,5 Вольт...

Может быть на линиях порта не статическое число, а попеременно 1 и 0 с различным заполнением в результате глюка программы (нечто вроде ШИМ)? Тогда вольтметр действительно будет показывать изменяющеся напряжение. Нет возможности осциллоскопом пин посмотреть? Если нет осциллоскопа - пищалку с резистором на порт - частоты до 10 кГц думаю можно будет засечь, ну в крайнем случае - светодиод с резистором - до 10 Гц можно различить.

Добавлено: Вт июл 15, 2008 22:48:58
Lockdog
Тока что заново проверял, всё нормально работало, выдавало стабильно 1 и 0...

Добавлено: Ср июл 16, 2008 01:21:14
Пухич
Lockdog писал(а):Тока что заново проверял, всё нормально работало, выдавало стабильно 1 и 0...
На предмет коз и холодных проверял?

Добавлено: Ср июл 16, 2008 09:22:24
Lockdog
Да проверял, но если проблема не решится, то я, по всей видимости, буду все контакты заново перепаивать...

Добавлено: Ср июл 16, 2008 09:27:20
alex2103

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

DDRB = 0xFF; 

PORTB |= 1<<0; 
PORTB &= ~(1<<1); 
PORTB |= 1<<2; 
PORTB &= ~(1<<3);
а оно не в бесконечном цикле это делает?

Добавлено: Ср июл 16, 2008 09:34:58
Lockdog
Нет, просто в основной программе выполняется 1 раз.

Добавлено: Ср июл 16, 2008 16:06:40
Пухич
Мистика какая-то. А ватчдог в порядке? Может включен да не сбрасывается?

Добавлено: Ср июл 16, 2008 16:56:37
Lockdog
Вот-вот, вчера вечером всё нормально было, сегодня утром тоже, сейчас опять включил, сначала всё работало, потом опять коряво всё стало, на одной ноге 1,2, на другой 3,5, на 2-ух других примерно тоже самое, а вот насчёт вотчдога не знаю...на самом деле с ним даже не работал, может подскажете как CVAVR его программить?

Добавлено: Ср июл 16, 2008 18:30:19
Пухич
В CVAVR я как свинья в апельсинах. Пишу только на ассемблере. Но подозреваю, что можно в CVAVR засылать нужные значения в регистры, в том числе и в WDTCR.

Добавлено: Ср июл 16, 2008 18:43:12
kolyay
Было похожая свистопляска когда кварц глючил.

Добавлено: Ср июл 16, 2008 18:44:14
Lockdog
У меня либо от проводов на самой плате такие наводки, либо от компа+колонки...
Пройдусь-ка я заново по всем контактам с паяльником...
и про таймер почитаю...


Дык я сначала от внутреннего тактировал, глючило, потом подключил внешний, всё тоже.
Если ты имеешь ввиду компилятор, то юзаю CVAVR

Добавлено: Ср июл 16, 2008 21:32:39
ramid
"на 4 ноги DDRD"
"Код:
DDRB = 0xFF;

PORTB |= 1<<0;
PORTB &= ~(1<<1);
PORTB |= 1<<2;
PORTB &= ~(1<<3); "

Проверь-ка еще раз код.

Добавлено: Чт июл 17, 2008 08:34:33
Lockdog
Извиняйте, это опечатка, всё правильно в коде это DDRB и L293D подключена к портам B.