Кто сможет подправить прошивку ( сегментник с ОА на ОК )

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

В общем, даже и не знаю чем ещё помочь...

Судя по дизассемблированному коду, он рассчитан на OA. Судя по исходникам от автора - код как будто пытались переписать для ОК, но где-то на полпути забросили. Поэтому не факт, что он заработает и с ОА.

Сильно вникать в исходники, запуская Codevision под wine или virtualbox, нет никакого желания, не имея на руках устройства. Код написан, имхо, кошмарно. Куча глобальных переменных. Всё завязано на конкретные пины. Файлы *.h на самом деле не заголовки, а код.

Я попытался портировать такое на нормальный C (для avr-gcc, он же WinAVR). Ввиду обилия тех же глобальных переменных пришлось всё держать в один файле. Код в итоге скопилировался, но будет работать или нет - без понятия. Скорее, нет.

Могу только посоветовать поставить Codevision и попробовать самому править исходники. Имея на руках устройство, можно надеяться, что за несколько итераций что-то да получится. В основном, всё будет сводиться к правке битов на портах в файлах main.c и 7segment.h. Даже не нужно знать C, достаточно иметь немного общего здравомыслия.
Контактная информация:
Реклама
Электрический кот
Сообщения: 1006
Зарегистрирован: Пн мар 12, 2007 12:18:28
Откуда: Тюмень

Сообщение ewrey »

Жаль конечно что тут всё так запущено... И времени я у Вас отнял наверное не мало... :(
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Таки потратил пару часов и спаял на макетке МК с индикатором.
Держите нормальный рабочий (как минимум, в плане отображения символов для индикатора с ОК) вариант.
Контактная информация:
Электрический кот
Сообщения: 1006
Зарегистрирован: Пн мар 12, 2007 12:18:28
Откуда: Тюмень

Сообщение ewrey »

Опять не пошло... :dont_know: При включении загораются 000, как и положено. Потом, должно отображаться Cur, но вместо этого
888 Причём, какие то сегменты горят чуть ярче, а какие то темнее, но что конкретно горит в этих 888 не угадать. Ну и забыл сказать, что сегменты слегка помаргивают. Может у меня индикатор каой тормозной или наоборот быстрее? Или с диодными такого не бывает?
Ну ещё можно предположить что у автора есть расхождения схемы и печатки, прошивка может сделана по печатке уже. Нада проверить. Сейчас действительно странно, У Вас же было правильное отображение всех режимов?
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Не знаю, что у Вас там не пошло. Объясню, как это работает у меня . Собрано по Вашей переделанной схеме, с транзисторами n-p-n, эмиттерами подключенными к земле. Индикатор GNT-5631AS-21.

Включаю, зажав предварительно кнопку. Вижу на дисплее CAL, потом число 450. Дальнейшие нажатия кнопки увеличивают число.
Выключаю, включаю. Вижу число 130. Дальнейшие нажатия увеличивают число.
Выключаю, включаю. Вижу число 020. Дальнейшие нажатия увеличивают число.
Выключаю, включаю. Вижу число 000. Нажатие кнопки показывает напряжение питания в вольтах.
Выключаю, включаю. Вижу сменяющуюся надпись Cur-000, нажатия кнопки меняет последовательно Cur-020, Cur-130, Cur-450.

По крайней мере так это работает у меня, без операционника и батарей.

Может, Вы отключили транзисторы (для другой прошивки), и Вместо Cur имеете наложение букв друг на друга?

Прошиты hex и eep из архива, Fuse-биты: lfuse=0x24, hfuse=0xCF, как указано у автора в архиве с прошивкой в статье.

P.S. Вот такой кошмар набросал ради проверки:
Изображение Изображение Изображение
Последний раз редактировалось WiseLord Чт фев 27, 2014 11:47:10, всего редактировалось 2 раза.
Контактная информация:
Реклама
Электрический кот
Сообщения: 1006
Зарегистрирован: Пн мар 12, 2007 12:18:28
Откуда: Тюмень

Сообщение ewrey »

Странно блин. Картинку фуз битв можете выложить? А то у меня понипрог. Транзисторы стоят, да. Индикатор E30361-L-O-8-W

П.С. а у меня получается p-n-p транзисторы. Щас заменю
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Вот вам картинка:

Изображение

Выставляйте lfuse=0x24 и hfuse=0xCF на http://www.engbedded.com/fusecalc и смотрите на чекбоксы, сравнивайте.
П.С. а у меня получается p-n-p транзисторы. Щас заменю
Так что же, вы меня тут дурили две страницы? Сами дали ссылку на свою схему, в которой n-p-n, а поставили p-n-p.
В этом случае "правильно" будет отображаться только тогда, когда все три цифры одинаковые. Иначе, вместо загорания символа на нужной позиции он будет загораться на двух остальных, в результате при развёртке это смешается в кашу.

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

______________
1     =>   1 1
  2   => 2   2
    3 => 3 3
______________
1 2 3 => ? ? ?
Сейчас и видео работы подгрузится: http://youtu.be/lExjJ59B-cA
Последний раз редактировалось WiseLord Чт фев 27, 2014 09:12:03, всего редактировалось 1 раз.
Контактная информация:
Электрический кот
Сообщения: 1006
Зарегистрирован: Пн мар 12, 2007 12:18:28
Откуда: Тюмень

Сообщение ewrey »

Щас всё заробило после замены транзисторов. Правда вроде стала тормозная реакция на кнопку в режиме калибровки.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

В общем, как я понял, вопрос можно считать закрытым.
Поигрался с макеткой. Понравилось. Подумал, что, может быть, и для себя когда-нибудь соберу, так что положил переделанный код к себе в архив...
Контактная информация:
Ответить

Вернуться в «AVR»