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

Глюки? или как проверить роботоспособность мк (attiny2313)?

Добавлено: Вс мар 07, 2010 22:06:14
pierro
Пишу здесь, в надежде найти хоть какое то логическое объяснение.

Есть у меня 3 микроконтроллера attiny2313, два из них новые, только купленные. Спаял схему, микроконтроллер и индикатор на 3 цифри. Написал небольшую программку, которая просто "считает" и выводит цифры от 0 до 999. То есть так должно бить, но так не есть. Какие то странные глюки случаются. например, считает до 23 и снова с нуля, будто перегружается, или ресет микроконтроллеру. Или другой случай, считает до 2 а потом выводить 888 и зависает. И такие глюки на все 3-их микроконтроллерах. Глюки разные бывают.

Микроконтроллеры прошиваться, стираются, и проверяются(verification) нормально. Запускаю их от внутреннего генератора. Для стабилизатора использую 78L05 без дополнительных фильтров(конденсаторов), но питание от 12v аккумулятора.

Вопрос вот в чем, они все "дохлые" или в чем может бить такие глюки? Мучаюсь с етим уже несколько дней.

Надеюсь у кого то найдутся какие то мисли по поводу глюков. Спасибо.

Добавлено: Вс мар 07, 2010 22:15:43
lix
сбрасываться мк может из-за watchdog'а. к 78l05 нужны конденсаторы, без них она может возбуждаться, и порождать разные глюки, типа ваших

Добавлено: Вс мар 07, 2010 22:22:51
GP1
99.9% глюков - глюки созданные программистом :)))
программу в студию, ну и кондеры на 7805 повесь.

Добавлено: Вс мар 07, 2010 22:25:26
pierro
lix писал(а):сбрасываться мк может из-за watchdog'а.
он отключен.

Добавлено: Вс мар 07, 2010 22:33:40
pierro
Программа разработана для цифрового термометра, поетому там еще есть дополнительной код, который пока не используется.

Добавлено: Вс мар 07, 2010 22:34:41
pierro
lix писал(а):к 78l05 нужны конденсаторы, без них она может возбуждаться, и порождать разные глюки, типа ваших
Спасибо, попробую.

Добавлено: Пн мар 08, 2010 12:59:56
Danko
объясните пожалуйста логику работы нижеследующих строк:

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

PORTD.4 = 3 == iNum;
PORTD.5 = 2 == iNum;
PORTD.6 = 1 == iNum;

Добавлено: Пн мар 08, 2010 15:05:27
pierro
Danko писал(а):объясните пожалуйста логику работы нижеследующих строк:

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

PORTD.4 = 3 == iNum;
PORTD.5 = 2 == iNum;
PORTD.6 = 1 == iNum;
подтягиваем нужний порт, когда нужно "засветить" нужную цифру, первую, вторую или третю.

Добавлено: Пн мар 08, 2010 15:53:24
Danko
Играетесь с приоритетом операций. Неплохо!!!

Но если Вы еще не столкнулись с послесвечением, то могу сказать у вас одновременно единица (на короткое время) появляется на двух портах.

в TurnOnDisplay() я бы добавил одну строку.

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

PORTB = numbers[11]; // погасить не разряд, а сегменты

PORTD.4 = 3 == iNum;
PORTD.5 = 2 == iNum;
PORTD.6 = 1 == iNum;
а из DisplayTemp() строки

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

PORTD.4 = 0;
PORTD.5 = 0;
PORTD.6 = 0;    
можно удалить.

Если число с точкой, то Вы через 300 uS гасите число и зажигаете точку.

Вот так наверное лучше

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

PORTB = d;

if(dot)
    {         
        PORTB.5 = 0;
    }

Добавлено: Пн мар 08, 2010 16:10:03
pierro
Danko писал(а):Играетесь с приоритетом операций. Неплохо!!!
То есть это хорошо или не очень?
Danko писал(а):Играетесь с приоритетом операций. Неплохо!!!
Но если Вы еще не столкнулись с послесвечением, то могу сказать у вас одновременно единица (на короткое время) появляется на двух портах.
спасибо, учту.

Danko писал(а): Если число с точкой, то Вы через 300 uS гасите число и зажигаете точку.

Вот так наверное лучше

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

PORTB = d;

if(dot)
    {         
        PORTB.5 = 0;
    }
Спасибо, как то сам до этого не додумался. :oops:

Добавлено: Пн мар 08, 2010 16:37:00
Danko
pierro писал(а):То есть это хорошо или не очень?
То, что Вы о них знаете это очень хорошо.
А вот то, что нет комментариев это очень плохо.

Добавлено: Вт мар 09, 2010 12:44:09
pierro
Спасибо всем. Поставил фильтра на 78L05 все заработало как ... термометр :beer: