Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 24.09.2014, 21:08  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
Вопрос PIC16F676 + 2x595

Доброго времени (хотя по погоде не скажешь)!
И снова нарыл себе проблему "неразрешимую"...
Имеем 676 пик и два 595 регистра. На одном - сегменты, на втором - разряды через ключи, индикаторы ОА.
Дык вот: установки, подпрограмма записи в 595 и само "тело", без лирики.
Прерываний нет. В "Протеусе" все красиво и пушисто и работает, в железяке (лежит перед монитором) первая часть да, вторая - нет. И не только такой набор. Попытка записывать в каждый разряд разную инфу - крах. Осцилографом - во время счетных импульсов (вижу все 8, вижу "Lock" импульс), на "данных разрядов" - "1!
Ну честно, уже мозги кипят
В подпрограмме задвигания "T_PORTC" добавил в поисках истины. Эта же "железка" работала и без него.: 1011111 и т.д. в разряды, коды цифр - в сегменты, call "Задвинуть".
На всякий "старая" подпрограмма обработки внешнего прерывания, отображает напряжение АЦП. Прерывания еще не разрешены!
ПА()мА()гИтЕ!
Миниатюры:
Нажмите на изображение для увеличения
Название: 2014_9_24_19_42_53.jpg
Просмотров: 97
Размер:	13.0 Кб
ID:	69801   Нажмите на изображение для увеличения
Название: 2014_9_24_19_42_58.jpg
Просмотров: 263
Размер:	58.3 Кб
ID:	69802  
Вложения:
Тип файла: txt Задвиг.txt (643 байт, 60 просмотров)
Тип файла: txt Установки.txt (353 байт, 31 просмотров)
Тип файла: txt Тело.txt (287 байт, 47 просмотров)
Тип файла: txt Прерывание.txt (3.3 Кб, 46 просмотров)
Реклама:
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 25.09.2014, 03:35  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

Что это вообще за кошмар такой?
Там нужен один MAX7219, который можно найти и в протеусе и засимулировать до смерти.
От вас же требуется просто опустить ногу CS, передать 2 байта по SPI с верхним клоком и поднять ногу CS. Но пока вы даже с публикацией картинки на сайт не справились.
Easyrider83 вне форума  
Непрочитано 25.09.2014, 19:46  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

Если в железе не работает, то вероятно не соблюдены реальные тайминги. Защелкивание данных в регистрах наверно происходит одновременно со сдвигом данных в регистры.
Либо, как было у меня - забыл вход разрешения выходов регистра подцепить к земле, он висел в воздухе и реагировал на наводки от рук, от этого светились все диоды сразу.
И еще может быть проблема в том, что все разряды быстро пробегают цикл от первого до последнего, а потом идет пауза во много раз превышающая время пробегания всех разрядов. Протеус без проблем засветит индикаторы, а свечения реального индикатора при такой скважности видно не будет.

Скрины неразборчивые.

Последний раз редактировалось NewWriter; 25.09.2014 в 20:00.
NewWriter вне форума  
Непрочитано 25.09.2014, 22:49  
3d cube
Гражданин KAZUS.RU
 
Регистрация: 27.11.2012
Адрес: 30км от Софии
Сообщений: 732
Сказал спасибо: 89
Сказали Спасибо 310 раз(а) в 180 сообщении(ях)
3d cube на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

На картинке плохо видно. Если ключи 2803 сие плохая практика. В 2803 паразитные диоды. Ну был случай, летит 2803, вместе ним 595.
Выход: к ключам 4094, сия серия очень редко поводила. Плохо для светодиодов какбудто не подходит. Ток маленький.
В последней оЧень дешовой разработке стоит 595. Но только к индикаторам на 5В. Не более.
3d cube вне форума  
Непрочитано 26.09.2014, 10:05  
petrovich56
Прохожий
 
Регистрация: 12.05.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
petrovich56 на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

попробуй вот так (это из работающей программы)

;************************************************* ***************************************
; вывод знаков через регистры 74НC595 на индикаторы
;************************************************* ***************************************
_digit_out ;п/п вывода данных на индикаторы
clrwdt

movfw digit1 ; вывод 1 - го знака
movwf digit ; данные из регистра в аккумулятор
call _loader ;

clrwdt ;
movfw digit2 ; вывод 2 - го знака
movwf digit ; данные из регистра в аккумулятор
call _loader ;

clrwdt ;

bsf save ;защелкивание данных
nop
nop
bcf save ;

return ;

_loader ;
clrwdt
movfw digit ; данные из регистра ‹digit› в аккумулятор
sublw .11 ;
btfsc STATUS,C ;
goto $+3 ; на перекодировку
movlw .10 ;
movwf digit ; данные из аккумулятор в регистр ‹digit›
movfw digit ; данные из регистра ‹digit› в аккумулятор
call _dig_bin ; на перекодировку

movwf data_temp ; из аккумулятора данные для вывода во временный регистр
movlw .8 ;
movwf cnt ; количество бит в счетчик
_nextbit
clrwdt ;
btfss data_temp,7 ; пересылаемый бит = 0 ?
bcf dig_data ; низкий уровень на вывод
btfsc data_temp,7 ; пересылаемый бит = 1 ?
bsf dig_data ; высокий уровень на вывод
nop
bsf sdvig ; включить стробирующий сигнал
nop
nop
bcf sdvig ; отключить стробирующий сигнал
nop
bcf dig_data ;
rlf data_temp,f ; сдвинуть данные влево
decfsz cnt,f ; уменьшить счетчик бит
goto _nextbit ; если не ноль - повторить
return
petrovich56 вне форума  
Непрочитано 26.09.2014, 19:51  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

А вообщето нерационально использовать вторую 595 для переключения разрядов. Мало того, что нужен тактовый импульс для последовательного сдвига, так еще и тактовый импульс для параллельной передачи на вывод загруженного.
Лучше вместо 595 поставить 164. Тогда можно сдвигать "единицу" одним тактовым сигналом.
А если сделать вот так, то можно вообще один раз запустить "нулем" и потом только тактовые импульсы подавать, "единица" будет по кругу сама двигаться. Если разрядов меньше 8, то отбор сделать от нужного разряда

NewWriter вне форума  
Непрочитано 26.09.2014, 20:12  
anatol378
Почётный гражданин KAZUS.RU
 
Аватар для anatol378
 
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
anatol378 на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

Похоже на ЧМЗ
__________________
Решил посоветовать, да забыл что...
anatol378 вне форума  
Непрочитано 28.09.2014, 19:51  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

Немного подумав пришел к выводу, что экономичнее сделать на двух 595, соединив их последовательно. Тогда можно использовать всего 3 линии управления. Загружаются данные через первую 595 сначала для второй 595 с выбором разряда цифры, затем загружаются данные текущей цифры в первую 595. И после этого идет положительный импульс для обновления информации. Индикатор с ОбщКат, транзисторные сборки в одной ULN2003A.




И это реально работает в железе, без всяких глюков и с первого раза, вот так:





Проект в MPLAB+Proteus с готовой прошивкой и исходниками во вложении ниже. (симуляция с калибровкой внутреннего осциллятора МК не работает. нужно либо отключить калибровку для симуляции, либо по последнему адресу памяти программ вручную прописать значение 3400. иначе симуляция будет крутиться на первых трех строчках).

А вот как раз в симуляции (в отличие от железа) в режиме Run на индикаторе выводится всякая фигня, видимо, анимация индикатора не успевает переключать сегменты. Пробовал разное minimum trigger time ставить - не помогает. Но косяков в коде нету, потому что в пошаговой отладке всё норм переключается и цифры норм, да и в железе без проблем. Наверно для симуляции нужно между переключениями разрядов вообще гасить разряд.
PS. А, понял, почему косяк с симуляцией. ULN2003 виновата. Если убрать ее и поставить просто инвертер, то сразу норм получается.

Для индикатора с ОА, то нужно инвертировать коды цифр, поправив таблицу. Если зажигание разрядов управляется "нулем", то нужно тоже в коде поменять местами "1" и "0".
Если нужно больше разрядов, то в заголовочном файле в строчке constant NumDigits = b'00001000' сдвигаем "единицу" левее.
Задержка переключения разрядов сделана на TMR0 без прерываний, просто по контролю флага переполнения. Нужны прерывания? Без проблем, вставляем весь текст в прерывания. Время выполнения чисто самого текста - 252-256 мкс при 4 МГц внурненней. Можно ускорить время выполнения за счет расхода регистров памяти.

Сообщение от 3d cube Посмотреть сообщение
Если ключи 2803 сие плохая практика. В 2803 паразитные диоды. Ну был случай, летит 2803, вместе ним 595.
И часто ли диоды эти горят? А если поставить ULN2001A (ULN2801) без внутренних резисторов и перед входами поставить внешние резисторы, то всё норм по защите будет.
Вложения:
Тип файла: zip Test7SegLed.zip (137.7 Кб, 46 просмотров)

Последний раз редактировалось NewWriter; 28.09.2014 в 20:35.
NewWriter вне форума  
Непрочитано 28.09.2014, 23:49  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

Оживленная реакция, спасибо!
... когда сделал вывод на индикацию с интервалом 1 импульс в пол секунды, заметил некую закономерность, до боли знакомую...
Так и получилось: выводы Clock и Lock в Протеусе/программе поменяны наоборот в железе. "Красивый" эффект получился и не слабая головная боль.
А по железу:
- две 595 потому как выводов не хватает;
- параллельная запись, дабы "быстрее" из обработки прерывания выйти;
- ключи BC850 или ВС860, смотря для какого индикатора, в моем случае ОА - 860.
- за советы по "какое железо лучше применять" спасибо, но это вариант "из того, что было.
Всем спасибо, тема закрыта!
Это есть то, что работает:
ZADVIG MOVLF 0X08,CYKL_INT ; Задвигаем в регистр
ZAD_0 BTFSS T_INT_S,0x00 ;
BCF PORTC,0x05 ;
BTFSC T_INT_S,0x00 ;
BSF PORTC,0x05 ;
BTFSS T_INT_R,0x00 ;
BCF PORTC,0x02 ;
BTFSC T_INT_R,0x00 ;
BSF PORTC,0x02 ;
RRF T_INT_S,F ;
RRF T_INT_R,F ;
BSF PORTC,0x04 ;
BCF PORTC,0x04
DECFSZ CYKL_INT,F ; по окончанию
GOTO ZAD_0 ; формирую импульс "засветки"
BSF PORTC,0x03 ;
BCF PORTC,0x03
RETURN ; вернусь
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 08.01.2015, 08:46  
Nick19
Временная регистрация
 
Аватар для Nick19
 
Регистрация: 26.10.2008
Адрес: москва
Сообщений: 92
Сказал спасибо: 15
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
Nick19 на пути к лучшему
По умолчанию Re: PIC16F676 + 2x595

Да ужж... Программа разбита на 4 файла, жесть, в одном файле 4 строчки неисполняемого в MPLAB кода, после того как закомментировал эти строчки программа пошла, но только по шагам, правильно отображаются цифры. Значит с таймингами где-то накосячил. Общее впечатление, проект сырой. Я б у себя не стал такой проэкт применять, хотя у меня тоже 16F676 и не хватает ног. Но я по другому выхожу из положения. 74ALS164 + 74ALS138.
Миниатюры:
Нажмите на изображение для увеличения
Название: 07.33.09.jpg
Просмотров: 70
Размер:	452.6 Кб
ID:	74277   Нажмите на изображение для увеличения
Название: 07.46.05.jpg
Просмотров: 68
Размер:	496.6 Кб
ID:	74278  
Nick19 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реле давления на pic16f676 и насосная станция Dtolok Микроконтроллеры, АЦП, память и т.д 44 20.01.2016 14:49
PIC16F676 не зашивается VeroMax Микроконтроллеры, АЦП, память и т.д 12 24.12.2011 01:49
Проблема связи pic16f676 и LCD xxparadoxx Микроконтроллеры, АЦП, память и т.д 5 28.12.2010 14:29
PIC16F676 как прошивать с помощью WILLEM ribak01 Микроконтроллеры, АЦП, память и т.д 1 16.08.2007 00:53


Часовой пояс GMT +4, время: 16:26.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot