Страница 1 из 1
Парни кто поможет прошивку изменить...
Добавлено: Чт янв 29, 2009 22:17:33
eygen
Всем привет. Имею многим известный термометр на pic16f84 и датчике ds18b20 индикатор там стоит с общим анодом. Появилась нужда изменить индикатор на большой и с ОК. Сразу говорю что в ассемблере полный ноль но кое что сделать получилось. В общем все показывает правильно только одно но при измерении отрицательных температур знак "-" не показывает. Если кому нетрудно может подскажете что не так а лучше ткните носом где именно ошибся...
Ссылка на устройство с оригинальной прошивой тут...
http://eldigi.ru/site/term/2.php
С уважением, Евгений.
Добавлено: Пт янв 30, 2009 14:23:13
diehard
Покажи что на что заменил. Гадать можно долго. Для другого индикатора программу можно и не менять, можно ограничиться изменением схемы.
Вообще, если два разряда заработали, смотри подключение неработающего разряда. Сегменты у всех общие (ABCDEFG), т.е. если заработал один разряд, значит заработают все и проблеме только в узле коммутации неработающего разряда. Индикация минуса происходит сегментом G и RA2. Если светится цифра 8 (или любая другая с сегментом G в любом разряде), то надо смотреть цепь от RA2 (DD1 вывод 1).
Добавлено: Пт янв 30, 2009 15:20:06
eygen
diehard писал(а):Покажи что на что заменил. Гадать можно долго. Для другого индикатора программу можно и не менять, можно ограничиться изменением схемы.
Вообще, если два разряда заработали, смотри подключение неработающего разряда. Сегменты у всех общие (ABCDEFG), т.е. если заработал один разряд, значит заработают все и проблеме только в узле коммутации неработающего разряда. Индикация минуса происходит сегментом G и RA2. Если светится цифра 8 (или любая другая с сегментом G в любом разряде), то надо смотреть цепь от RA2 (DD1 вывод 1).
В том то и дело что считаю что в схеме никакаких проблем по тому как этот разряд индикатора показывает реальную температуру в том числе и сегмент G. RA2 показывает старший разряд в том случае когда температура выше -20 градусов тоесть в RA2 показывает "-" в пределах -0.1 до -19.9 то что ниже показывает в разряде RA2 первыую цифру температуры.
В прошиве изменил таблицу символов...
;Процедура преобразования десятичной цифры из WREG в код 7-ми сегментного индикатора
DS7SEG ADDWF PCL, 1
;было
; RETLW B'01111110' ;0
; RETLW B'00100100' ;1
; RETLW B'01010111' ;2
; RETLW B'01100111' ;3
; RETLW B'00101101' ;4
; RETLW B'01101011' ;5
; RETLW B'01111011' ;6
; RETLW B'00100110' ;7
; RETLW B'01111111' ;8
; RETLW B'01101111' ;9
; RETLW B'00000000' ;Пробел
; RETLW B'00000001' ;Минус
;стало
RETLW B'10000001' ;0
RETLW B'11011011' ;1
RETLW B'10101000' ;2
RETLW B'10011000' ;3
RETLW B'11010010' ;4
RETLW B'10010100' ;5
RETLW B'10000100' ;6
RETLW B'11011001' ;7
RETLW B'10000000' ;8
RETLW B'10010000' ;9
RETLW B'11111111' ;Пробел
RETLW B'11111110' ;Минус
Добавлено: Сб янв 31, 2009 17:09:59
diehard
eygen писал(а):
В том то и дело что считаю что в схеме никакаких проблем по тому как этот разряд индикатора показывает реальную температуру в том числе и сегмент G. RA2 показывает старший разряд в том случае когда температура выше -20 градусов тоесть в RA2 показывает "-" в пределах -0.1 до -19.9 то что ниже показывает в разряде RA2 первыую цифру температуры.
Правильно, а как при наличии всего трех разрядов вместить минус при выводе 19.9. Значение "-19.9" занимает _четыре_ разряда.
Процедура преобразования заменена правильно.
Если схема нормально работает с общим анодом, то в прошивку лезть не нужно, а можно поставить транзисторы (например 315) для управления сегментами и разрядами и все заработает с общим катодом. Хотя не понятно, как можно вывести "-19,9" на трехразрядный индикатор???
Добавлено: Сб янв 31, 2009 18:36:29
eygen
когда температура ниже 19.9 градусов минус и не отображается, да и не особо он нужен оно ведь и так понятно что с минусом температура знак этот нужен как раз когда температура близка к нулю.
на старой прошивке со старым индикатором минус показывало, не понятно почему не хочет показывать минус с моей прошивкой и другим индикатором...
Добавлено: Сб янв 31, 2009 18:41:40
eygen
С транзисторами не хочу заморачиваться уже потому что все готово и что то изменять в схеме это гемор, я все же рассчтывал программно решить задачу... Да и хотелось бы разобраться почему у меня не заработало, пока не загадываю но возможно еще ни раз придется столкнуться с микроконтроллерами посему опыт лишним не будет.
Добавлено: Сб янв 31, 2009 22:21:37
diehard
В протеусе пробовал симуляцию пускать, нормально работает?
А вообще, если решил набраться опыта в работе с контроллерами, то возьми и попробуй с нуля написать программу, тем более, что плата для экспериментов уже есть. Опыта будет море! Термометр - это как раз задача для начала изучения контроллеров. Возьми С (си) и вперед! Для пиков с разными библиотеками есть MicroC, CCS.
Если созреешь на самостоятельную работу - готов поделиться компиляторами. Вместо 16f84 можно поставить 16f628 без переделки платы, imho удобнее будет.
За неделю, не больше, с чистого листа напишешь программу. У меня самого первая задача была часы с будильником/календарем/термометром/переходом на летнее-зимнее время. В неделю, не торопясь, уложился. На этом не остановишься, обязательно найдешь применение новым знаниям!
Добавлено: Вс фев 01, 2009 09:53:38
eygen
diehard писал(а):В протеусе пробовал симуляцию пускать, нормально работает?
А вообще, если решил набраться опыта в работе с контроллерами, то возьми и попробуй с нуля написать программу, тем более, что плата для экспериментов уже есть. Опыта будет море! Термометр - это как раз задача для начала изучения контроллеров. Возьми С (си) и вперед! Для пиков с разными библиотеками есть MicroC, CCS.
Если созреешь на самостоятельную работу - готов поделиться компиляторами. Вместо 16f84 можно поставить 16f628 без переделки платы, imho удобнее будет.
За неделю, не больше, с чистого листа напишешь программу. У меня самого первая задача была часы с будильником/календарем/термометром/переходом на летнее-зимнее время. В неделю, не торопясь, уложился. На этом не остановишься, обязательно найдешь применение новым знаниям!
От части ты конечно прав следующим девайсом на контроллере будут часы с такими же примерно возможностями как у тебя. Обычно слоожно разобраться в чужом коде но так как мне кажется что должно работать то меня это закусило, хочу разобраться из за чего не желает работать. Протеус качнул но еще не запускал, первый раз потому думаю не быстро с ним разберусь.
По часам интересует на чем создавал, тоесть что бы замутить календарь надо хренову тучу счетчиков или специальный контроллер использовал?
Добавлено: Вс фев 01, 2009 16:00:34
diehard
Первые часы делал на DS1302. Он сам переключается на резервное питание, поэтому его и взял. Не надо дополнительно ничего городить для резервного питания. А вообще можно и на контроллере собрать, но тогда прийдется делать с резервное питание на случай отключения сетевого.