NebsteR

Pic. Общие Вопросы

504 сообщения в этой теме

ALEKS1102X    1

Извините ещё раз, вчера жена всё торопила за покупками поэтому и в СИ и в АСМ набросал кучу ошибок:

Конечно для BCD нужно использовать не одноразовую функцию "if", а "while"

А здесь "if (C = 1)" должно быть "if (C == 1)",

ну и наконец - если дизасемблировать строку выше, то там естественно будет:

MOVLW        1            ;

ADDWF         XX,W    ;

и так далее... Потому что если делать через "INCF"  то бит "С" не установится, и далее смысл команды теряется...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 332

 

19 часов назад, ALEKS1102X сказал:

поверьте - преобразование для PIC18 с 8 МИПС пару мкс., и вот у меня в руках функция "BCD" которая даже если написана для PIC18 - с лёгкостью проглатывается и для пик10 - 16, т.е код типа:

басни не рассказывай

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ALEKS1102X    1
В 17.09.2017 в 09:19, IMXO сказал:

 

басни не рассказывай

 

 

Добрый день конфе! извините что долго не отвечал, сейчас просто решается вопрос с Али, где вроде нужно доплатить 4,9 $, и мне отправят другую партию из 10 PIC18F46K22... Ну что - я рискну, тем более что старыё (перемаркированные PIC18F46K20) я так понял - останутся мне в нагрузку.

А по поводу того что писал раньше - гляньте архивчик, набросал по быструхе - да, если переводить число 9999, то при частоте 8 Мипс для PIC18 это займёт 57 мкс., Но ведь это максимальное значение, и на индикатор если оно и будет выводиться - то в очень крайних и редких случаях. Давайте возьмём среднее значение - 5.000. Вот такое значение будет конвертироваться за 23 мкс.

А теперь давайте глянем там-же, в архиве) как это будет делаться с помощью функции "Dec2Bcd16(X)" - в общем, если запускать в Микро СИ, то мой код выполняется за 188 мкс (я там не правил конфиг, поэтому работа идёт с 2 Мипс), а функция Dec2Bcd16(X) выполняется за 77х (780) мкс, т.е.  по сути в 4,5 раза больше времени. Причём я сравниваю с макс. результатом: если в своём коде я буду перекодировать число 155, к примеру, то оно действительно займёт пару мкс, а в функции BCD оно так и останется - 780 мкс.

Если Вы это имели ввиду ( 2мкс и 23 мкс), то да - я чууууть Вас обманул.

Теперь по поводу перевода АСм кода из PIC18 в PIC16 - там всего-лишь одна команда не воспринимается корректно - это "SUBWFB" - вычитание с учётом бита Карри, все остальные: BC, BNC, BZ, BRA, и т.д. перевариваются нормально - что я собственно и мел ввиду, мож некорректно написал об этом.

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

Я в архиве сделал две папки - для Пик 16 и 18 - там увидите один и тот-же код для 16 и 18 серии, а ещё всё-таки проверил по новому - как простую функцию, инкремента четырёхбайтного числа производит Микро Си и ХС 8... Да..., те кто писали эти компиляторы однозначно в разных дурках нычкуются - вместо просящегося кода:

     MOVLW      1          ; 
     ADDWF      _dcab,F    ;
     BTFSC      STATUS,C   ;
     ADDWF   _dcab+1,F  ;
     BTFSC      STATUS,C   ;
     ADDWF   _dcab+2,F  ;
     BTFSC      STATUS,C   ;
     ADDWF     _dcab+3,F  ;

там.... Да короче сами увидите, чего повторно писать буду.!!!

Ну и последнее: Я ни в коей мере не хочу обидеть никого, и уж тем более развести новых халивар. Я просто делюсь мыслями... Вот к примеру - все говорят - что на Си проще писать - да одинаково писать - если не знаешь сам камень - то хоть на суахили пиши - ты его даже не проинициализируешь. И такая-же картина если переводить код с одного камня на другой - пока не будет инициализации камня, остальной код можно засунуть сзади и поглубже.

Но что меня привлекает в АСМ - это то что ты сам пишешь что знаешь,  и что хочешь получить на выхлопе, а не пользуешься чужими макросами. Вот сейчас многие чего-то там пишут под USB - а чего пишут по сути сами не знают! И могу гарантировать что 90 % этих написателей даже не знают что там и как в таблице Fat32, я уже не говорю про NTFSC...

Ну и правильно - а зачем - будет получиться глюконат - на китаяйцев спишем - нам что главное - запустилось, вроде работает - ну и пошли все в (|) - ну короче туда...

А потом: Ема-ё писал вроде простую вещь - всего один АЦП вход определяющий протечку (памперс), ну добавил ещё звоночек играющий мелодию _ А АРМ32 НЕ ХВАТАЕТ - ЧЕГО ТАМ ПРОИЗВОДИТЕЛИ Д*ОЧАТ - НУЖНО БЫ БЫЛО УЖЕ АРМ 9932 ВЫПУСТИТЬ...

СИ++ АСМ--.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 332
1 час назад, ALEKS1102X сказал:

ещё всё-таки проверил по новому - как простую функцию, инкремента четырёхбайтного числа производит Микро Си и ХС 8..

1. Микрос сделал все правильно , оставив атомарный доступ к dcab , вы же не указывали, что она доступна только в main, она описана глобально...

2. а вот у вас Ашибко, команда  INCF  бит CARRY  не изменяет

3. восьмой хусым тоже сделал все правильно! создал атомарный доступ и к значению dcab прибавил 1 и занес полученный результат в dcab, что вы от него и требовали , команды dcab=dcab+1 и dcab++ это разные команды,  также как и команды dcab++ и ++dcab

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ALEKS1102X    1

 1. Я такой-же доступ предоставил и хусымы... не ?

2. Ашибко я исправил в сообщении, архив лень было потрошить ... не ?

3. Если хусыме подсовываешь команду "x++", то он вообще ересь каку-та несёт, я сильно не разбирался, но Вы как знающий поправьте...

     3.1 Разницу между х++ и ++х я знаю...

4. Напишите мне на СИ так чтобы мне чётко нарисовало то что я хочу получить на АСМ для Микроса и Хусейна. А не нарисуете - потому как не Вы написатель этих       макросов...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 332

1. ну так в чем возмущения? еще раз если не доходит, dcab=dcab+1 и dcab++ это разные команды! поэтому и результат микроса и хусыма разный
4. легко,
 

Скрытый текст

 


2:                 
3:                 __CONFIG (RC & WDTDIS & PWRTDIS & UNPROTECT);
4:                 
5:                 void main (void)
6:                 { unsigned long decb=0;
7:                 
8:                 
9:                 while(1)
   3FF    2BF6     GOTO 0x3f6
10:                 {
11:                   NOP();	 
   3F6    0000     NOP
12:                   decb++;
   3F7    0A8C     INCF 0xc, F
   3F8    1903     BTFSC 0x3, 0x2
   3F9    0A8D     INCF 0xd, F
   3FA    1903     BTFSC 0x3, 0x2
   3FB    0A8E     INCF 0xe, F
   3FC    1903     BTFSC 0x3, 0x2
   3FD    0A8F     INCF 0xf, F
13:                   NOP();
   3FE    0000     NOP


 

 

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
vksam    14
В 16.09.2017 в 13:27, ALEKS1102X сказал:

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

Какие впечатлительные!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    348
В 23.09.2017 в 14:33, ALEKS1102X сказал:

Но что меня привлекает в АСМ - это то что ты сам пишешь что знаешь,  и что хочешь получить на выхлопе, а не пользуешься чужими макросами. Вот сейчас многие чего-то там пишут под USB - а чего пишут по сути сами не знают! И могу гарантировать что 90 % этих написателей даже не знают что там и как в таблице Fat32, я уже не говорю про NTFSC...

Какая связь между Fat32 и USB  я, откровенно говоря, не понял...

Однако, любезный, писать самому стек USB на АСМе, мягко говоря, трудоемко. Мало того, полученный код будет дико неудобен при его интеграции в проект, поскольку объемен даже на Си,а уж на АСМе одни комментарии займут 2/3 текста исходника.

Я  сам почти все на продукции Микрочипа пишу на АСМе. За исключением сложных стандартных протоколов. 

Воспользоваться стандартным стеком USB, не понимая как он работает практически невозможно, особенно если учесть, что очень часто его надо править под себя, изменяя дескрипторы и  создавая свою функцию Application.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ALEKS1102X    1

1. Да не, я особо и не возмущаюсь, с чего возмущаться то ?

    С того что переменная заявленная вне рабочей вункции "main" как глобальная -  unsigned long  dcab = 1234 (это пример); Дальше я её инкрементирую в любом в     любой функции внутри "маин", и независимо от функции, в которой я использую эту переменную - на выходе я должен получить...:

dcab++; // ->

incf      dcab,f            ;

btfsc    STATUS,Z      ;

incf      dcab+1,f        ;

btsfc    STATUS,Z      ;

incf      dcab+2,f        ;

и т.д.

или же:

dcab = dcab+ 1 ; // ->

movlw  1                   ;

addwf   dcab,f            ;

btfsc    STATUS,C      ;

addwf    dcab+1,f      ;

btfsc    STATUS,C      ;

addwf    dcab+2,f      ;

и т.д.

И независимо от прерываний, или переходов из одного банка ОЗУ в другой (для Пик 18 компилирует корректно) - мне не нужно глобальную переменную зачем-то сохранять в регистрах 0х70 ... 0х7F (которые используются во всех банках ОЗУ) - я не использую эту переменную внутри какой-то функции, ну и уж ни как не видно по размеру кода - что я могу перескочить на другую страницу программной памяти (зачем промежуточные регистры?)  -  в любом случае на выходе я должен получить результат: dcab = 1235 ? Или не ?

 

4. А я и не говорил про переход через Зеро - через Зеро конечно легко... Не знаю - сколько лет назад - мож 60-70 когда фирма Микрочип откололась от какой-то релейной компании (если правильно помню) и стала независимой компанией, выпускающей чисто микроконтроллеры. И вот тогда один из её программистов решил, что переполнение некоего многобайтного регистра нужно делать через Зеро.

А мне как-то привычней переполнение через Карри, а сравнение с нулём через Зеро...

В любом случае - в данной ситуации переполнение мл. регистра вызывает установку бита Карри, а последующее обнуление этого регистра вызывает установку Зеро - по сути установятся два бита одновременно.

Но я не имел ввиду код с использованием Зеро...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ALEKS1102X    1
В 27.09.2017 в 08:32, my504 сказал:

Какая связь между Fat32 и USB  я, откровенно говоря, не понял...

Однако, любезный, писать самому стек USB на АСМе, мягко говоря, трудоемко.

 Ну про Fat32 и USB если честно - то первое что пришло в голову это флеш карточки (USB), да и то - так чисто символически.

А насчёт написать - так кто-то ж написал, перевёл в СИ из низкоуровневого... Тут вопрос в другом - когда ты просто любитель , то информации в интернете - куча, но один понос. И из этого поноса - полезной информации максимум 1%. Если проще - то проще будет проанализировать передачу TTL-USB чем найти аналогичную действительно полезную информацию...

А конкретно если мне понадобится тот USB - то проанализирую шину, почитаю инфу, и и выкину 90% из того Си кода, который сейчас универсальный и типа неприкасаемый. А как окажется - в 5 раз сложнее ИИС.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    348
1 час назад, ALEKS1102X сказал:

 Ну про Fat32 и USB если честно - то первое что пришло в голову это флеш карточки (USB), да и то - так чисто символически.

А насчёт написать - так кто-то ж написал, перевёл в СИ из низкоуровневого... Тут вопрос в другом - когда ты просто любитель , то информации в интернете - куча, но один понос. И из этого поноса - полезной информации максимум 1%. Если проще - то проще будет проанализировать передачу TTL-USB чем найти аналогичную действительно полезную информацию...

А конкретно если мне понадобится тот USB - то проанализирую шину, почитаю инфу, и и выкину 90% из того Си кода, который сейчас универсальный и типа неприкасаемый. А как окажется - в 5 раз сложнее ИИС.

 

Вы пишите невероятную чушь. 

Просто апокалиптическую пургу. 

Это я Вам заявляю как человек, который не только ЮСБ девайс реализовал, причем под свою задачу, со своими дескрипторами, но и ЮСБ хост стыкующийся с этим девайсом. 

Причем я пишу в основном на АСМе и в основном для 16-разрядных ПИКов. 

Стек ЮСБ написать на АСМе можно, только это будет абсолютно пустой труд, ибо пользоваться этим стеком будет на порядок сложнее, чем написанным на Си. 

Прежде чем писать свой бред, возьмите за труд почитать спецификацию на ЮСБ в общем и спецификацию реализуемого класса. А потом поговорим на эту тему. 

Если у Вас останется желание говорить... 

Изменено пользователем my504

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ALEKS1102X    1
В 28.09.2017 в 22:17, my504 сказал:

 

Если у Вас останется желание говорить... 

ОК! Если понадобится ЮСБ, и если будет что-то непонятно, то обращусь к Вам.

Хотя... пока за помощью ни к кому не обращался...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    348

Я Вам помощь и не предлагал.

Прежде чем помогать человеку, нужно чтобы он сам разобрался в предмете минимум на 50%.

Более всего меня развеселила Ваша идея снифферить протокол, совершенно не представляя его структуру, а так же его сравнение с I2C.

:))))

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ALEKS1102X    1
8 часов назад, my504 сказал:

Я Вам помощь и не предлагал.

 

Да надо мне ваша помощь как собаке 40 ног... Ответил так что бы не грубить как Вы мне. Вы что думаете я не знаю приблизительную работу этого сраненького ЮСБ ?

Да все они : Усарт + 485, ЮСБ, заброшенный французами ВАН, и после подхваченный другими и переименованный в КАН - всё это вид одного и того же заднего места, только  с разных ракурсов. Все они имеют дифференциальную шину, но не имеют чёткой синхронизации, из-за чего ошибки сыплют пачками. Усарт частично спасают от рассинхронизации стартовые и стоповые биты, юсб и кан после определённого количества одинаковых бит передают бит другой полярности (что-то наподобие, давно уже читал), чтобы не потеряться в поносе информации, и т.д. А остальное VID (идентификатор производителя) - это передавай любое, PID - насколько помню - это предназначение устройства (программатор, веб камера, и т.д), и т.п. И в конце некой передаваемой пачки будет сыпать кучу CRC, а половина софта призвана решить проблемы железа из-за рассинхронизации - с какого места возобновить передачу, и т.п.. У кан равносильные устр-ва со всех сторон (в отличие от юсб), приоритет передачи информации, и т.д. И сравнительно большие расстояния передачи информации - а в конце та же CRC, вычисление ошибок, повторные передачи, и всё остальное что из этого вытекает. А на уровне железа они практически одинаковые...

Если Вы имели ввиду что это совсем не похоже на и2с, то да - нужно было Вам спарку усарт+485 в пример привести. Только и2с в десятки раз лучше - я на софтовом и2с проверяю просадку обеих шин, и ошибки при передаче старт-стопов, а в результате в устр-во встраиваешь проверку на ошибки, через неделю проверяешь регистр на наличие битов ошибок - а он пуст, хотя шина общается к примеру с DS1307 2 раза в секунду.  А если на выход шины SCL повесить парочку доп транзисторов и подтянуть через 120 Ом к плюсу, и похожее сделать по шине данных (сделать что-то наподобие усилителя сигналов), то можно устройства на пару десятков метров друг от друга разносить, чего не сделаешь с юсб. Тоже можно сказать и про спи - из-за наличия шины синхронизации тоже неглючный. А Вы тут сразу на дыбы... Ну разобрались с юсб - молодец, купите себе медальку с закруткой на спине. Когда мне понадобится этот юсб я тоже разберусь...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    348

Вы продолжаете нести бред. Причем самоуверенно, не имея НИ МАЛЕЙШЕГО понятия об упоминаемых протоколах.

С какого перепуга Вы решили, что "ошибки сыплют пачками"? 

С какого перепуга Вы решили, что синхронный интерфейс устойчивее к помехам по сравнению с асинхронным?

Если Вы не знаете как работать с УАРТом, то не надо его критиковать. Лучше НАУЧИТЕСЬ использовать.

Могу Вас расстроить, что синхронные интерфейсы ни на что, кроме как в ЛОКАЛЬНЫХ (в пределах одной платы) коммуникациях не годны. Просто потому, что сама линия синхронизации такая же уязвимая к помехам, как и линия данных, есличо. Мало того, наиболее защищенной от полмех является ДИФФЕРЕНЦИАЛЬНАЯ ПАРА, а все эти SPI, I2C и прочая мутотень - это НЕСИММЕТРИЧНЫЕ физические протоколы. Именно поэтому в высоконадежной КАН и прочих ПРОФИБАС, ЭЗЕРНЕТ используется дифпары и асинхронный интерфейс.

 

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ussr100    1

Здравствуйте уважаемые форумчане. Помогите решить проблему с прошивкой PIC16F676. Есть в наличии универсальный  программатор minipro tl866, к сожалению железного ком порта нету. При попытке загрузить в буфер прошивку выдает ошибку о несоответствии длины файла. Так же не могу вручную выставить правильную конфигурацию микроконтроллера, так как не нашел ручного переключения  для работы от внутреннего генератора. IC-Prog прошивку и конфигурацию открывает правильно. Может кто то помочь в подкорректировать прошивку для правильного определения конфигурационных бит в программаторе tl866 . Скрины и саму прошивку прилагаю.

Заранее спасибо за помощь.

ic-prog.jpg

tl866 config.jpg

tl866 error.jpg

FU_3i.HEX

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zhuk72    12

Что там с длиной файла я не знаю, с таким программатором дел не имел, а если хотите изменить конфиг-биты на внутренний генератор (зачем, кстати?), то отметьте FOSC2 (стр. 56 ДШ).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ussr100    1

Хочу изменить потому что в схеме микроконтроллер работает от внутреннего генератора. При ручном выставлении битов конфигурации как в  IC-Prog

у меня получается конфигурация 3FA7 или  3E58, а мне нужно получить конфигурацию  31CD. Может я плохо  поясняю суть проблемы, так как я не программист , а просто пользователь.

 

Zhuk72, есть готовый проект. У меня проблема прошить микроконтроллер а не переписать программу. Мне нужно просто адаптировать прошивку под мой программатор,который не хочет подгружать конфигурацию МК с файла прошивки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zhuk72    12

Я же не от балды дал ссылку на страницу в даташите, там расписаны все биты, с которыми вы воюете. Введите их в двоичный калькулятор слева направо и получите то самое слово. Заодно и принцип поймете.

У вас в ICProg выставлен тот самый 31CDh, но у него помимо внутреннего генератора еще и такты на RA4 выводятся (CLKOUT). Вам это правда нужно?

Если нет, то ваш конфиг - 31CCh, как я и сказал, с выставленным битом FOSC2 и очищенными FOSC1 и FOSC0. Остальные стоят правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ussr100    1

Так не работает. Я НЕ МОГУ вручную выставить конфигурацию не 31CDh, не 31CCh. У меня серые окна BG1 BG0 не поддаются изменению(защита от дурака). Я все комбинации перепробовал. Нужно только автоматом с прошивки подтянуть. Понимаю, что это проблема программатора, но другого нет.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zhuk72    12

FU_3i.HEX

Предварительно нужно считать контроллер, записать значение последней ячейки, потом открыть прошивку, вписать это значение туда и только после этого прошивать.

Там и так стоял внутренний генератор, только с выводом тактов, как и на первом вашем скрине. Я только вывод тактов отключил.

Изменено пользователем Zhuk72

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ussr100    1

Хух. Запустилось. Спасибо  Zhuk72 за помощь. Оказалось что нужно галочки инверсно ставить.

Но Config Word все равно "не стреляет"..... хотя как то работает.....

Последняя ячейка у меня в программаторе не читается и не пишется- еще одна защита от дурака. Константу никак не увидеть.

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

 

1111.HEX

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Юрий123    2

Ребята поможете ? У меня тут полтергейст с PIC16F676

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 332

по комнате сам летает ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Stratix
      Здравствуйте, у меня проблема с прошивкой разных устройств из-за программаторов. Дело в том что у меня есть некоторое количество китайских и самодельных программаторов для разных производителей, с ними постоянно какие-то проблемы, некоторые отказываются нормально работать на windows 10(другие версии ПО не устраивают), другие не работают с последними версиями сред разработки и т.д. Так же нужно прошивать схемы памяти. Хочу прошивать устройства без постоянной сборки программаторов и неудобств. Думаю о двух вариантах: взять оригинальные программаторы для всех производителей: altera, xlinx, arm, pic, avr(некоторые найти сложно, например оригинальный usb-blaster и высокая стоимость в сумме), второй вариант: взять универсальный программатор, который бы поддерживал все новые микросхемы, а вот с этим проблема, большинство универсальных программаторов не шьют stm, плис. Есть ли вообще реально универсальные программаторы? Мне было бы намного удобнее если на столе б лежал один программатор, а не куча. Смотрел список микросхем chipprog-48, пока что самый большой, к сожалению не поддерживает новые fpga, например: cyclone IV. Связывался, сказали что поддержки не будет и в будущем. Стоит ли взять chipprog-48 в 2018 году или есть программаторы лучше, с большим списком микросхем?
    • Автор: Дмитрий Дмитрий
      Здравствуй, добрый Алл.
      Задумал сделать сенсорный выключатель (блокировщик) двери. Задача: при двойном прикосновении к поверхности пластикового выключателя подать на управляющий контакт +5В.
      Реализация:  Использовать контроллер емкостного сенсора AT42Q1010, микроконтроллер PIC10F200.
      Логика: при полном закрытии двери,  срабатывает геркон, подается +5В на схему. На схеме расположены емкостной контроллер AT42Q1010 и микроконтроллер PIC10F200. Емкостной контроллер при прикосновении пальца дает сигнал на цифровой выход. Этот выход соединен со входом PIC10F200. В PIC10F200 крутится программа, определяющая двойное прикосновение, с заданными промежутками времени (ориентируюсь на обычный двойной клик мыши). Как только определяет двойной клик - подает на три GPIO выхода +5В, и уходит в пустой цикл, до снятия питания.
      С одного GPIO питаются светодиоды: 2 шт, 1.8 В, 1 мА, удалены на 3 метра, подключены кабелем 3х2.5 мм2.
      Со второго GPIO активируется герконовое реле 5В, 10мА, размыкающее наружную клавишу открытия двери.
      С третьего GPIO питаются светодиоды: 2 шт, 1.8 В, 1 мА, удалены на 3 см. Они находятся в том же выключателе, где будет смонтирована схема.
      Для повторного запуска нужно открыть - закрыть дверь. Питание будет отключено-включено, программа запустится с нуля.
      Вопросы:
      1. Нормально ли цеплять светодиоды прямо к PIC контроллеру, на такую дистанцию? Потери посчитал, выходит в районе 1%. Думаю проблем быть не должно, но чувствую кощунственность решения.
      2. Нормально ли PIC контроллер отнесется к многократному хард ресету? Дверью пользуюсь 50 раз в день. Это каждый раз снятие питания, включение обратно.
      3. Какое время на загрузку ожидать от схемы? Т.е. через какое время после полного закрытия двери я смогу заблокировать дверь. Судя по документации на емкостной контроллер , оно меньше 100 мс. Микроконтроллер PIC около 30 мс (reset time). Я нигде не ошибся?  
      4. Нужно ли вставлять резистор между герконовым реле блокировки двери и микроконтроллером? Расстояние от микроконтроллера до реле около 2 метров. Насколько я понимаю, желательно использовать токоограничительный резистор около 1 кОм, но методика точного расчета номинала мне не известна.
      5. Нужно ли вставлять резистор между дальними свтодиодами и контроллером? Ближним и контроллером? Для понижения напряжения я планирую в обоих случаях использовать резисторы 1.5кОм и последовательно подключать два диода 1.8 В,  1 ма. Этого достаточно? Диоды и резистор располагаются на крышке выключателя.
      6. Для подбора конденсатора нужной емкости для сенсора прикосновения хочу использовать макетную плату (такая пластиковая, с много рядов отверстий), и кучку кондеров из чип и дипа, около рекомендованной емкости.  К ним припаять проводки и по очереди проверять, каждый раз скидывая питания. Это верная методика или есть способ лучше?
      7. Имел ли кто дело с таким емкостным контроллером? Насколько plug and play решение? На внутреннюю часть выключателя планирую наклеить медную фольгу, номиналы конденсаторов и резистора подобрать на столе. Потом все собрать на печатной плате, смонтировать в корпус выключателя. Не уплывет ли со временем точность такого сенсора? Может быть на плате предусмотреть какие-то элементы для подстройки в будущем?
      8. Я выбрал самый младший из PIC  контроллеров. Могу ли я столкнуться с нехваткой памяти в своей задаче? Портов хватает. Может быть я не учел какой-то еще ресурс, которого не хватит для выполнения этой задачи?
      Даташит на емкостной контроллер  https://ru.mouser.com/datasheet/2/268/40001946A-1145216.pdf
      Даташит на PIC  контроллер http://ww1.microchip.com/downloads/en/DeviceDoc/40001239F.pdf
      С уважением,
      Дмитрий.
    • Автор: eestyk
      Имеется микроконтроллер dsPIC30F5011. Хочу реализовать на нём ШИМ через Output Compare Module, так как у этого модуля есть как раз режим PWM. Всё проинициализировал, задал период и коэффициент заполнения ШИМ (duty cycle - 50%), выбрал Timer2. На соответствующей ноге тыкаюсь осциллографом, ничего нет. Не могу понять в чём проблема. Вроде по даташиту настроил правильно.
      #define PERIOD_PWM 12484 #define PERIOD_PWM_div2 6242 WriteTimer2 (0); OpenTimer2 (T2_ON & T2_GATE_OFF & T2_IDLE_STOP & T2_PS_1_8 & T2_32BIT_MODE_OFF & T2_SOURCE_INT, PERIOD_PWM); ConfigIntTimer2 (T2_INT_PRIOR_5 & T2_INT_ON); OpenOC3(OC_IDLE_STOP & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_ENABLE, PERIOD_PWM, PERIOD_PWM_div2); ConfigIntOC3(OC_INT_PRIOR_0 & OC_INT_ON); void __attribute__((interrupt, auto_psv)) _T2Interrupt(void) { IFS0bits.T2IF = 0; // Clear Timer interrupt flag Nop(); } void __attribute__((interrupt, auto_psv)) _OC3Interrupt(void) { IFS1bits.OC3IF = 0; // Clear interrupt flag }  
      dsPic30F5011-5013.pdf
    • Автор: Евгений Бабок
      Господа, здравствуйте. Не ругайтесь, пожалуйста, я студент и я учусь. Возможно, вопрос будет глуповат. Подскажите, пожалуйста, чем можно заменить PIC32MX775F256H для САПР Proteus. Или намеки как подобрать анлог. Имеется код и принципиальная схема некого проекта на данном микроконтроллере(в Proteus нету 32х битных PIC). Я хочу создать его в Proteus,разобрать его и с ним поработать, но необходим другой микроконтроллер(скорее всего 16битный PIC) т.к. данного в протеусе нету. 
      Повторюсь, что я учусь,а учиться лучше на примерах, а не изобретать колесо. Спасибо. 
  • Сообщения

    • Для чего 2-полярный стабилизатор 2х35В, если КУН-у(по приведённой/рассматриваемой схеме) необходимо и достаточно однополярного на 40? 
    • Судя по отсутсвию каких либо самостоятельных действий по диагностике, с этим и другими аппаратами, смысла действительно мало.
    • @max820 Симистор ВТА41-600, судя по даташит,   http://www.ween-semi.com/documents/BTA41-600B.pdf является 4-х квадрантным, поэтому он будет управляться во всех 4-х квадрантах обязательно. Но дело в том что максимальный ток управления в 4-м квадранте выше тока управления в 1.2 и 3 квадрантах и составляет 70 мА вместо 50 мА в других квадрантах. Судя по Вашей схеме, когда на МТ2 +, то на УЭ - , а когда на МТ2 - , то на УЭ +. Получается, что симистор работает во 2 и 4 квадрантах и возможно из за тока управления 4-го квадранта добавляется температура. Не уверен в этом, но возможно. А насчет 80-90 градусов можете не волноваться. Это для нашей руки горячо, а для симистора это вполне комфортные условия. По даташит его предельная рабочая температура 150 град. Доводить до этого конечно же не надо, но и 90 град. - это не проблема.  А попробуйте поменять условные катод и анод симистора местами на Вашей схемке (это выводы 1 и 2, переверните симистор вверх ногами) Тогда, полагаю, управление будет происходить в 1 и 3 квадрантах - это любимые квадранты симисторов. Во всяком случае, в типовых схемах симисторных регуляторов такое включение наиболее популярно. Может и греться будет меньше, но не на много. И еще. Если будете пробовать поменять терминалы местами, то добавьте обязательно резистор 1К. Это R5 на другой схемке. Этот резистор необходим для защиты от ложных срабатываний симистора. Его рекомендуется ставить, чтобы УЭ не "висел в воздухе".
    • Угу, нет никакой причины использовать отдельные модули. Пусть LM358 регулятора тока воздействует не на затвор своего полевика, а на регулирующий элемент, который стоит в стабилизаторе напряжения. По такому примерно принципу и построено большинство универсальных блоков питания.
    • Спасибо @РадиоНастройщик  Я как то и не подумал, что может быть так просто. Собрал в Симе 14 и посмотрел. Работает на 300 кГц нормально. , Думаю и в железе будет работать . Только ток светодиода подгоню под даташит драйвера.   Ключ для генератора.ms14
    •  что, собственно, здоровья им конечно же не добавляет - но, и не отнимает. Современные конденсаторы расчитаны на длительную работу, минимум, при 85о. Если конденсатор можно длительно держать рукой - это абсолютно безопасная температура. 60 - 70о, уже не очень удержите. Но, и это безопасно. Вообще, это нормально, когда ламповая техника греется. допустимо заменить эти конденсаторы на 47 мкФ х 250в? - да. Цепочка 5,1 кОм + 20 мкф снижает пульсации со средней точки выпрямителя более, чем в 30 раз. 47 мкф даст подавление пульсаций в 75 раз.
    • @max820 Симистор ВТА41-600, судя по даташит,   http://www.ween-semi.com/documents/BTA41-600B.pdf является 4-х квадрантным, поэтому он будет управляться во всех 4-х квадрантах обязательно. Но дело в том что максимальный ток управления в 4-м квадранте выше тока управления в 1.2 и 3 квадрантах и составляет 70 мА вместо 50 мА в других квадрантах. Судя по Вашей схеме, когда на МТ2 +, то на УЭ - , а когда на МТ2 - , то на УЭ +. Получается, что симистор работает во 2 и 4 квадрантах и возможно из за тока управления 4-го квадранта добавляется температура. Не уверен в этом, но возможно. А насчет 80-90 градусов можете не волноваться. Это для нашей руки горячо, а для симистора это вполне комфортные условия. По даташит его предельная рабочая температура 150 град. Доводить до этого конечно же не надо, но и 90 град. - это не проблема.  А попробуйте поменять условные катод и анод симистора местами на Вашей схемке (это выводы 1 и 2, переверните симистор вверх ногами) Тогда, полагаю, управление будет происходить в 1 и 3 квадрантах - это любимые квадранты симисторов. Во всяком случае, в типовых схемах симисторных регуляторов такое включение наиболее популярно. Может и греться будет меньше, но не на много.