А, что-то я не доглядел... переключение разряда происходит до того как зажгутся сегменты, или после? а предыдущие при этом гасятся? Нужен ведь алгоритм когда сегменты сначала гасятся потом переключается разряд, и только после переключения или одновременно с ним засветить сегменты, иначе будет наблюдаться еле заметный но неприятный след. наверно это все же учтено?
а на 595х этого и не произойдет - смена данных проводится одновременно со сменой позиции (сигнал перезаписи кода из накопителя в выходной регистр он же тактовый для позиционного счетчика/дешифратора) хоша ... я б в той схемка еще кой-чего добавил для абсолютной точности выдачи данных...
Уважаемые коты, все таки по какой схеме мне лучше собирать??? Конечно, хочется, чтобы все по уму и на совесть было, но опять дилемма: 74HC595 я уже прикупил, могу и на них, только вот с прошивкой как быть? сам я не справлюсь... Alexeyslav предложил свой вариант с исходником, который только чуть подправить надо, а оказалось - это садомазохизм...
BOB51 писал(а):
хоша ... я б в той схемка еще кой-чего добавил для абсолютной точности выдачи данных...
Ну так и мою схему/исходник переделать под 595 можно. надо просто часть где идет вывод на два регистра переделать под последовательную выдачу данных в регистр. ну там цикл на 8 бит, сдвиг вывод в порт и импульс сдвига для регистра...
это вобщем-то несложно. даже без применения циклов, только длинно получится.
; BCF STATUS,RP0 ;Выбор банка 0 MOVWF COL_DAT ;Выводимые данные сохраним для дальнейших действий MOVWF COL_DAT2 ;Сохранить хначение чтобы можно было временно погасить индикатор.
а надо было изначально программу делить на хотя-бы два независимых фрагмента - отдельно обработчик дисплея/кнопок( входной код с контактов/датчиков), включая туда и выдачу управляющих внешними нагрузками сигналов, и собственно программу обработчика данных частотомера иначе "накладок" не избежать - в схеме как минимум два независимых тайм - интервала - один для обслуживания интерфейса пользователя (ввод/вывод), а второй для формирования измерительного окна скорее всего при едином генераторе квантов времени эти программки взаимозавязаны потянеш один шнурочек... уж легче все заново нарисовать и запрограммировать допустим такое : хотим - частотомер...?? а чего он мерять то должен? период, частота(гц, кгц, мгц, длительность) =? амплитуда входного сигнала =? диапазон измерений =? форма представления информации =? необходимость в дополнительных сервисных функциях =? имеем в наличии следующие детали микроконтроллеры =? рассыпуха =? индикаторы =? (жки, светодиоды тип/схемы подключения/характеристики) куда запихнем? параметры внешнего вида(исполнения) устройства =? (корпус/встраиваемый допустимые габариты) проработаем возможности и удобство имеющихся в наличии МК для нашего мыша вот после анализа всего этого сообразючим схемку затем список чего прикупить анализ рынка деталюшек скорректируем схемку после ЖАБЫ ЗЕЛЕНОI собрали детальки в коробушку набросаем печатку изготовим платку и соберем макет приступим к "правке мозгов" для МК наконеч зальём программу и... приступим к устранению ошибок в программе и схемке ежли интересно- могу позлодействовать, но только в пределах вышеизложенного
Ну так и мою схему/исходник переделать под 595 можно. надо просто часть где идет вывод на два регистра переделать под последовательную выдачу данных в регистр. ну там цикл на 8 бит, сдвиг вывод в порт и импульс сдвига для регистра...
Хорошо, приму к сведению. Думаю в итоге должно получиться нечто среднее...
BOB51 писал(а):
ежли интересно- могу позлодействовать, но только в пределах вышеизложенного
Конечно интересно
BOB51 писал(а):
уж легче все заново нарисовать и запрограммировать
Кому как...
BOB51 писал(а):
хотим - частотомер...?? а чего он мерять то должен? период, частота(гц, кгц, мгц, длительность) =? диапазон измерений =? форма представления информации =?
Частотомер. Конечно измерение только частоты за глаза хатит, период ведь в одно действие рассчитывается. Но если индикацию периода не сложно реализовать то в принципе я не против... диапазон измерений: 10Гц - 999мГц (хотя возможно я погорячился... думаю если делить на 640 точности до 10Гц не добиться) форма представления информации: 8 разрядов, измерение в кГц, с двумя знакми после десятичной точки. К примеру максимальное отображаемое значение должно быть: 999 999,99 кГц
BOB51 писал(а):
амплитуда входного сигнала =?
Об этом я не здумывался...
BOB51 писал(а):
необходимость в дополнительных сервисных функциях =?
Это какие к например?
BOB51 писал(а):
имеем в наличии следующие детали...
Микроконтроллеры: PIC16F628a, ATTiny2313 (как в DIP, так и в SOIC корпусе) и ATmega8. Сам я склоняюсь к PIC16F628a, т.к. у мя имеется к ним программатор EXTRA-PIC и хоть не большой но успешный опыт работы. Для AVR у мя только проггер Altera Byte Blaster и опыт работы в пределах обучалки с нашего прекрасного сайта, но в принципе, если потребуется я могу осилить и их.
Рассыпуха: 74HC595, 1533ИР8 (как аналог 74xx164 в схеме МитяРы), буферы 74HC244 и 74HC245 по 1шт., делитель на 640 193ПЦ1 с потолком до 1ГГц, многое другое из 155, 555, 176 и 561-х серий... Вообще в моем городе Кургане без проблем можно купить отечественные микры почти любой марки, а вот с буржуйскими гораздо сложнее... только заказом по почте.
Индикаторы светодиодные по 4 разряда каждый. Марки KINGBRIGHT CA56-12GWA / CC56-12SRWA по неск.штук.
BOB51 писал(а):
куда запихнем? параметры внешнего вида(исполнения) устройства =? (корпус/встраиваемый допустимые габариты)
Это уже вторично. Было бы устройство, а корпус под него найдется. В крайнем случае, можно вообще без него обойтись. Что касается размеров, то они определяются размером индикаторов: два в ряд 105мм в ширину будут.
набросаем печатку изготовим платку и соберем макет приступим к "правке мозгов" для МК
Ага, и на этом последнем этапе как правило оказывается что контроллер не тянет задачу с такой схемотехникой... поэтому, этот этап лучше пройти несколько ранее, уж точно до изготовления платы.
а кто сказал, что на этом все закончится? да и насчет "тянет/нетянет" - всегда изначально думать надо - задолго до схемки (не говоря уже про печатку и монтаж)
Начнем с несколько «отвлеченных» вопросов – а что собственно говоря мы можем измерить? Первый вариант – из внутренней тактовой частоты формируется измерительный интервал, за время действия которого подсчитываются входные импульсы неизвестной частоты. Второй вариант – внутренний тактовый генератор формирует импульсы с эталонной длительностью, а период внешнего сигнала формирует измерительный интервал. Пока будем считать, что внешний сигнал представлен «идеальными» импульсами ТТЛ-уровня… В обеих случаях для формирования тактовых импульсов микроконтроллера потребуется хотя-бы обычный кварцевый резонатор (чем выше частота- тем лучше). ATTiny2313 допускает работу с кварцем 20МГц с формированием внутренних тактовых импульсов с той же частотой и выполнением одной команды за 1 ТИ. PIC16F628 допускает работу с кварцем 20МГц и формированием внутренних ТИ на этой же частоте, однако… для исполнения одной команды требуется 4 ТИ и такой же длительности будет «эталон» подаваемый на вход таймер/счетчиков. В результате имеем минимальную длительность эталонных интервалов : Тинька – 50ns, пик -200ns т.е. они уж никак без внешних пердделителей не разберутся с подсчетом интервалов меньше собственных ТИ (это же и минимальная погрешность измерительного окна) … мня… 20МГц/5МГц и не более (а скорее и того меньше учитывая реакцию на прерывание, всяческие дополнительные задержки и прочие пакости)… Так что даже «влоб» та схемка больше чем 20000000Гц (2000,00КГц)обслужить не в состоянии . Но вроде там есть предделители перед счетныим входами? Посмотрим… у аврки - …упс… а он только внутренний эталон удлинить может…а для счета с внешнего входа действует формула Fclk_io/2,5 = 50ns*2,5=125ns… всего-то 8МГц… А чего там у пика?... предделитель на максимум 8 … вроде уже интереснее, там еще асинхронный вход счетных импульсов… ИК … а вот вам(нам) фигура17-8 с табличкой 17-8 (DS40044G-page 147-148) для разнообразия… навскидку в наилучшем режиме период входного сигнала 30+60ns=90ns (11111111,11Гц) т.е теоретически (* These parameters are characterized but not tested. ) 11111КГц еще нацарапать можно… И НЕ ВЫШЕ… Остальное можно получить с применением внешних управляемых предделителей, либо другими «хитрыми» способами (а-ля измерение промежуточных частот…) мож я чего "усклерозил"?
в ПИКе предделитель 8 бит, так что нормально там и 20Мгц померять.
точность это дело такое, и время реакции на прерывание можно подобрать, верней высчитать подсчет интервала, таким образом чтобы значение счетчика в итоге зафиксировалось в строго нужный момент.
Насчет тактов... это не совсем верно, Atmel выполняет каждую команду за 2 такта - префетч и исполнение, но за счет конвеера префетч следующей команды выполняется с исполнением текущей - за счет этого в линейном коде достигается скорость выполнения 1 инструкция за такт.
В ПИК- контроллере, выполнение каждой инструкции происходит в 4 фазы, но имеется та же схема конвеера - 4 фазы выборки и 4 фазы выполнения параллельно с выборкой следующей инструкции - в итоге линейная скорость выполнения кода 1 инструкция за 4 такта.
Но интересное начинается когда используется условный переход... при этом конвеер перестает приносить пользу и игнорируется, а на выполнения инструкции условного перехода уходит целых 2(иногда 3) такта и 2 такта на выполнение первой инструкции сразу после перехода.
В некоторых случаях, из-за особенности системы команд некоторый алгоритм на PIC может выполнятся с такой же скоростью как и у Атмела. Так что сравнивать быстродействие только лишь по тактовой частоте тут очень непросто.
ребятки-котятки читайте формулы из даташита! там ясно указано какие максимально допустимые парамеры входного сигнала для входа таймер-счетчика - сигнал меньшей длительности (более высокой частоты) просто не будет восприниматься по входу, а внутренний предделитель лиш поделит то, что пришло на вход...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения