Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: PIC10F200 - конфигурирование чипа.

Сб дек 01, 2018 12:06:30

Реально :)
Яценков В.С. - Микроконтроллеры Microchip. Практическое руководство - 2002, страница 243
https://sunduk.radiokot.ru/loadfile/?loa ... 75&turbo=1

Re: PIC10F200 - конфигурирование чипа.

Вс дек 02, 2018 08:51:23

Однако...
Для сенсорной кнопы... специализированный товар от китая-братьев гораздо удобнее
http://img.radiokot.ru/files/20529/1mkbqcj7fc.jpg
TTP223_proto.pdf
(214.17 KiB) Скачиваний: 230

а уж с выхода той платки (соответственно сконфигурированной капельками припоя по управляющим контактам) на МК готовый сигнал подаем...
:roll:

Re: PIC10F200 - конфигурирование чипа.

Вт дек 11, 2018 21:12:43

уж тогда проще полевик "навесить",коих у меня 100-я лежит....платки-нужно "тянуть" с Китая...а это и время и деньги.
"al.kame"....благодарю,посмотрю намедни что там пишут в книжке.

Re: PIC10F200 - конфигурирование чипа.

Пт мар 15, 2019 21:18:27

Опять я с этими МК.....
Вопрос такой....как реализовать на них счет с выводом "логики" на ножки(включение порта)?

подробнее...имеем встроенный тактовый генератор на 4МГц и скорость выполнения команд с "частотой" 1МГц....смысл такой....на вход GP3 подается некая образцовая частота,кратная внутреннему тактовому генератору(к примеру 20кГц).....далее смысл такой....если значение частоты отличается от установленного (програмно) значения например на 5Гц больше(20.005 герц)-то включается вывод GP0.....если частота на 5Гц меньше(19.995 герц)-то включается вывод GP1.......пересчет-не важен....хоть со скоростью 10 раз в секунду....хоть 5 раз в секунду....не принципиально.

И еще такой вопрос....можно-ли в "теле" цикла программы счета реализовать другую последовательность....что-бы при превышении значения частоты на входе по сравнению с "образцовой" например на 10Гц(19.990-20.010 герц)-включать вывод порта GP2?

Как составить подобный алгоритм?

хотя-бы кусок кода с пояснениями......как всегда-на ассемблере....кто возьмется помочь?

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 08:43:51

Такой в 200-ку ВРЯД-ЛИ ВЛЕЗЕТ.
Даже под ассемблером.
Другое дело при полноценном 16 разрядном аппаратном счетчике (или на ... 8-разрядном но условия сравнения подгонять под возможности аппаратной части МК).
Но тогда надо считать возможность согласно характеристик входного сигнала и внутренних ресурсов МК.
В том числе и соотношение внутренней сетки частот с контрольным сигналом и кратность их различий для выходной индикации.
А в МК ВСЕГО-ТО 256 байт, один 8-разрядный таймер и 16 байт ОЗУ при двух уровнях стека(т.е. только одна подпрограмма возможна ежли хоть единственное прерывание используется).
Да и синхронизировать окно с фронтом входного сигнала придется - иначе потеря в 1 период входного сигнала. Это также ресурс кушает.
:roll:

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 15:20:14

ну,так одна программа и будет выполнятся.....две-то зачем?
или подсчет числа импульсов на входе и сравнение с "базой" всегда одновременно две "программы" должны "тикать"?.....типо одна отсчитывает время(за которое должен произойти расчет("минусование") от "базы") а вторая-производит этот самый расчет(уменьшает каждый так значения байта на 1)...так работает счет?
а по другому,одним "счетчиком" данную процедуру не реализовать?

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 16:26:17

Увы, 10Ф200 даже прерываний не имеет. И таймер там только один. К чему этот мазохизм?

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 16:28:00

Допустим у нас периодомер/частотомер.
Накопительный счетчик с цепью генерирующей окно счета.
При том, что таймер в 200м НЕ ГЕНЕРИРУЕТ ПРЕРЫВАНИЯ ПО ПЕРЕПОЛНЕНИЮ.
А для "линейного" алгоритма всего 256 байт программы.
И условие - на более двух вызовов подпрограмм (вероятность сокращения длины кода).
Гарантировать успешное создание программы периодомера с произвольно задаваемой точностью в таких условиях весьма проблематично.
8)
КРАМ
мал я припоздал... пока кнопы нажимал...
:?
Когда-то делался счетчик листочков с подгонкой под конкретный привод и "рамки сортировки" - там таки подсчет переполнений с последующим сравнением их количества.
:write:

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 17:38:53

Хорошо....но если тогда считать импульсы по другому...не используя таймер....например....приходит передний фронт и начинается "плюсование" единичек в регистр....длительность фронта(для частоты 20кГц)-25 микросекунд.....т.е. в течении этих 25 микросекунд каждую микросекунду прибавляется в регистр 1....итого за один такт их там наберется...эм...наверное 24....или 23...смотря сколько времени нужно на переход.
затем импульс пропадает(низкий уровень) и на протяжении вторых 25 микросекунд идет сравнение "образцового" регистра с счетным регистром....ну допустим за 25 микросекунд не уложимся...бог с ним...берем еще 50 микросекунд(пропускаем каждый второй импульс для подсчета и половину от первого(на вход приходит синус 20кГц) который через компаратор превращается в меандр 20кГц с 50% заполнением....это все-отдельное устройство....на счетный вход приходит только импульс с 50% заполнением и частотой повторения 20кГц)....итого-75 микросекунд времени-что-бы сравнить и если не соответствие на 1 единицу в "плюс"-открываем один порт,если в "минус-открываем второй порт....если не соответствие(в плюс или минус) в 2 единицы-то открываем и третий порт.....все оставляем как есть(открытые порты) и идем считать третий фронт(второй-то мы пропустили).....если в результате "подсчета голосов" что-то меняется-закрываем порты в соответствии с алгоритмом.....и т.д.

Ведь так-реально-же считать?....и без таймера....просто выполняя одну цепочку пересчета и одну временную ячейку?....да,получается проблема с дискретностью....к примеру импульс в 20кГц унас обрабатывантся с дискретизацией в допустим 20 единиц...т.е. порт "откроется/закроется" только при изменении входной частоты на 1кГц как минимум.....что,конечно,явно многовато....но ведь можно производить подсчет не с одного импульса....а скажем с 10....т.е. есть основной цикл,замкнутый по кругу....подсчет входных импульсов....в теле этого цикла-уже идет пересчет,пауза и сравнение....тогда можно увеличить дискретизацию в 10 раз....а "опрос изменения частоты"-уменьшить в 10 раз....и все равно он будет оставаться более высоким,чем нужно.

дискретизацию можно свести до размера 256 единиц....и тогда изменение от пересчета будет менее 100Гц...что уже,в принципе..не смертельно.

Как вам такая реализация идеи....и 256 строчек кода-я думаю,легко хватит для ее?

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 17:42:54

Хорошо....но если тогда считать импульсы по другому...не используя таймер....например....приходит передний фронт и начинается "плюсование" единичек в регистр

Так можно. Но скорость такого "плюсования" будет весьма маленькой. Ибо является программным опросом, а точность крайне низкой, поскольку частота опроса и будет частотой измерительного заполнения (измерительным интервалом). А цикл опроса неравноплечный, поскольку имеет условие перехода.
Так не делают. Даже опрос нужно проводить по таймеру. Он только один. Восьмибитный.

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 17:53:12

не,так я таймер-то и не использую вообще.....
Если его использовать-тогда все намного проще должно получится....я так думаю.

почему цикл не равноплечный?.....ведь импульсы плюсуются за один и тот-же временной промежуток.....ну в смысле длительность промежутка разная именно она и задает количество импульсов....а на пересчет и сравнение-отводится совершенно сторонний временной интервал...с таким расчетом,что-бы спокойно все обработать и "включить" паузу до прихода нового счетного фронта....и пауза эта-максимум 24 машинных циклов,а минимум-1....я так думаю в этот промежуток в 23 цикла можно "вщемить" любой "пересчет" резкого изменения входной частоты(тем более,по начальным условиям она будет меняться не более чем на 500Гц....это предел.....реально-же-около 200Гц).

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 18:20:26

почему цикл не равноплечный?

Патамушта есть УСЛОВИЕ проверки пина, причем с определением ОДНОГО фронта (например восходящего). А кроме того, нужно суммировать в переменную, которая длиннее одного байта, а это означает перенос по условию переполнения.

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 19:02:36

Блиин....да почему она длинее 1 байта??....я как раз и хочу "вщемить" в 1 байте....что-бы не лезть во второй регистр.....дискретности-хватит.....на крайняк готов снизить частоту до 10кГц....это эквивалентно повышению дискретности измерения в 2 раза....так как изменения частоты-остаются прежними....они-КОНСТАНТА....которую нужно просто считать(узнавать в какой момент времени она начинает меняться и корректировать ее) и дергать пинами МК.

А как-же тогда вообще МК считают импульсы....если с ваших слов,куда не ткнись в этом лабиринте-всюду тупик?
вот не будем далеко ходить....счетчики импульсов....ведь они-же существуют?....и считают!....и даже успевают отображать значение переводя его в мнемонику....да что там считать....они даже успевают делать все это аж 20 раз в секунду.

Что-то с каждым новым сообщением вы все больше и больше меня "зарываете".....да,реализация не стандартная,да трудно реализуемая....но если-бы все было просто-я не просил-бы помощи,вы так не считаете?
может по этому я и обратился на форум?

Эх....что-то одна печаль,люди,вместо того,что-бы хотя-бы показать нужное направление пути начинают рисовать ужасающие картины,что ожидает меня,если я пойду по этому пути....зачем?...я и так знаю что дорога в калючках и острых камнях,я знаю что собью ноги.

если-бы я хотел мягко ехать,то взял-бы карету,шелковые тапочки и дорогу покрытую асфальтом....и да,это....дорога не шла-бы в гору....просто по равнине.
но разве в этом случае-я смогу чему-то научится?......кроме как зевать мирно посопывая и теребя пальцами ног эти самые мягкие тапочки?

Re: PIC10F200 - конфигурирование чипа.

Сб мар 16, 2019 22:18:55

Мы не пужаем, а объясняем почему задача "сортировки интервала" в 200 пике будет себя чувствовать весьма неуютно.
Без работы с таймером в подобной задаче не обойтись.
А в чем считать будем - от длины такотвых деленых на N предделителя до условных енотов - это уже как удобнее сортировку делать.
Сам алгоритм простой, но без железа и соответствующих ограничений его применить не получится.
Разве что на другом пике - хотя бы на 12F629(675) или 12F508.
:beer:
Сортировщик листочков с самокалибровкой и суммарной памятью у мня правда на АТ89С2051 был...
Но суть алгоритма не меняется и для сортировки интервалов при условии, что их длительность в 1000 раз больше длительности счетных импульсов. Хотя... предпочтение таки подсчету переполнений, подогнанных как доли максимально длительного измеряемого импульса.
Но то уже какие требования к точности и быстродействию.
8)

Re: PIC10F200 - конфигурирование чипа.

Вс мар 17, 2019 04:54:31

А как-же тогда вообще МК считают импульсы....если с ваших слов,куда не ткнись в этом лабиринте-всюду тупик?

Ну давайте попробуем решить задачу.
Итак.
Имеем таймер 8 бит с предделителем 7 бит и с возможностью счета как частоты машинных циклов, так и внешних импульсов. Но остановить таймер невозможно.
Частота машинных циклов - 1 МГц.
Есть еще таймер вачдога с минимальным интервалом примерно 18 мс и 8 битным прескалером.
Если напрячь всю эту небывалую мощь, то можно вачдогом задать интервал счета, а таймером считать входные импульсы.
64*18 мс=1,152 с и 100 мкс (10 кГц). Получаем для 10 кГц счет до 11520. То есть два байта. Если предделитель вачдога поставить 32, то та же константа даст 20 кГц.
Алгоритм прост как две копейки. При старте контроллера проверяем причину сброса в STATUS - если ресет был по питанию, то инициализируем МК и переменные, а если по вачдогу, то производим расчет, сравнение и повторную инициализацию тех регистров, которые ресетятся при сбросе.
В самой программе просто считаем переполнения таймера в старшем байте счета. При расчете читаем таймер в первую очередь в буферный байт в ОЗУ - это будет младшим байтом результата. Сам таймер немедленно сбрасываем для следующего цикла счета. Так же немедленно восстанавливаем предделитель вачдога на требуемое значение. Сравниваем 2 байта результата с 2 байтами константы - получаем искомое.
Так реализовать задачу можно. Правда придется вручную калибровать под пороговую частоту в коде.
Учтите, что прескалер вачдога и прескалер таймера - это один и тот же прескалер. Либо одному, либо другому...
Удачи... :tea:
ЗЫ. Причем тут обучение, если я решил задачу за Вас? :wink: :)))

Re: PIC10F200 - конфигурирование чипа.

Вс мар 17, 2019 08:53:36

Только вот... прескалер у Т0 и собаки ... общий - не может одновременно и там и там использоваться...
был бы Т1 и собака - тогда другое дело.
:(
Посему городушка при таких жестких условиях ... весьма проблематична.
Больше подходит таймер со счетом внутренних тиков и внешней лапкой запуска/останова счета.
С последующей оценкой количества переполнений таймера.
:roll:

Re: PIC10F200 - конфигурирование чипа.

Вс мар 17, 2019 09:11:29

А зачем прескалер использовать с таймером? В предложенном мной алгоритме нет места для прескалера таймера. В этом МК таймер 0 имеет вход внешнего счета. Это возмещает отсутствие таймера 1.

Re: PIC10F200 - конфигурирование чипа.

Вс мар 17, 2019 10:11:50

Задача нерешаема при использовании внутреннего генератора. Его стабильность недостаточна.
При использовании внешнего стабильного (кварцевого) генератора легко решается путем сравнения состояния порта во времени. (На один вход образцовая частота, на другой исследуемая). Какой вывод первый поменяет состояние на инверсное у того частота и выше, замер по двум - трем изменениям. Можно измерить отклонении в 1 Гц.

Re: PIC10F200 - конфигурирование чипа.

Вс мар 17, 2019 10:18:41

КРАМ
Так по условию у нас более актуален измеритель длительности... (20 Гц +/- отклонение).
Т.е. измерительное окно формирует входной сигнал, а счетные импульсы внутренний генератор.
Посему чего-то должно сканировать вывод входного сигнала (поскольку прерываний от лапки у 200 нету).
Можно на программных циклах построить, но тогда скан вывода и переходы заметно снизят разрешающую способность.
При таком подходе контроль каждого периода и соответствующее быстродействие.
8)
Можно конечно и частотомер - но тогда интервал контроля будет значительно больше.
Плюсом идет некоторое усреднение...
Вот тогда счетные импульсы на вход таймера, а сформированным внутренней сеткой частот интервалом формируем счетное окно,
в N h\раз большее по длительности, чем период измеряемого интервала.
Как опцион - не требуется контроль входной лапки по прерыванию - просто скармливаем входной сигнал на вход счетчика.
Точность без контроля содержимого таймера хотя бы прерыванием по переполнению есть...
МНДЯАА...
Ну и собака-то не калибрована - она ж на своем R-C генераторе тикает, точность которого не суть важна для функционала собаки,
но уж никак не частотомера с ХОТЕЛКОЙ в минимум два знака за запятой...
:(
anatol378
Ваш метод хорош при синхронизации фронтов и одиночном импульсе.
Только вот на практике сигналы асинхронны - следовательно начало измеряемого импульса может также смещаться относительно начала калибровочного. Соответственно и результат "кто длиннее/короче" будет не совсем верным.
8)

Re: PIC10F200 - конфигурирование чипа.

Вс мар 17, 2019 11:15:50

BOB51 вы не "въехали". Фронты абсолютно не принципиальны. Пусть в при первом чтении порта будет состояние входов 0-1 (0-0 или 1-0). Пишем в память. Следующее чтение не изменилось - возврат к чтению порта, изменилось - анализ что изменилось - пишем в память первый результат и возврат к чтению порта, следующее изменение - сравниваем результат с результатом в памяти - совпадает, выводим в порт и так по кругу.
Получится один неполный период разности частот даст результат. Добавив накопление результата - загрубим точность до N периодов (Гц)
Ответить