Парни кто поможет прошивку изменить...

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Чт янв 29, 2009 22:03:18

Сообщение eygen »

Всем привет. Имею многим известный термометр на pic16f84 и датчике ds18b20 индикатор там стоит с общим анодом. Появилась нужда изменить индикатор на большой и с ОК. Сразу говорю что в ассемблере полный ноль но кое что сделать получилось. В общем все показывает правильно только одно но при измерении отрицательных температур знак "-" не показывает. Если кому нетрудно может подскажете что не так а лучше ткните носом где именно ошибся...
Ссылка на устройство с оригинальной прошивой тут...
http://eldigi.ru/site/term/2.php

С уважением, Евгений.
Реклама
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт дек 05, 2006 23:17:02
Откуда: Краснодарский край

Сообщение diehard »

Покажи что на что заменил. Гадать можно долго. Для другого индикатора программу можно и не менять, можно ограничиться изменением схемы.
Вообще, если два разряда заработали, смотри подключение неработающего разряда. Сегменты у всех общие (ABCDEFG), т.е. если заработал один разряд, значит заработают все и проблеме только в узле коммутации неработающего разряда. Индикация минуса происходит сегментом G и RA2. Если светится цифра 8 (или любая другая с сегментом G в любом разряде), то надо смотреть цепь от RA2 (DD1 вывод 1).
Реклама
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Чт янв 29, 2009 22:03:18

Сообщение 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' ;Минус
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт дек 05, 2006 23:17:02
Откуда: Краснодарский край

Сообщение diehard »

eygen писал(а): В том то и дело что считаю что в схеме никакаких проблем по тому как этот разряд индикатора показывает реальную температуру в том числе и сегмент G. RA2 показывает старший разряд в том случае когда температура выше -20 градусов тоесть в RA2 показывает "-" в пределах -0.1 до -19.9 то что ниже показывает в разряде RA2 первыую цифру температуры.
Правильно, а как при наличии всего трех разрядов вместить минус при выводе 19.9. Значение "-19.9" занимает _четыре_ разряда.
Процедура преобразования заменена правильно.
Если схема нормально работает с общим анодом, то в прошивку лезть не нужно, а можно поставить транзисторы (например 315) для управления сегментами и разрядами и все заработает с общим катодом. Хотя не понятно, как можно вывести "-19,9" на трехразрядный индикатор???
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Чт янв 29, 2009 22:03:18

Сообщение eygen »

когда температура ниже 19.9 градусов минус и не отображается, да и не особо он нужен оно ведь и так понятно что с минусом температура знак этот нужен как раз когда температура близка к нулю.
на старой прошивке со старым индикатором минус показывало, не понятно почему не хочет показывать минус с моей прошивкой и другим индикатором...
Реклама
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Чт янв 29, 2009 22:03:18

Сообщение eygen »

С транзисторами не хочу заморачиваться уже потому что все готово и что то изменять в схеме это гемор, я все же рассчтывал программно решить задачу... Да и хотелось бы разобраться почему у меня не заработало, пока не загадываю но возможно еще ни раз придется столкнуться с микроконтроллерами посему опыт лишним не будет.
Реклама
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт дек 05, 2006 23:17:02
Откуда: Краснодарский край

Сообщение diehard »

В протеусе пробовал симуляцию пускать, нормально работает?
А вообще, если решил набраться опыта в работе с контроллерами, то возьми и попробуй с нуля написать программу, тем более, что плата для экспериментов уже есть. Опыта будет море! Термометр - это как раз задача для начала изучения контроллеров. Возьми С (си) и вперед! Для пиков с разными библиотеками есть MicroC, CCS.
Если созреешь на самостоятельную работу - готов поделиться компиляторами. Вместо 16f84 можно поставить 16f628 без переделки платы, imho удобнее будет.
За неделю, не больше, с чистого листа напишешь программу. У меня самого первая задача была часы с будильником/календарем/термометром/переходом на летнее-зимнее время. В неделю, не торопясь, уложился. На этом не остановишься, обязательно найдешь применение новым знаниям!
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Чт янв 29, 2009 22:03:18

Сообщение eygen »

diehard писал(а):В протеусе пробовал симуляцию пускать, нормально работает?
А вообще, если решил набраться опыта в работе с контроллерами, то возьми и попробуй с нуля написать программу, тем более, что плата для экспериментов уже есть. Опыта будет море! Термометр - это как раз задача для начала изучения контроллеров. Возьми С (си) и вперед! Для пиков с разными библиотеками есть MicroC, CCS.
Если созреешь на самостоятельную работу - готов поделиться компиляторами. Вместо 16f84 можно поставить 16f628 без переделки платы, imho удобнее будет.
За неделю, не больше, с чистого листа напишешь программу. У меня самого первая задача была часы с будильником/календарем/термометром/переходом на летнее-зимнее время. В неделю, не торопясь, уложился. На этом не остановишься, обязательно найдешь применение новым знаниям!
От части ты конечно прав следующим девайсом на контроллере будут часы с такими же примерно возможностями как у тебя. Обычно слоожно разобраться в чужом коде но так как мне кажется что должно работать то меня это закусило, хочу разобраться из за чего не желает работать. Протеус качнул но еще не запускал, первый раз потому думаю не быстро с ним разберусь.
По часам интересует на чем создавал, тоесть что бы замутить календарь надо хренову тучу счетчиков или специальный контроллер использовал?
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт дек 05, 2006 23:17:02
Откуда: Краснодарский край

Сообщение diehard »

Первые часы делал на DS1302. Он сам переключается на резервное питание, поэтому его и взял. Не надо дополнительно ничего городить для резервного питания. А вообще можно и на контроллере собрать, но тогда прийдется делать с резервное питание на случай отключения сетевого.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»