Быстрый заказ, позвонить +7-978-708-85-73
Дроссель Amadeus Productions. Быстрый заказ по телефону.
(Viber, WhatsApp, Telegram)
Amadeus Productions Дроссельный узел на Lancer IX 1.6 (4G18), 2.0 (4G63) и другие моторы
Ремкомплект РХХ на Mitsubishi Lancer IX, 1.6 (4G18), MD619857, 1450A116
Облегченный маховик на 1.6 (4G18) и другие моторы
Облегченные шкивы на 1.6 (4G18) и другие моторы
One-touch или "Ленивые поворотники"

> Микроконтроллеры
SSh
сообщение 9.9.2009, 17:52
Сообщение #1


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Ну что, начнем. Заранее заявляю, что я сам тоже новичок в этом деле, так, что если что не так с удовольствием приму и критику и замечания и дополнения.
Что такое микроконтроллер (МК)? Это микросхема которая сама по себе АБСОЛЮТНО ничего не умеет делать в отличии от даже самой примитивной логики. Для того, чтобы заставить МК выполнять какую-нибуть работу надо прошить (загрузить) в него программу. МК выпускаются многими фирмами - Mikrochip, Atmel, Motorolla, etc. Здесь будут рассматриваться только МК фирмы Mikrochip, так называемые pic-контроллеры.
Их легко различить по маркировке от других, название начинается с префикса PIC или (в современных сигнальных процессорах) dsPIC, например, PIC18F2520, PIC16F877 и т.д. Наиболее употребимые в любительской практике - 8-разрядные контроллеры среднего и высшего семейств, PIC16 и PIC18.
Буква "F" в маркировке МК означает, что он может многократно перезаписываться, т.е. если по каким-либо причинам надо поменять программу (прошивку), то это легко можно осуществить при помощи программатора (об этом попозже). Есть МК и с буквой "С" - это однократно программируемые.
Питание МК - +5В, хотя многие из них могут работать и при пониженном напряжении, от +2,5В.
Потребляемый ими ток насколько мал, что о нем и говорить неудобно (IMG:style_emoticons/default/dry.gif)
Так что-же все таки представляет собй МК? Это микросхема с определенным количеством выводов (8, 14, 16, 18, 20, 28, 40 и т.д), как минимум двое из которых предназначены для подачи питания, а почти все остальные представляют собой линии ввода-вывода. Почти - потому-что есть МК, которые обязательно должны тактироваться внешним кварцем (еще 2 вывода) и/или имеют отдельный вывод сброса. А есть и такие, что могут работать как от внешнего так и от внутреннего генераторов, в этом случае освободившиеся выводы тоже можно использовать для дела. Конкретно количество выводов данных можно посмотреть в даташите на конкретный МК.
Т.к. МК 8-и битные, то и выводы организованы в шины той-же разрядности, или, как их называют - порты.
В зависимости от кол-ва ножек могут быть порты A, B, C, D, E, которые на изображении МК обозначаются след. образом: буква R, затем наименование порта, затем номер разряда порта, напр. RA0, RC2, RB7...
В МК совсем необязательно наличие всех разрядов какого-либо порта, например, могут быть RC3...RC7, a RC0, RC1 и RC2 - отсутствовать. В принципе, это не имеет значения, т.к. любой порт можно запрограммировать на выполнение практически любой задачи (исключая некоторые специфические, такие, как обмен данными по USB или Ethernet), так, что без разницы - подключен, например, светодиод, сигнализирующий о превышении температуры к порту RB5 или RE0.
Исключение составляют выводы порта А, которые можно сконфигурировать так, чтоб они работали в аналоговом режиме (все остальные только цифровые). Естественно, порт А также может работать в цифровом режиме, что он и делает по умолчанию. Аналоговый режим используется для задействования встроенных АЦП - аналого-цифровых преобразователей, с их помощью измеряются аналоговые сигналы, например, напряжение, показания термодатчиков и т.д.
С распространением различных протоколов на определенные выводы могут также возлагаться дополнительные функции. Это не значит, что с другими выводами нельзя добиться результата, просто, если на вывод подключена какая-либо доп. функция, то результат достигается более легкими программными способами.
Для примера приведу обозначения выводов МК PIC16F876

1 MCLR/VPP/RE3
2 RA0/AN0
3 RA1/AN1
4 RA2/AN2/VREF-/CVREF
5 RA3/AN3/VREF+
6 RA4/T0CKI/C1OUT
7 RA5/AN5/SS/HLVDIN/C2OUT
8 VSS
9 OSC1/CLK1
10 OSC2/CLK0
11 RC0/T1OSO/T13CKI
12 RC1/T1OSI/CCP2
13 RC2/CCP1
14 RC3/SCK/SCL
15 RC4/SDI/SDA
16 RC5/SDO
17 RC6/TX/CK
18 RC7/RX/DT
19 VSS
20 VDD
21 RB0/INT
22 RB1
23 RB2
26 RB3/PGM
25 RB4
26 RB5
27 RB6/PGC
28 RB7/PGD

Смотрим, что мы тут имеем. МК имеет 2 вывода для соединения с общим проводом (8 и 19 - Vss), вывод питания - 20 - Vdd, отдельные выводы для подачи тактовых импульсов или подключения кварца - 9 - OSC1/CLK1 и 10 - OSC2/CLK0. Вывод сброса по желанию можно переконфигурировать для обработки данных - 1 - MCLR/VPP/RE3, т.е. он превращается в RE3. Все остальные - данные.
Дальше, некоторые выводы не имеют никаких специальных функций, например, RB1...RB7. Здесь PGM, PGC, PGD, а также Vpp на выводе 1 - сигналы с программатора, после прошивки МК они (имеются в виду сигналы а не выводы) не используются. Порты А, как видно, могут переконфигурироваться и работать как AN0...AN5 - аналоговые входы.
Некоторые сигналы (вернее протоколы) могут нам никогда и не понадобиться, так, что не стоит сейчас акцентировать на них внимание, просто опять же для примера упомянем
17 - RC6/TX/CK
18 - RC7/RX/DT, т.е. если надо, чтоб МК взаимодействовал с компьютером по последовательному интерфейсу (СОМ порт), то для этой цели лучше выбрать выводы 17 и 18, т.к. на них посажены также режимы RX и TX.

-----------------
Естественно, т.к. МК работают под управлением программы, то в них должна быть предусмотрена память для этих самых программ. В зависимости от МК объем памяти может колебаться от сотен байт до десятков килобайт. Память, как уже отмечалось, обычно многократно перезаписываемая.
Помимо программной МК может также иметь RAM память (ОЗУ) - для временного хранения данных/переменных во время работы программы, а также EEPROM - постоянная память для хранения данных при выключенном питании контроллера. Скажем, если на контроллере построен борткомпьютер, то, например, пройденный путь или израсходованный бензин надо писать именно в EEPROM, иначе данные потеряются после выключения зажигания. Данные же о мгновенном расходе пишутся в RAM. Конкретно объем программной памяти и наличие/отсутствие и объем RAM и EEPROM надо опять же смотреть в соотв. даташитах.
-----------------
Я честно говоря, не знаю, надо ли продолжать или нет, т.к. в сети есть куча информации по различным МК, так, что если есть желание, то изучить их работу в желаемом для себя объеме нетрудно.
Если есть интерес к обсуждению этого вопроса именно здесь а не на спец. форумах, то в след. раз поговорим о самих программах и программаторах.









Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
10 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 99)
Titus
сообщение 10.9.2009, 0:06
Сообщение #2


Don Amadeus
*******

Группа:
Главные администраторы
Сообщений: 29954
Регистрация: 19.2.2009
Из: Russia, Sevastopol
Вне форума
Авто: Lancer IX-1.6 MT Turbo, Honda Accord IX-2.4 AT Executive.

Репутация:   466  


Спасибо, отлично, как базовый материал (IMG:style_emoticons/default/wink.gif)
Если действительно интересно продолжать - скажите, плз, надеюсь, что SSh сочтет нужным продолжить тему, да и я может чем полезным окажусь (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
TCL
сообщение 10.9.2009, 2:40
Сообщение #3


Технический Маньяк
***

Группа:
Технический Маньяк
Сообщений: 407
Регистрация: 19.2.2009
Из: г. Брянск
Вне форума


Репутация:   0  


Конечно. Мне интересно.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Titus
сообщение 10.9.2009, 3:18
Сообщение #4


Don Amadeus
*******

Группа:
Главные администраторы
Сообщений: 29954
Регистрация: 19.2.2009
Из: Russia, Sevastopol
Вне форума
Авто: Lancer IX-1.6 MT Turbo, Honda Accord IX-2.4 AT Executive.

Репутация:   466  


Тогда сразу ссылка на один из моих любимых сайтов: http://easyelectronics.ru (кстати, тоже друг нашего сайта и форума).
Это ни в коем разе - не поправка и не дополнение к словам SSh, просто ссылка на интересные материалы, тоже написанные в очень доступной форме для чтения и понимания. Советую изучить рекурсивно все, что есть на сайте (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Onega
сообщение 10.9.2009, 9:14
Сообщение #5


Банный маньяк. Надежный как румынская авиация
*******

Группа:
Почетные ветераны
Сообщений: 5244
Регистрация: 17.3.2009
Из: Ярославль
Вне форума
Авто: Lancer STW 1.6AT

Репутация:   147  


ту би контьюниед..... ждем продолжения
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 10.9.2009, 13:10
Сообщение #6


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Ну что же, продолжим.

Посмотрим, из каких модулей может состоять МК. Упомянем только о тех модулях, которые стандартно присутствуют почти во всех современных контроллерах, спец. МК (например со встроенным USB) рассматривать не будем.
Сразу же, применительно к модулям, рассмотрим и соотв. управляющие регистры, т.к. для того, чтобы задействовать тем или иным образом какой-то модуль его надо как-то сконфигурировать, а иногда даже и включить.
Что такое управляющий регистр. Это специальная область в памяти МК, размер каждого регистра - 8 байт, меняя которые можно настроить модуль. Некоторые модули управляются не одним а несколькими регистрами, так сказать для тонкой настройки. Все регистры имеют имена, так, что обращаться к ним и управлять не составляет труда.
Теперь об основных модулях. Для лучшего понимания давайте определимся с типом МК и скачаем его даташит. Раз уже упоминали PIC16F876 давайте на нем и остановимся.

Модули ввода/вывода.
По вышеприведенной таблице легко можно посмотреть, что мы имеем для ввода/вывода данных. Если на графическом изображении порты обозначались через R, то в программах они упоминаются как PORTx, и, если требуется обращение к конкретному биту, через точку - номер бита, например, PORTA.2 - это вывод RA2 МК. Таким образом можно обращаться к любому выводу любого порта МК. Тут возможна и групповуха (в хорошем смысле слова), например, если надо установить некоторые логические уровни на всех 8 разрядах какого-либо порта, то пишем
PORTB = %11001100 - % - признак того, что число двоичное, 7 и 6-й разряды установлены в 1 (т.е. есть сигнал), 5 и 6 - в 0, ну и т.д.
То же самое можно записать и в десятичной и в шестнатиричной формах
PORTB = 204
PORTB = $CC
Или по мазохистски (но так писать не будем, только в качестве примера)
PORTB.0 = 0
PORTB.1 = 0
PORTB.2 = 1
PORTB.3 = 1
PORTB.4 = 0
PORTB.5 = 0
PORTB.6 = 1
PORTB.7 = 1
Так же можно и считать значения с портов, например, если бит 3 порта А через кнопку посажен на общий провод, то ее нажатие в программе распознается так (пока своими словами, не привязываясь к конкретному языку программирования)
Если PORTA.3 = 0, то выполнить такие-то действия.
Следует заметить, что все порты выполнены по схеме с открытым коллектором. Для нас это означает, что если вывод не подключен никуда, то на нем может присутствовать неопределенный уровень. Для борьбы с неопределенностью надо подтянуть порты на + или корпус через так называемые pull-up резисторы (4,7 ... 10 кОм). Для предыдующего примера резистор должен быть подключен на +. Ясно почему? Пока кнопка не нажата через него на PORTA.3 гарантированно подается высокий уровень, т.е. PORTA.3 = 1.
Но в некоторых случаях можно резисторы не ставить, например, если на выводе сидит светодиод - то он уже является нагрузкой и лишние резисторы не нужны.

Другой важнейший регистр портов - TRIS - определяет направление передачи данных, 1 - на вход, 0 - на выход (запоминаем 1 - I - Input, 0 - O - Output), он используется тогда, когда надо точно обозначить прием или передачу данных. По аналогии с предыдующим, если
TRISA = %10000001, то разряды 0 и 8 сконфигурированы на вход, остальные на выход. Это имеет смысл если на выводы посажены скажем, кнопки - то однозначно вход, светодиоды - выход. Если же какие-то операции требуют двунаправленного канала, например для считывания данных с цифрового датчика температуры, то направление не обозначаем, программа сама сделает все за нас.

Забегая вперед скажу, что направления в некоторых случаях можно и не обозначать если язык программирования может сделать это за нас. Например если есть команда для измерения напряжения при помощи встроенного АЦП, то логично, что этот бит должен работать только на вход. Ничего не мешает разработчику организовать библиотеку так, чтобы при подаче команды порт сначала конфигурировался соотв. образом, потом начинал мерить. Так, что, в каждом конкретном случае, будем внимательно читать и описание языков программирования, чтоб не городить ненужных команд.

Модуль АЦП - аналого-цифровое преобразование.
Как уже упоминалось PORTA, а в некоторых МК и часть других портов, можно использовать как аналоговые. АЦП этих портов 10-разрядный (есть МК с переключаемой разрядностью АЦП - 8 или 10). Это дает нам до 1024 градаций измеряемого напряжения (2^10=1024), т.е. точность измерения примерно равна 5В/1024 = 0,005В, что вполне достаточно для практического применения. Точность измерения зависит и от опорных напряжений - Vref. Хотя опять же на практике достаточно в качестве опорного использовать напряжение питания самого МК, мы можем подать на определенные выводы внешнее Vref.
Вот всеми этими делами и заправляют регистры управления АЦП - ADCON0 и ADCON1.
ADCON0 часто можно и не трогать, его значения по умолчанию во многих случаях нас удовлетворят, а вот ADCON1 надо настроить обязательно. С его помощью устанавливаются аналоговые и цифровые входы, а также выбор Vref. Рассмотрим его поподробнее
Старший бит (7) устанавливает формат результата, нам надо выравнивание вправо, т.е. так, как мы привыкли видеть числа. далее идут 3 незадействованных бита, и, наконец 4 последних, которые и определяют то, о чем упоминалось выше
Лучше рассмотреть на примерах, сравнивая с даташитом
ADCON1 = %10000000 - все выводы аналоговые, опорным является напряжение питания.
ADCON1 = %10000110 - все выводы - цифровые, об опорном напряжении нет смысла говорить, как, впрочем и о 7 бите.
ADCON1 = %10001110 - RA0 - аналоговый, все остальные - цифровые. Так можно сконфигурировать скажем схему простогоо одноканального вольтметра.
Все возможные комбинации приведены в описании на МК.
Ну и т.д, думаю понятно.

В рассматриваемом нами МК есть и другие модули, TMR - таймеры, CCP - захват, USART - грубо говоря - СОМ порт, MSSP - синхронный последовательный порт. Но, я думаю, сейчас можно это все пропустить, для начала работы с МК они или не будут нужны, или все вопросы, связанные с конфигурированием решаются при помощи команд языка программирования и нам не надо вникать в тонкости.

Наибольший интерес лично для меня представляет модуль MSSP, т.к. с его помощью облегчается взаимодействие МК с внешними устройствами, работающими по протоколу I2C или SPI, такими как микросхемы EEPROM, часы, напр. DS1307, MMC/SD карты памяти и т.д. В нашем МК есть выводы SCL и SDA (RC3, RC4) к которым и подключаем соотв. выводы скажем микросхемы часов DS1307. Не вникая в тонкости протокола, а они нам и не нужны, просто говорим - передать по шине I2C такую-то команду, или наоборот, принять байт по той же шине и все. Другое дело, что передавать и принимать. Тут уж нужен индивидуальный подход для каждого периферийного устройства. Это не зависит от самого МК. Но и это не проблема, например в даташите на DS1307 написано, что для того, чтобы "встряхнуть" его надо подать опред. команду, после чего начать считывать по тем же линиям ответ (в данном случае дату и время). Все это легко реализуется средствами языков программирования.
След. на моей очереди - USART, а конкретнее хочу подцепиться контроллером к лансеровскому MUT2.
Тут вся хитрость состоит в том, что согласно описанию протокола MUT2, его надо сначала инициализировать на одной скорости обмена, потом начать взаимодействовать с ним (спрашиваем - отвечает) на другой. Вот разберусь с делами - займусь этим.

Вот и все про модули, дальше распространяться думаю не надо. Главное понять суть, а дальше нетрудно и самому разобраться.

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

Да, чуть не забыл про модуль тактового генератора. Но в тех компиляторах, которые использую я, все настройки этого модуля производятся в настройках проекта, так, что о генераторе поговорим во время рассмотрения языков программирования.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 12.9.2009, 8:08
Сообщение #7


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Поехали дальше.
Как уже отмечалось, для того, чтобы добиться от МК какой либо деятельности его надо прошить соответствующей программой. Сама скомпиллированная программа представляет собой набор символов в hex (шестнатиричном) формате и если открыть ее в блокноте имеет след вид:
:1000000043290830211901308F008E012408840013
:100010002208BB202208800484130005FF3E211D16
ну и т.д.

Для заливки программы требуется программатор, который как правило состоит из двух компонент - аппаратной и программной. Аппаратная часть является по сути согласующим интерфейсом между компьютером и МК, всю работу по заливке - формирование управляющих импульсов, передача данных, проверка (верификация) правильности записи и т.д. берет на себя программная оболочка. Существует множество типов программаторов под разные интерфейсы - COM, LPT, USB. Самые быстрые, конечно, USB-шные, но если не предъявлять особых требований, то подойдут и самодельные, на COM или LPT.
Один из самых распространенных программаторов - PonyProg, схема его аппаратной части и программная оболочка доступны для свободного скачивания, он хорош тем, что состоит из базового блока и доп. адаптеров, предназначенных для прошивки различных чипов. Т.е. если вдруг понадобиться запрограммировать скажем память 93 или 24 серий, то достаточно сделать адаптер и все.
В свое время я переделал кучу программаторов - PonyProg, SOLO, JonisProg и т.д, но потом купил USB-шный фирменный PicKit2 oт Microchip, который при всех остальных достоинствах позволяет также программировать внутрисхемно, т.е. не надо при каждой перепрошивке вытаскивать чип из схемы, зашивать его в программаторе а потом заново устанавливать на место. Тем более, что с микросхемами для поверхностного монтажа вообще морока получается. Но... при разработке той или иной схемы приходилось все-таки травить печатную плату, собирать схему, если что ни так - переделывать, что очень тормозило работу. И вдруг на глаза мне попался сайт фирмы Mikroelektronika - mikroe.com, которая помимо того, что выпускает компиляторы для МК, так еще осуществляет аппаратную поддержку в виде макетниц EasyPic5 и всевозможных периферийных дополнительных модулей и все это по приемлемой цене. Сами макетницы снабжены встроенным программатором, программная оболочка которого запускается прямо из среды компилятора.
Получается вот какое удобство - пишешь программу, нажимаешь на кнопку - программа компилируется, прошивается и сразу видишь результат.
Подробно плату описывать не буду - кому надо можно посмотреть на сайте. Если возникнут какие-нибуть вопросы - пишите.
В качестве языка программирования также выбрал компилятор этой же фирмы - MikroBasic Pro. Во-первых он очень легок в освоении, во-вторых имеет очень хороший Help, ну и немаловажно то, что к ниму прилагается куча примеров, почти на все случаи жизни. Да и форум на сайте очень активный.
Там же есть компилляторы MikroC и MikroPascal, отличаются друг от друга только синтаксисом.
При использовании указанных компиляторов совсем не обязательно иметь программаторы от той же фирмы, результатом их работы является hex файл прошивки, который можно залить в МК любым другим программатором. Просто вышеописанным образом резко повышается производительность.
Ещё могу посоветовать PicBasic Pro, тоже неплохой компиллятор для начинающих.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Onega
сообщение 23.9.2009, 9:05
Сообщение #8


Банный маньяк. Надежный как румынская авиация
*******

Группа:
Почетные ветераны
Сообщений: 5244
Регистрация: 17.3.2009
Из: Ярославль
Вне форума
Авто: Lancer STW 1.6AT

Репутация:   147  


моск плавится. но стараюсь изучить.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 23.9.2009, 9:28
Сообщение #9


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Если что непонятно написано - спрашивайте, я пока подготавливаю след. части.
В любом случае без практических занятий сложно, а вот если попробовать - сразу становиться понятно. Это я исходя из собственного опыта говорю.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Engineer
сообщение 23.9.2009, 13:36
Сообщение #10


Технический Маньяк
***

Группа:
Технический Маньяк
Сообщений: 189
Регистрация: 28.7.2009
Из: Регион 52
Вне форума


Репутация:   0  


Читается и понимается легко, в отличие от заумных книжек.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
dmitrij_b
сообщение 23.9.2009, 16:25
Сообщение #11


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1802
Регистрация: 21.2.2009
Из: Екатеринбург
Вне форума
Авто: Lancer IX 1.6MT (105HP)

Репутация:   108  


Надо, наверное, скозать еще о том, что микроконтроллер - это на самим деле такой небольшой компьютер в виде одной микросхемы. На борту у этой микрухи всегда есть проц, ПЗУ под программу и некоторое колличество оперативной памяти. Про пики не скажу, я больше по AVR-ам прибиваюсь пока, дак вот у них еще и некоторое колличество энергонезовисимой памяти есть. То есть особо важные данные (например настройки устройства) не пропадут при отключении питания.
И, до кучи, в эту-же микоросхему напихано некоторое колличество периферии. Как-то таймеры, компараторы, АЦП-шки, интерфейсы связи с внешним миром (чаще всего последовательные), и еще всякая полезная шушара. Напихано это добро для того, чтобы разработчик не забивал себе голову реализацией всего нужного ему хозяйства программным способом. И это надо сказать большое подспорье.
Естественно в разных моделях микроконтроллеров набор периферии разный, да и размеры ПЗУ, оперативки EEPROM - ов тоже.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 24.9.2009, 12:45
Сообщение #12


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Продолжим.
В подавляющем большинстве случаев МК должен работать не в одиночку, а с некоторой периферией, например, светодиодные или ЖК индикаторы, кнопки, датчики, и т.д. Причем некоторые из периферийных устройств не требуют специальных протоколов обмена - светодиоды, кнопки, другие же, наоборот, работают только по своим специфическим протоколам. Протокол обмена - это как бы язык, на котором два устройства "разговаривают" друг с другом. К нашему облегчению многие стандартные и распространенные протоколы реализованы в МК на аппаратном уровне (об этом уже говорилось) остается понять как можно организовать обмен данными между МК и внешним устройством.
Одним из наиболее востребованным периферийным устройством является многострочный ЖК индикатор, обычно применяются индикаторы 16х2 (2 строки по 16 символов в каждой). Не вдаваясь в подробности его работы посмотрим как можно управлять им при помощи МК. Сразу отметим, что почти всегда требуется при использовании какого-либо устройства справляться с его описанием (datasheet), хотя бы для того, чтоб узнать расположение выводов и сигналов.
Для управления такими ЖКИ обычно требуются сигналы данных (4-х разрядная шина) - D4...D7, выбора кристалла - Е, и сигнала выбора между данными и инструкциями (командами) - D/I или RS (разные производители могут обозначать по-разному). Т.е. для управления нам потребуется 6 линий - 6 выводов МК.
Естественно и питание надо подключить и, желательно, регулировку контрастности, но в этом деле сам МК не участвует.
Сразу же определимся с языком программирования, т.к. хотя смысл программы на разных языках и не меняется, но они отличаются синтаксисом. Предлагаю для начала выбрать MikroBasic Pro (МВР), производство Mikroelektronika.
1. Полнофункциональную версию можно скачать с сайта www.mikroe.com, ограничение только на размер кода, для изучения нам хватит и усеченной версии.
2. Программа имеет очень хороший Help, множество примеров и форум поддержки.
3. При желании можно легко освободиться от ограничений (IMG:style_emoticons/default/wink.gif)
4. Фирма предлагает по доступной цене множество демо плат, при желании можно не заморачиваться с изготовлением того или иного устройства а просто собрать его "из кубиков"
5. Все команды организованы в виде библиотек, которые полностью документированы, возможно добавление собственных библиотек.
6. Одновременно с описанным выпускаются также MikroC и MikroPascal, которые отличаются только синтаксисом, так, что каждый может выбрать себе компиллятор по вкусу.

Т.к. язык уже выбран - кратко о структуре программы, она (эта самая структура) должна иметь вид:
program Имя_программы ' заголовок программы

объявление различных переменных, а также соединений периферийных устройств с выводами МК

main: ' точка входа в основную программу
Сама программа
.....
.....
.....
.....
end. ' Конец программы, обратите внимание, в конце стоит точка
Здесь мы не обозначили подпрограммы, но пока и не надо, первую программу напишем "в упор", без подпрограмм.

Ладно, вернемся к нашему ЖК.
Перво-наперво надо сообщить МК, к каким его выводам подключаются какие выводы ЖКИ.
После этого может начаться сама программа, надо очистить ЖКИ, выключить курсор на нем, чтоб не мельтешил перед глазами и написать что-нибуть.
Как видим, мы здесь в принципе даже и не пытались программировать, просто рассказали что требуется.
А теперь запрограммируем, читая help.
Все, что написано на строке после символа ' является комментарием и игнорируется программой. Это надо для нас, чтоб по прошествии времени могли вспомнить, что мы тут нагородили...

program LCD

' Lcd connection
dim LCD_RS as sbit at RB4_bit ' Вывод RS индикатора подключен к выводу RB4 МК (Для pic16f876 это вывод 25)
LCD_EN as sbit at RB5_bit ' Остальные писать не будем, и так все ясно...
LCD_D4 as sbit at RB0_bit
LCD_D5 as sbit at RB1_bit
LCD_D6 as sbit at RB2_bit
LCD_D7 as sbit at RB3_bit

LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D4_Direction as sbit at TRISB0_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D7_Direction as sbit at TRISB3_bit
' End Lcd connections

main: ' Начало основной программы

Lcd_Init() ' Проиницилизируем (встряхнем) ЖКИ
Delay_ms(200) ' Выдержим паузу в 200 мс, можно и не делать, но лучше дать ЖКИ время очухаться
Lcd_Cmd(_LCD_CLEAR) ' Очистить экран
Lcd_Cmd(_LCD_CURSOR_OFF) ' Выключить курсор

Lcd_Out(1, 1, "AMADEUS") ' Вывести в 1-й строке на 1-й позиции слово AMADEUS
Lcd_Out(2, 1, "PROJECT") ' 2 строка, 1 позиция

End. ' Закончить программу.

Все! Компилируем, заливаем в МК, включаем - работает.
Применительно к MBP надо отметить, что если в программе используется какая-либо библиотека, то в диспетчере библиотек надо поставить галочку напротив необходимых компонент, или вообще выбрать все. Кстати, если библиотека не выбрана, то в окне редактора соотв. команды подчеркиваются красной волнистой линией, что облегчает нам задачу выбора.
Таким же образом можно вывести на экран любую информацию, в том числе и считываемую с различных датчиков, внешних устройств.

Здесь мы рассмотрели связь МК с устройством, которое хотя и работает по опред. протоколу, но в МК нет соответствующей аппаратной поддержки. Дальше рассмотрим связь с простейшей периферией (если можно так назвать кнопки и светодиоды) и потом и связь под конкретный протокол. ЖК индикатор оставим подключенным к МК, он нам никогда не помешает.



Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 25.9.2009, 10:14
Сообщение #13


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


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

Имеем 2 кнопки, светодиод и ЖК индикатор из предыдующего примера. При подаче питания светодиод погашен, на индикаторе же высвечивается 0. При нажатии на одну из кнопок (та, что идет на RA4), число на индикаторе увеличивается на единицу с частотой 2 раза в секунду, до тех пор, пока кнопка нажата, вторая кнопка работает по другому - число увеличивается на единицу при однократном нажатии, т.е. для след. увеличения надо отпустить и снова нажать кнопку. Помимо этого, когда число становиться равным 10, загорается светодиод, при всех остальных значениях - тухнет.
Разберемся, что к чему....
Первая часть нам уже знакома, это описание того, к каким выводам МК подключен ЖКИ.
Дальше идет описание переменных. Дело в том, что если в программе присутствуют некоторые переменные, то они должны быть описаны заранее, с указанием их типа. Все возможные типы перечислены в описании МВР, здесь же мы применяем 2 типа - byte - это байтовая переменная, которая может принимать значения от 0 до 255 (см. help) и символьная - char, число в квадратных скобках - количество символов. Понятно, чтоб воспроизвести любое число, организованное byte-м надо 3 символа.
Переменная - это любые изменяющиеся в ходе выполнения программы данные. Это как X, Y, Z и т.д. знакомые еще из школы. Навания (имена) переменным придумываем сами, можно вообще называть их как угодно, AAA, BBB, hrtdys, но лучше, конечно, чтоб по имени было ясно, что это за переменная, например, если она отмосится к измерению напряжения, лучше назвать её VOLTAGE, а не VVV (IMG:style_emoticons/default/smile.gif) .
Надо только обращать внимание на то, чтоб переменным не присваивались имена, совпадающие с зарезервированными в данном компилляторе словами, например, переменную нельзя назвать lcd_out, т.к. это команда МВР.
Здесь у нас используются след. переменные
press и num - байтовые
number - строка из 3-х символов.
num - это как раз то число, которое меняется при нажатии на кнопки, а number - то же число, но уже в символьном виде, для того, чтобы ЖКИ смог его воспроизвести. Т.е. с первым из них можно производить математические операции (конкретно у нас - прибавляем единицу), но нельзя воспроизвести, а со вторым мат. операций не совершишь, но воспроизвести можно.
press - вообще нигде не видна, но она нужна нам для организации признака однократного нажатия на кнопку.
В этой же программе посмотрим и то, как организуются подпрограммы (процедуры). В принципе то, что написано в процедуре можно написать и в теле программы (т.е. после main:), но с применением процедур
Во-первых сама программа становиться более так сказать читабельной и понятной
Во-вторых, если в течении выполнения программы надо чтобы какое-либо действие выполнялось несколько раз, то придется соотв. число раз писать в программе одно и то же, а так просто вызываем нужную процедуру - и все.
Ну и много других положительных моментов...

Т.к. процедуры расположены до точки входа main:, то они при включении не выполняются до тех пор, пока их не вызовут из тела главной части (между main: и end.)
Рассмотрим это тело подробно (IMG:style_emoticons/default/smile.gif)
TRISA = %11111111 - т.к. к портам А подключены кнопки, то, естественно, он должен работать на вход
TRISC = 0 - здесь все наоборот, подключен светодиод - значит выход
ADCON1 = %10000110 - кнопка или нажата или отжата, значит все входы - цифровые (см. datasheet на pic16f876)
press = 0 - промежуточная переменная равна 0, потом рассмотрим подробнее
num = 0 - с начала работы программы число на индикаторе равно 0

Далее идут команды инициализации ЖКИ, они нам уже знакомы
Часть программы между while и wend - бесконечный цикл, т.е. все, что находится между этими командами будет повторяться до тех пор, пока не выключим питание МК.
И что же в этом цикле? Все это легко описывается словами, в принципе, думаю, и так понятно, но все-же...
1.
if Button(PORTA, 4, 1, 0) then
num = num + 1
Delay_ms(500)
end if
Если нажата кнопка, подключенная к RA4, то увеличить значение num на единицу. Подождать пол-секунды и продолжить. Если же ничего не нажато, то просто продолжить.

2.
SelectMode()
Перейти из тела программы к выполнению процедуры SelectMode и после её выполнения возвратиться к следующей по порядку команде.

3.
if num = 100 then
num = 0
end if
Если мы уже столько понажимали на кнопки, что счетчик достиг 100 - обнулить его. Ясно, если еще меньше 100 - ничего не предпринимать.

4.
if num = 10 then
PORTC.0 = 1
else
PORTC.0 = 0
end if
Еще одно условие, если на счетчике 10, то зажечь светодиод, подключенный к выводу RC0, в противном случае (else) светодиод погашен.

5.
ByteToStr(num,number)
Lcd_Out(1, 1, number)
Первая строчка делает то, о чем уже упоминалось - переводит байтовое (числовое) значение в строчное, чтобы можно было отобразить его на ЖКИ, что и выполняется след. строкой. Здесь в отличии от предыдующего примера number - без кавычек, т.е. в соотв. позицию подставляется не само слово а значение той переменной, именем которой оно является.

6. Ну и подпрограмма
sub procedure SelectMode()
if press = 0 then
if Button(PORTA, 3, 1, 0) then
num = num + 1
press = 1
end if
end if

if Button(PORTA, 3, 1, 1) then
press = 0
end if
end sub

Должна быть заключена между sub procedure end sub
Тут мы слегка хитрим для того, чтобы организовать однократное нажатие на кнопку.
Переменной press мы изначально присвоили 0, поэтому при первом нажатии на кнопку выполняется условие if press = 0 и система реагирует на нажатие, но одновременно присваивает переменной значение 1.
Если мы кнопку не отпускаем, то она так и остается равной 1, и при след. вызове процедуры программа не выполняет команду увеличения счетчика. Как только мы отпустили кнопку - if Button(PORTA, 3, 1, 1) -
press обнуляется, т.е. след. нажатие регистрируется.
Пару слов о команде Button, хотя она и подробно описана в help, но все-же...
Button(PORTA, 3, 1, 1) - кнопка подключена к выводу RA3, первая единица устанавливает время подавления дребезга контактов, вторая - изменение состояние. Т.е. если RA3 подтянут на +5В, то
Button(PORTA, 3, 1, 0) - означает нажатие кнопки
Button(PORTA, 3, 1, 1) - отпускание.


Вот и сама программа:

program button

' Lcd module connection
dim LCD_RS as sbit at RB4_bit
LCD_EN as sbit at RB5_bit
LCD_D4 as sbit at RB0_bit
LCD_D5 as sbit at RB1_bit
LCD_D6 as sbit at RB2_bit
LCD_D7 as sbit at RB3_bit

LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D4_Direction as sbit at TRISB0_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D7_Direction as sbit at TRISB3_bit
' End Lcd module connections

dim press, num as byte ' Объявление переменных
dim number as char[3]

sub procedure SelectMode() ' Подпрограмма (процедура)
if press = 0 then
if Button(PORTA, 3, 1, 0) then
num = num + 1
press = 1
end if
end if

if Button(PORTA, 3, 1, 1) then
press = 0
end if
end sub ' Окончание процедуры

'########################## MAIN PROGRAMM ########################
main:
TRISA = %11111111
TRISC = 0
ADCON1 = %10000110
press = 0
num = 0

Lcd_Init()
Delay_ms(200)
Lcd_Cmd(_LCD_CLEAR)
Lcd_Cmd(_LCD_CURSOR_OFF)
Delay_ms(200)

while true
if Button(PORTA, 4, 1, 0) then
num = num + 1
Delay_ms(500)
end if

SelectMode()

if num = 100 then
num = 0
end if

if num = 10 then
PORTC.0 = 1
else
PORTC.0 = 0
end if

ByteToStr(num,number)
Lcd_Out(1, 1, number)
wend
end.

-------------------

Дальше - попробуем собрать уже необходимое в хозяйстве устройство - часы...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 27.9.2009, 12:09
Сообщение #14


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Как и было сказано ранее - попытаемся сделать что-то полезное а не просто "там нажал, тут светит" (IMG:style_emoticons/default/smile.gif)
Будем делать часы, с применением специализированной микросхемы DS1307. Для этого дополним схему голубой частью, а светодиод исключим из схемы, хотя, в принципе он нам и не мешает, пусть остается. Вместо резервной батареи питания часов можно просто закоротить вывод 3 DS1307 на общий провод, если его оставить пустым - микросхема не будет работать.
DS1307 представляет собой 8-ножечную микросхему, взаимодействующую с внешним миром по протоколу I2C. Это стандартный протокол, применяется во многих устройствах, например в микросхемах памяти eeprom, так, что его изучение не помешает (естественно на том уровне, чтоб мы лишь бы смогли подцепить такое устройство к МК, большего и не надо).
Во многих МК на аппаратном уровне заданы выводы для I2C устройств, хотя, как уже отмечалось, их можно посадить куда угодно, организуя этот протокол программно.
I2C устройства взаимодействуют с внешним миром по 2-х проводной шине, SCL-синхронизация и SDA-данные. Т.е. вся информация передается по двум проводам, это особенно удобно если 2 устройства разнесены друг от друга или надо сэкономить выводы МК.
На графическом обозначении pic16f876 видим, что SCL сидит на RC3, SDA - на RC4. Но здесь мы организуем программную реализацию протокола, для того, чтоб просто не занимать PORTC.
Сначала слегка изучим саму DS1307 (RTC - Real Time Clock). Как? Конечно качаем datasheet. Опять же, все читать не надо, только суть, которая состоит в том, что

Для того, чтобы читать из DS1307 надо подать команду 11010001 ($D1)
Для записи в неё - 11010000 ($D0)
Время и дата располагаются в области памяти, начиная с 0,
0 - секунды
1 - минуты
2 - часы и т.д.
Время и дата считываются не в нашем родном десятичном формате, а в каком-то непонятном BCD (Binary Coded Decimal) - двоично-десятичном. Что это такое - черт его знает, ну да ладно, потом разберемся...
Ну и естественно смотрим типовую схему включения, куда что паять.
Все, больше нам ничего и не надо, все нарисованные графики, диаграммы и т.д.
Только поймем, почему использован кварц на 32768 Гц, число какое-то ни к селу ни к городу. Оказывается, если это число последовательно делить на 2, то в итоге получим 1, т.е. интервал в 1 секунду, а деление на два самая простая операция в цифровой технике.
Вооружившись этими сведениями примемся за программирование.
Т.к. считанное время надо куда-то выводить - используем ЖКИ, работу с которым уже изучили.
Далее, любые часы требуют коррекции, значит надо иметь кнопки для установки - как с ними работать - тоже знаем.

Сразу же привожу текст программы, все, что на русском - здесь комментарии, все, что уже описывалось ранее - не комментируем.
Почти во всех языках программирования, если перед числом стоит знак $, то подразумевается, что имеется в виду шестнацитиричное число, % - двоичное, ничего нет - десятичное. Для справки - компиллятор MikroBasic имеет в своем составе конвертор чисел, так, что, не надо объяснять как производится перевод из одной системы счисления в другую (IMG:style_emoticons/default/wink.gif)

program DS1307

'
' Lcd module connection
dim LCD_RS as sbit at RB4_bit
LCD_EN as sbit at RB5_bit
LCD_D4 as sbit at RB0_bit
LCD_D5 as sbit at RB1_bit
LCD_D6 as sbit at RB2_bit
LCD_D7 as sbit at RB3_bit

LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D4_Direction as sbit at TRISB0_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D7_Direction as sbit at TRISB3_bit
' End Lcd module connections

' По аналогии с описанием ЖКИ, здесь описано соединение выводов DS1307 с МК
' SCL - RB7
' SDA - RB6
' Software I2C connections
dim Soft_I2C_Scl as sbit at RB7_bit
Soft_I2C_Sda as sbit at RB6_bit
Soft_I2C_Scl_Direction as sbit at TRISB7_bit
Soft_I2C_Sda_Direction as sbit at TRISB6_bit
' End Software I2C connections

' Описания переменных, здесь присутствует новый тип - string, строка, состоящая из 8 символов
' Позиции символов нумеруются слева направо, начиная с нуля.
dim hours, minutes, seconds as byte
dim press as byte
dim menuitem as short
dim hrs, min, sec as char[3]
dim text as char[2]
dim systime as string[8]

' Считать показания DS1307
sub procedure GetTime()
Soft_I2C_start ' Запустить программный протокол обмена по I2C
Soft_I2C_write($D0) ' Подаем команду $D0 - запись в DS1307
Soft_I2C_write(0) ' записываем 0 - адрес с которого располагаются данные о времени.
Soft_I2C_Start ' Перезапускаем протокол
Soft_I2C_write($D1) ' Команда $D1 - читать из DS1307
seconds = Bcd2Dec(Soft_I2C_read(1)) ' т.к. адрес установлен на 0, считываем секунды и переходим (1) к
minutes = Bcd2Dec(Soft_I2C_read(1)) ' считыванию минут, далее (1)
hours = Bcd2Dec(Soft_I2C_read(0)) ' и часы и все, дальше не читаем (0)
Soft_I2C_stop ' ну и останавливаем передачу данных по I2C
end sub
' Здесь при считывании данных мы сразу же перевели их в десятичный формат - BCD2Dec (BCD to decimal)

sub procedure ResetSec() 'Установка (сброс) секунд
if Button(PORTA, 4, 1, 0) then
Soft_I2C_start
Soft_I2C_write($D0) ' Записать
Soft_I2C_write($00) ' В ячейку с адресом 0
Soft_I2C_write($00) ' ноль
Soft_I2C_stop
end if
Delay_ms(200) ' Здесь задержка в принципе и не нужна, ну да ладно, не помешает
end sub

sub procedure SetMinutes() ' Установка минут
if Button(PORTA, 4, 1, 0) then
Inc(minutes) ' При нажатии на кнопку увеличивать значения минут на единицу
if minutes = 60 then minutes = 0 end if 'Больше 59-и минут не бывает
minutes=Dec2Bcd(minutes) ' Переводим обратно формат в BCD, чтоб было понятно DS1307
Soft_I2C_start
Soft_I2C_write($D0) ' Записать
Soft_I2C_write($01) ' В ячейку с адресом 1
Soft_I2C_write(minutes) ' то число, которое мы получили чуть выше
Soft_I2C_stop
end if
Delay_ms(200) ' Небольшая пауза, чтоб не слишком быстро менялись цифры
end sub

sub procedure SetHours() ' То же самое до часов
if Button(PORTA, 4, 1, 0) then
Inc(hours)
if hours = 24 then hours = 0 end if ' Часы - до 24-х
hours=Dec2Bcd(hours)
Soft_I2C_start
Soft_I2C_write($D0)
Soft_I2C_write($02) 'Адрес ячейки часов - 2
Soft_I2C_write(hours) '
Soft_I2C_stop
end if
Delay_ms(200)
end sub

sub procedure DisplayTime()
ByteToStr(seconds,sec) ' Переводим байты в символы
text[0]=sec[1] ' Подробное описание - см. ниже
text[1]=sec[2] '
text[2]=0
if text[0] = 32 then text[0] = "0" end if '
sec = text '
ByteToStr(minutes,min)
text[0]=min[1]
text[1]=min[2]
text[2]=0
if text[0] = 32 then text[0] = "0" end if
min = text
ByteToStr(hours,hrs)
text[0]=hrs[1]
text[1]=hrs[2]
text[2]=0
if text[0] = 32 then text[0] = "0" end if
hrs = text

systime = hrs + ":" + min + ":" + sec ' Имея все данные складываем их в строку, готовую к выводу на экран
' Это так называемая конкатенация строк, т.е. в результате получаем строковую переменную вот такого вида
' 12:06:34
end sub


sub procedure SelectMode()
' Вторую кнопку (ту, что меняла состояние МК при однократном нажатии)
' используем для перебора пунктов меню установки времени и индикации соотв. режима
if press = 0 then
if Button(PORTA, 3, 1, 0) then
menuitem = menuitem + 1
press = 1
end if
end if

if Button(PORTA, 3, 1, 1) then
press = 0
end if

select case menuitem ' В зависимости от значения переменной menuitem выбираем то или иное действие
case 0
Lcd_out(1, 1, "Reset ") 'Если нажать на кнопку 1 - произойдет сброс секунд
ResetSec()
case 1
Lcd_out(1, 1, "Minutes") ' Установка минут
SetMinutes()
case 2
Lcd_out(1, 1, "Hours ") ' Часов
SetHours()
case 3 ' Обнуляем menuitem, т.е. после 3-х нажатий на кнопку пункты меню будут крутиться по новой.
menuitem = 0
end select

end sub

'########################## Главная программа ########################
main:
TRISA = %11111111
ADCON1 = %10000110
press = 0
menuitem = 0

Soft_I2C_Init() ' Аналогично ЖКИ надо проинициализировать и I2C
Lcd_Init()
Delay_ms(200)
Lcd_Cmd(_LCD_CLEAR)
Lcd_Cmd(_LCD_CURSOR_OFF)

Lcd_Out(2, 1, "Time:") 'Т.к. это слово постоянно должно высвечиваться на экране, выводим его

while true ' А этот цикл будет крутиться бесконечно
GetTime() ' Считать время
DisplayTime() ' Подготовить считанные данные к выводу на экран
SelectMode() ' Проверить, не нажата ли вторая кнопка
Lcd_Out(2, 9, systime) ' Вывести подготовленные данные (ЧЧ:ММ:СС) на экран ЖКИ
wend ' возвратиться к while, и так все время, пока не выключим питание
end.

---------------------------
Про преобразование строки:
Переводим байты в строку:
ByteToStr(seconds,sec)
Как происходит преобразование - мы уже видели,
000 - преобразуется в "0"
001 - "1"
...
010 - "10"
100 - "100" - но это нам не грозит, т.к. время - это мах. число 59

видно, что байт может состоять из 1-го, 2-х или трех символов (0...255), а показания часов - двухзначные, значит надо что-то предпринимать. Следующие операторы сдвигают символы в строке на одну позицию влево, и отсекают последний символ, т.е., например, если имеем 045, получаем 45
text[0]=sec[1]
text[1]=sec[2]
text[2]=0 ' Обратите внимание, это не символ "0", а просто пустота, иначе получилось бы не 45 а 450

если же имеем, например, 005, то после предыдующего преобразования получим просто 5, некрасиво будет смотреться на экране. Поэтому, если 0-й символ равен пробелу (ASCII код - 32), то вместо него записываем "0" (Т.к. ноль - в кавычках, то это не число а символ)
if text[0] = 32 then text[0] = "0" end if
sec = text
Переменная text - промежуточная, сама она непосредственно нигде не высвечивается, присваиваем её значение переменной sec, чтоб в дальнейшем использовать text для преобразования минут и часов.
------------------------------
Здесь, да и раньше тоже, мы не останавливались на подробном описании команд, т.к. все это описано в HELP, и для того, чтобы полностью уяснить как работает та или иная команда надо читать её описание.

Далее (если еще не надоел), добавим к нашему устройству вольтметр, а может еще и термометр (IMG:style_emoticons/default/wink.gif)



Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Asdwarf
сообщение 23.10.2009, 21:14
Сообщение #15


Левша
*******

Группа:
Почетные ветераны
Сообщений: 1801
Регистрация: 19.2.2009
Из: Санкт-Петербург, Центр
Вне форума
Авто: VW CC 1.8MT

Репутация:   24  


В поисках программатора для PIC набрел вот на такую акцию: http://www.pickit2.ru/doku.php/form
Продают программатор за 565р. Есть разные магазины.
SSh говорит, что хорошая штука (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 23.10.2009, 21:42
Сообщение #16


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Очень хорошая и полезная. Позволяет писать помимо всех пик-ов еще и 24, 25 и 93 память, причем фирма периодически обновляет прошивки добавляя новые возможности из которых отмечу:
1. Внутрисхемное программирование (ICP) - не надо выпаивать МК из схемы
2. Возможность подачи питания от USB через него на отлаживаемое устройство (напряжение регулируется от 2,5 до 5 В - включается галочкой в оболочке программатора).
3. Автоматически распознает тип МК - если надпись стерлась - нет проблем - подключил и смотри что за чип.
4. Имеет внутреннюю память, т.е. если нет возможности подлезть с компом к какому-либо устройству можно залить прошивку в память программатора, потом уже без участия компьютера из программатора в МК (там кнопочка специальная для этого есть).
5. Имеет окно для редактирования области памяти МК.

Ну и быстрый в отличии от COM-овских.
Я покупал такой 3 года назад за чуть больше 100$, после чего повыкидывал все имеющиеся у меня программаторы. Сейчас попеременно пользуюсь или им - если надо отлаживать устройство на плате или входящим в состав EasyPic5 тоже USB-шным программаторам.

Вот мой PicKit2 вместе с самодельными адаптерами для всех пик-ов в дип корпусах и для вышеуказанных типов EEPROM. Кстати, на Lancer-ах в одометре использована 93 память.



Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 23.10.2009, 22:04
Сообщение #17


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Что-то я не нашел на сайтах упоминания об акции. На всякий случай советую связаться с дистрибютерами, а то мало ли что...
P.S. На прибалтийском сайте есть - PICkit 2 SPECIAL OFFER (more than a twice lower price)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Asdwarf
сообщение 23.10.2009, 22:49
Сообщение #18


Левша
*******

Группа:
Почетные ветераны
Сообщений: 1801
Регистрация: 19.2.2009
Из: Санкт-Петербург, Центр
Вне форума
Авто: VW CC 1.8MT

Репутация:   24  


Я вот тут нашел: http://easyelectronics.ru/forum/mcu-pic/pickit2
Сообщение номер 7
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 23.10.2009, 22:55
Сообщение #19


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Ну, хорошо. А то кидальщиков сейчас расплодилось... Сам знаешь.

А вот и я нашел, на Гамме

http://www.gamma.spb.ru/news.php?id=434
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 25.10.2009, 12:54
Сообщение #20


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Как уже отмечалось, с PicKit-ом удобно использовать универсальный адаптер для прошивки отдельных МК и EEPROM.
Выкладываю разводку такого адаптера, вернее 2-х, один для пиков, другой для микросхем памяти.
Прикрепленный файл  PickitHeader.rar ( 13,27 килобайт ) Кол-во скачиваний: 4199


В пик-адаптер можно вставлять и прошивать все виды пик-контроллеров (не dsPIC - это новая разработка Mikrochip, со встроенным аппаратным обработчиком цифровых сигналов) в 8, 14, 18, 20, 28 и 40 - выводных корпусах. Для удобства применены так называемые ZIF панельки (панельки с нулевым усилием), на фото выше видно, что это такое. Обратите внимание, что на панельках прорези под выводы микросхем - продолговатые - для того, чтобы можно было вставлять как широкие так и узкие микросхемы.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 9.11.2009, 9:36
Сообщение #21


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Ну как, кто-нибуть купил/получил PicKit? Что-то все молчат... (IMG:style_emoticons/default/dry.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Asdwarf
сообщение 10.11.2009, 21:44
Сообщение #22


Левша
*******

Группа:
Почетные ветераны
Сообщений: 1801
Регистрация: 19.2.2009
Из: Санкт-Петербург, Центр
Вне форума
Авто: VW CC 1.8MT

Репутация:   24  


Мутно там как-то...
Позвонил, сказали вышлют счет. Глухо...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 30.1.2010, 18:15
Сообщение #23


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Привет! Я собрал осцилограф на 4 канала на 16меге и хочу с исходником разобратся досканально чтобы расширить число каналов расширить до 6 и добавить один канал с возможнотью синхронизации от него
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 30.1.2010, 18:29
Сообщение #24


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


С mega-ми никогда дела не имел, так, что - извини не в курсе. Одно время заинтересовался осциллографами, даже собрал ADC21 - http://forum.roboclub.ru/IPBoard/index.php?showtopic=131 - , но понял, что в домашних условиях приличный прибор создать не смогу, тем более, что нашел вот это
http://www.seeedstudio.com/depot/dso-nano-...3230abfca7e5075
Уже выписал, со дня на день жду посылку.

А что за осциллограф у тебя, я вроде все, что есть в сети по этой теме изучил...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Engender
сообщение 30.1.2010, 18:37
Сообщение #25


Музыкальный JDM маньяк
*******

Группа:
Технический Маньяк
Сообщений: 4432
Регистрация: 10.7.2009
Из: Москва
Вне форума


Репутация:   191  


Похоже на бот.
Vituha - вам сутки на подтверждение, что вы не бот. Или в бан.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 30.1.2010, 18:43
Сообщение #26


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Цитата(Engender @ 30.1.2010, 22:37) *
Похоже на бот.
Vituha - вам сутки на подтверждение, что вы не бот. Или в бан.

А как подтвердить и что такое бот?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 30.1.2010, 18:52
Сообщение #27


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Цитата(SSh @ 30.1.2010, 22:29) *
С mega-ми никогда дела не имел, так, что - извини не в курсе. Одно время заинтересовался осциллографами, даже собрал ADC21 - http://forum.roboclub.ru/IPBoard/index.php?showtopic=131 - , но понял, что в домашних условиях приличный прибор создать не смогу, тем более, что нашел вот это
http://www.seeedstudio.com/depot/dso-nano-...3230abfca7e5075
Уже выписал, со дня на день жду посылку.

А что за осциллограф у тебя, я вроде все, что есть в сети по этой теме изучил...

Я нашол 4 канальник на какомто форуме с исходниками для ремонта машин, мне очень помогает
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
dmitrij_b
сообщение 30.1.2010, 20:14
Сообщение #28


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1802
Регистрация: 21.2.2009
Из: Екатеринбург
Вне форума
Авто: Lancer IX 1.6MT (105HP)

Репутация:   108  


2 Vituha а выложи схемы осцила с прошивками и исходниками. Поковыряем...
Я немножко с AVR-ами знаком.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 30.1.2010, 22:38
Сообщение #29


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Цитата(dmitrij_b @ 31.1.2010, 0:14) *
2 Vituha а выложи схемы осцила с прошивками и исходниками. Поковыряем...
Я немножко с AVR-ами знаком.

Я сейчас на форуме с телефона, завтра домой приеду и скомпа зайду и скину
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 30.1.2010, 23:20
Сообщение #30


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Цитата(SSh @ 30.1.2010, 21:29) *
С mega-ми никогда дела не имел, так, что - извини не в курсе. Одно время заинтересовался осциллографами, даже собрал ADC21 - http://forum.roboclub.ru/IPBoard/index.php?showtopic=131 - , но понял, что в домашних условиях приличный прибор создать не смогу, тем более, что нашел вот это
http://www.seeedstudio.com/depot/dso-nano-...3230abfca7e5075
Уже выписал, со дня на день жду посылку.

А что за осциллограф у тебя, я вроде все, что есть в сети по этой теме изучил...

Я adc21 делал он неплохо работает, скажи а будет продолжение статей по мк?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 30.1.2010, 23:44
Сообщение #31


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Цитата
Я adc21 делал он неплохо работает

Случайно не по моей разводке? (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/wink.gif)
Продолжения как такового - скорее всего нет, но вот в разных темах так или иначе кое-какие конкретные вопросы иногда обсуждаются. Здесь же была цель просто ознакомиться с МК, и то лишь потому, что есть некоторые конструкции на них - чтоб было понятнее. А так, кому надо - есть специализированные сайты, там и информации побольше и спецы поопытнее.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Titus
сообщение 31.1.2010, 1:07
Сообщение #32


Don Amadeus
*******

Группа:
Главные администраторы
Сообщений: 29954
Регистрация: 19.2.2009
Из: Russia, Sevastopol
Вне форума
Авто: Lancer IX-1.6 MT Turbo, Honda Accord IX-2.4 AT Executive.

Репутация:   466  


Цитата(Engender @ 30.1.2010, 17:37) *
Похоже на бот.
Vituha - вам сутки на подтверждение, что вы не бот. Или в бан.


Не, видно, что не бот, все оки, Егорыч (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 31.1.2010, 12:59
Сообщение #33


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Кстати насчет синхронизации. Как правило осциллографы на контроллерах работают след. образом:
Предположим в качестве дисплея использован графический LCD с разрешением 128х64 точек (в подавляющем большинстве случаев так и есть). Встроенный АЦП МК оцифровывает входной сигнал или сигналы после чего происходит преобразование в горизонтальную координату точки на экране. Но все это дело сразу на экран не выводится а сохраняется в буфере, организованном во внутреннем RAM контроллера. Для одного луча таких отсчетов (объем буфера) 128, для двух 256 и т.д. После заполнения буфера МК переводится в режим вывода накопленных координат на дисплей, после чего процесс повторяется. Сам вывод организован в виде цикла, состоящего из 256 шагов, где Х координатой является номер шага, Y координата - значение ячейки буфера с номером X.
Т.е. в то время, когда производится само измерение нет вывода на экран и наоборот. Буфер же начинает заполнятся не в произвольное время а только тогда, когда сигнал проходит через 0. Этот момент элементарно отследить программно.
Так вот если отсчет ведется с нулевого уровня сигнала, то и буфер заполняется с координатой Y=0, и вывод соответственно с точки с координатами 0,0.
Иными словами, получается автоматическая синхронизация...
И еще, увеличение числа каналов приведет к сужению полосы частот.


Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 1.2.2010, 10:12
Сообщение #34


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Цитата(SSh @ 31.1.2010, 16:59) *
Кстати насчет синхронизации. Как правило осциллографы на контроллерах работают след. образом:
Предположим в качестве дисплея использован графический LCD с разрешением 128х64 точек (в подавляющем большинстве случаев так и есть). Встроенный АЦП МК оцифровывает входной сигнал или сигналы после чего происходит преобразование в горизонтальную координату точки на экране. Но все это дело сразу на экран не выводится а сохраняется в буфере, организованном во внутреннем RAM контроллера. Для одного луча таких отсчетов (объем буфера) 128, для двух 256 и т.д. После заполнения буфера МК переводится в режим вывода накопленных координат на дисплей, после чего процесс повторяется. Сам вывод организован в виде цикла, состоящего из 256 шагов, где Х координатой является номер шага, Y координата - значение ячейки буфера с номером X.
Т.е. в то время, когда производится само измерение нет вывода на экран и наоборот. Буфер же начинает заполнятся не в произвольное время а только тогда, когда сигнал проходит через 0. Этот момент элементарно отследить программно.
Так вот если отсчет ведется с нулевого уровня сигнала, то и буфер заполняется с координатой Y=0, и вывод соответственно с точки с координатами 0,0.
Иными словами, получается автоматическая синхронизация...
И еще, увеличение числа каналов приведет к сужению полосы частот.

Спасибо доступно описано, а то что сужение частот то не беда 10кгц достаточно
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 1.2.2010, 10:29
Сообщение #35


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Опечатка просочилась... не 256 а 128 шагов, т.е. кол-во шагов равно горизонтальному разрешению примененного экрана, вернее ширине области вывода осциллограммы. Я встречал устройства, где правая или левая части были использованы для вывода информации (длит. развертки, чувствительность и т.д.)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 1.2.2010, 10:56
Сообщение #36


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Кстати вот здесь есть описание 6-канального осциллографа
http://www.ne.jp/asahi/shared/o-family/Ele.../AVRLogAna.html

Правда на японском, но можно перевесту Гуглем.
И исходники выложены, причем на более понятном Бейсике, так, что если надо что-то поменять - разобраться будет не трудно.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
dmitrij_b
сообщение 1.2.2010, 11:41
Сообщение #37


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1802
Регистрация: 21.2.2009
Из: Екатеринбург
Вне форума
Авто: Lancer IX 1.6MT (105HP)

Репутация:   108  


Это похоже не осцил, а логический анализатор. Если я правильно понял только картинки, без анализа текста...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 1.2.2010, 12:48
Сообщение #38


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Да, точно - анализатор.
На этом же сайте есть пара осциллографов одно- и двух-лучевые. Я все порывался собрать один из них, но теперь успокоился - жду заказанного DSO Nano...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Vituha
сообщение 5.2.2010, 19:35
Сообщение #39


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 7
Регистрация: 30.1.2010
Вне форума


Репутация:   0  


Я набросал проектик в c+ 2009 давайте вместе добьем его до логического завершения скажите кто знаком с c+?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.9.2010, 13:41
Сообщение #40


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Такой глобальный вопрос по поводу программы. Вот по поводу нажатий кнопок и загораний светодиодов. В моём текущем понятии, программа должна выполниться один раз и всё. Здесь же я так понял, программа как бы зацикленна бесконечно? Т. е. этот глобальный бесконечный цикл никак не объявляется, а он просто есть? И ещё, ведь событие происходит не тогда, когда кнопка нажата, а тогда, когда по тактовому генератору программа дошла до проверки кнопки и вот тогда если она нажата то выполнить то-то? Так?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.9.2010, 14:36
Сообщение #41


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Программа обычно должна работать в цикле, в выложенном примере цикл образуется командами while-wend
while true
....
....
....
wend

А можно и метками
main:
....
....
....
goto main
В принципе да, любая программа если нет ветвлений выполняется построчно, т.е. грубо говоря если распознавание нажатия кнопки идет на 5-й строке, то сначала выполняются первые 4, потом только проверка нажатия. Но это происходит так быстро, что паузу не почувствуешь...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.9.2010, 15:37
Сообщение #42


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Ага, всё, цикл нашёл, спасибо. (IMG:style_emoticons/default/smile.gif) Про быстроту выполнения программы я тоже понял. Кстати установил себе МикроПаскаль взломанный, класс! Теперь привычный язык! (IMG:style_emoticons/default/smile.gif) ) Ещё вопросик. Как запустить микроконтроллером что-нибудь тяжёлое? Например моторчик 12В 500мА. Ведь если на транзистор NPN подать на базу с МК 5В то ведь он не полностью "откроется" если на коллекторе 12В?
Ещё вопрос по старту. Старт он всегда начинается сам когда на МК подаётся питание? Или нужно обязательно MCLR через 10кОм на + подавать? А если скажем программа без цикла, то тогда МК в конце встанет просто? И на старт его можно сбросом через MCLR? Какая тут вообще логика? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.9.2010, 15:47
Сообщение #43


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Биполярные транзисторы вообще-то током управляются (IMG:style_emoticons/default/smile.gif) , т.е. если на коллекторе 500 мА и макс. выходной ток порта МК 10 мА, то надо ставить транзистор с соотв. допустимым током коллектора (лучше больше (IMG:style_emoticons/default/wink.gif) ) и коэффициэнтом усиления не менее 50.

Вот другое дело - полевики, есть же серия IRL - специально предназначенная для управления логическими уровнями до 5В.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.9.2010, 15:51
Сообщение #44


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


MCLR в некоторых МК можно вообще переконфигурировать под обычный порт. А так, на него сажают через 5,6...10кОм напряжение питания.
Все остальное что ты написал - верно (IMG:style_emoticons/default/smile.gif)

Насчет логики - кто его знает, мали ли что кому на ум взбредет. У меня все программы зациклены в бесконечный цикл.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.9.2010, 16:13
Сообщение #45


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Схемку бы конкретную с конкретными моделями (IMG:style_emoticons/default/blush.gif) (IMG:style_emoticons/default/blush.gif) (IMG:style_emoticons/default/blush.gif) (IMG:style_emoticons/default/happy.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.9.2010, 16:44
Сообщение #46


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Прикрепленное изображение

Транзистор, для описанного случая подойдет КТ972 и т.д.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.9.2010, 16:57
Сообщение #47


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


А, ну так всё также как и с логическими элементами было. Просто меня смутило, что с лог элемента у нас +12В выходило, а тут будет только +5. Или это не страшно?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.9.2010, 17:16
Сообщение #48


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


У логического элемента выходит напряжение питания, если запитать его от 5В - столько же и выйдет (IMG:style_emoticons/default/smile.gif)
Но я же уже писал - биполярные транзисторы управляются током а не напряжением.
Напряжение может быть очень маленьким - лишь бы пробить p-n переход, обычно надо 0,6...0,7В, а у германиевых транзисторов и того меньше...

Посмотри что выдал мне собранный вчера приборчик:
http://forum.amadeus-project.com/index.php...ost&p=42663

Uf=775m, это означает, что при 0,775В транзистор уже начинает открываться.

Вот, другое дело - полевики, они как-раз управляются напряжением, и для открывания нужно 10...12В для популярной серии IRF. Но есть еще серия IRL которая и предназначена для работы с логич. уровнями.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 5.10.2010, 19:23
Сообщение #49


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Блин, сколько информации (IMG:style_emoticons/default/smile.gif) Подскажи что я делаю не так? mikroPascal Pro for PIC. По задумке должны мигать диоды с порта B, а если нажать на кнопку А0 (подать на неё 5В), то они должны замигать по другому в процессе держания кнопки. На деле же просто мигает первым вариантом и на кнопку не реагирует. +5В на пин точно по кнопке подаётся. МК PIC16F627. Демоплата.
Код
program LED_Blinking;

begin

  TRISB:= %00000000;       // set direction to be output
  TRISA:= %00001111;       // set direction to be input

  While TRUE do
    begin
      PORTB:= %00101010;       // Turn OFF diodes on PORTB
      Delay_ms(100);      // 1 second delay
      PORTB:= %00010101;       // Turn ON diodes on PORTB
      Delay_ms(100);      // 1 second delay

      while PORTA.RA0 do
       begin
       PORTB:= %00000000;       // Turn OFF diodes on PORTB
       Delay_ms(100);      // 1 second delay
       PORTB:= %00111111;       // Turn ON diodes on PORTB
       Delay_ms(100);      // 1 second delay
       end;

    end;                   // Endless loop
end.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 5.10.2010, 19:42
Сообщение #50


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


С микропаскалем не знаком, хотя эти все компиляторы и похожи, но некоторые команды записываются по другому. Напр.заметил - while не ограничивается wend-oм. И еще PORTA.RA0 ? В паскале такая запись принята? В других компилляторах обозначается так PORTA.0
Далее - посмотри даташит на пик, не сидят ли на порту АЦП или компараторы? Если да - отключи. Притянут ли порт на землю?
А осцилляторы выставлены правильно?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 5.10.2010, 19:57
Сообщение #51


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Скачал Manual на Паскаль посмотрел. Цикл организован правильно, а вот обращение к порту надо PORTA.0
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 5.10.2010, 20:20
Сообщение #52


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Спасибо за подсказку, победил (IMG:style_emoticons/default/smile.gif) Надо было действительно выключить компаратор:
Код
CMCON:= %00000111;
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 5.10.2010, 20:27
Сообщение #53


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


(IMG:style_emoticons/default/smile.gif) Вот, начало положено. И совсем не сложно, так?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 5.10.2010, 20:32
Сообщение #54


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Угу! (IMG:style_emoticons/default/smile.gif) Просто в Паскале-то я нормально соображаю - хорошо на Делфях пишу, да тут от Паскаля только язык, а по сути всё равно нужно знать что для чего... Но начало положено (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 5.10.2010, 20:38
Сообщение #55


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Есть хороший ресурс с доп. библоитеками для паскаля, найду ссылку - выложу. А пока в принципе можешь поиграться с примерами из help-а, он хорошо продукоментирован.
И в разделе проектов на сайте есть много интересного...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 13.11.2010, 16:19
Сообщение #56


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


А как заставить выдавать нашу плату звук? Допустим есть излучатели звука - http://lib.chipdip.ru/054/DOC000054699.pdf Я так понял, что одни представляют из себя чисто динамик (отдельно нужно подавать на него колеблюющееся напряжение), а другие динамик вместе с генератором волны (и усилителем?)? Мне нужно, чтобы просто пищало (для начала). Что лучше выбрать - с генератором или просто излучатель - без? И какие варианты подключения? Наверное пока для меня самый интересный вариант, чтобы использовать "play_sound(freq, time)" процедуру в МикроПаскале, т. е. беру излучатель без генератора, смотрю, сколько А макс он ест (80мА вижу) и также через транзисторный ключ подключаю? А на вывод МК посылаю "play_sound" - меандр с заданной частотой? Или всё сложнее?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 13.11.2010, 16:26
Сообщение #57


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


От блин, а как подавать с ножки МК скажем "-5В"? (IMG:style_emoticons/default/smile.gif) Это т. е. надо вторую ножку задействовать и подавать поочерёдно +5В? А одной ножкой можно обойтись? (IMG:style_emoticons/default/smile.gif) Можно как-нить типа "DC Offset" сделать? (IMG:style_emoticons/default/smile.gif) Или можно забить и колебать динамик только в одну сторону?
Чем отличаются пьезо от электромагнитных? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 13.11.2010, 17:09
Сообщение #58


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Все верно, надо или взять со встроенным генератором и включать-выключать его подавая на него логич. уровень с вывода МК или чисто излучатель и подать на него однополярную (без -5В, только +) импульсную последовательность или тот же самый play_sound. 440 (880 и т.д.) Гц даст тебе ноту "Ля" (IMG:style_emoticons/default/smile.gif)

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

Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 13.11.2010, 19:57
Сообщение #59


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Т. е. и пьезо и магнитные бывают и с генератором и без? А электромагнитный излучатель без генератора - по сути просто маленький динамик, как во всех колонках-наушниках?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 13.11.2010, 20:29
Сообщение #60


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Все верно (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 13.11.2010, 20:39
Сообщение #61


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Блин, спасибо, что ты есть!!! (IMG:style_emoticons/default/smile.gif) Слушай, а можешь нарисовать самую, на мой взгляд, крутую модель - электромагнитный излучатель без генератора управляемый одной ножкой МК? И почему сюда нужно подавать однополярный сигнал? Я думал, что надо и минус тоже?..
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 13.11.2010, 21:10
Сообщение #62


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Посмотри здесь, не только схема, но и примеры кода (IMG:style_emoticons/default/smile.gif)
http://www.mikroe.com/eng/products/view/440/easybuzz-board/

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

A eще есть серия микросхем UM66TxxL - генераторы мелодий, если запитать от порта МК, то при подаче высокого уровня подключенный к выходу микродинамик (типа таких как используются например в модемах) начнет играть мелодию. Список мелодий можно посмотреть в даташите на микросхему.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.11.2010, 12:49
Сообщение #63


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Нашёл на просторах инета такую схему, пишут, что очень хитрая и классная. Что скажешь? Я вот не втыкаю ваще почему так (IMG:style_emoticons/default/smile.gif)
Прикрепленное изображение
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.11.2010, 17:01
Сообщение #64


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


А черт его знает, что это за схема... Динамик включен в качестве смещения транзистора. Надо проанализировать чем она может быть так крута... Лучше по-моему использовать классику - как на ссылке.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.11.2010, 17:37
Сообщение #65


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Из твоих слов понял только слово "смещение" (IMG:style_emoticons/default/smile.gif) Может как раз это и сместит сигнал 0..5В до -2.5В..2.5В? Ну и усилит до (сколько там надо) -5В..5В? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.11.2010, 18:13
Сообщение #66


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Нет, об отрицательном напряжении речь не идет. Смещение надо для перевода транзистора в активный режим, иначе он будет работать только в так называемом ключевом режиме - открыт-закрыт.
Если интересно - в двух словах поясню, Если база транзистора соединена непосредственно с портом МК (естественно через ограничительный резистор) то при отсутствии сигнала ток в цепи базы равен 0 и соотв. коллекторный ток тоже отсутствует. При поступлении сигнала - транзистор открывается и будет выдавать макс. коллекторный ток. Таким образом мы как-бы усиливаем дискретный сигнал, усиливать аналоговый таким образом нельзя т.к. из-за нелинейности ВАХ (вольт-амперной характеристики) транзистора на выходе получится неизвестно что. Вот для усиления аналоговых сигналов и надо сместить рабочую точку транзистора, т.е. организовать небольшой ток базы в отсутствии входного сигнала.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 18.11.2010, 10:51
Сообщение #67


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Ну ладно, не будем экспериментировать (IMG:style_emoticons/default/smile.gif) Тогда помоги плиз разобрать эту официальную схему:
Прикрепленное изображение
C1 = 100nF - это понятно.
E1 = 10uF - это конденсатор? Почему Е?
Buzzer - это я так понял к любому пину МК? Что должен выдавать этот пин - постоянное напряжение или колеблющееся по play_sound?
PZ1 - пьезоизлучатель? Они полярные или нет? С генератором или без? VCC это питание как на МК - 5В или любое, на которое рассчитан пьезик?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 18.11.2010, 11:28
Сообщение #68


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


10uF = 10мкФ. Допускается замена "мю" на "u".
А вот все остальное - это импровизация, "Е" - по-видимому от слова electrolytic, да и условное обозначение отличается от нашего (кстати и неполярный тоже)
Бузер подключается к любому пину, главное проинициализировать этот пин - Sound_Init(PORT, PIN). Работает от колеблющегося сигнала.
Пьезоизлучатель - любой (без генератора), подключать можно и к 5В и, если есть, к 12В.

Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 18.11.2010, 11:59
Сообщение #69


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


В схеме есть и 5В и 12В, т. е. я подключаю к тому напряжению, на которое рассчитан пьезик?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 18.11.2010, 12:28
Сообщение #70


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Да.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 12.12.2010, 19:17
Сообщение #71


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


А ты когда-нибудь работал по прерываниям? Допустим в основное время МК ничего не делает, а программа (кусок кода) срабатывает только когда например на входе появляется 1 вместо 0? Вроде так можно, читал в мануале, но хотелось бы примерчик работающий (IMG:style_emoticons/default/smile.gif) Pic 12F675.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 12.12.2010, 19:34
Сообщение #72


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


С аппаратными прерываниями (по входу INT, GP2 в 12F675) - просто пока такой необходимости не возникало, с прерываниями по таймеру - в примерах приведены образцы работающего кода:
Timer0 Interrupt
Timer1 Interrupt
Timer2 Interrupt

Для расчета прерываний по таймеру есть отличная программа, которая и код к тому же генерирует
Прикрепленный файл  TMRCalc.zip ( 160,38 килобайт ) Кол-во скачиваний: 1622


Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.12.2010, 16:44
Сообщение #73


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Сегодня перечитал даташит на указанную микруху.
Соотв. установкой регистра INTCON можно не только активировать GP2/INT но также вызывать прерывания и по изменению уровня сигнала на остальных входах GPIO.
И еще - по сигналу от компаратора или внутреннего АЦП а также по окончании записи во внутр. EEPROM.
Ну и естественно остаются прерывания по переполнению таймеров. Всего аж 7 (!) источников прерываний...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 15.12.2010, 17:01
Сообщение #74


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Ну да, а вот как их использовать? Например установил я INTCON на прерывание по GP0. А самой программы типа while true do ... у меня и нет (она ведь теперь не нужна?). Я же должен описать что-то типа "on gp0 change do ..." вот как правильно? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 15.12.2010, 17:12
Сообщение #75


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Конечно, не нужна. В MikroPascal-e (на нем пишешь если не ошибаюсь) да и в Си и бейсике есть специальная процедура interrupt куда передается управление при возникновении прерывания. А вот в теле этой процедуры и можешь писать те действия, которые надо выполнять при возникновании прерывания.
Вот пример из help - при каждом переполнении таймера TMR0 значение переменной counter увеличивается на единицу

procedure interrupt;
begin
counter := counter + 1;
TMR0 := 96;
INTCON := $20;
end;

Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 17.12.2010, 9:02
Сообщение #76


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Возвращаясь к адаптеру для PicKit2, упомянутом в сообщениях #16 (фото) и #20 (разводка)...
Если в разводке для PIC все ясно, то адаптер для прошивки EEPROM имеет некоторые особенности, а именно 2 джампера и резистор, предназначение которых не объяснено. Исправляю упущение (IMG:style_emoticons/default/smile.gif)
Разводка составлена согласно документации на PicKit2, в которой приведена таблица подключения программируемых микросхем памяти 24хх, 25хх и 93хх.
Прикрепленное изображение
Согласно этой таблице вывод 5 микросхемы 24хх должен подтягиваться к плюсу (pullup) а для остальных нет. Подтягивающий резистор - на 3...5,6кОм. Т.е. если программируем 24хх - джампер ставим, 25хх и 93хх - снимаем.
Прикрепленное изображение

Нижний джампер - для выбора типа организации памяти в микросхеме 93хх, для 8-битной надо соединить верхние два контакта (вывод 6 микросхемы на общий провод), для 16-битной - нижние (6 - на питание). Следует иметь в виду что некоторые микросхемы из этой серии имеют только один тип организации памяти (или 16 или 8 бит), а некоторые могут быть запрограммированы и так и так.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
jn79
сообщение 17.12.2010, 10:43
Сообщение #77


Новичок
*

Группа:
Новичок
Сообщений: 1
Регистрация: 16.12.2010
Вне форума


Репутация:   0  


Цитата(SSh @ 25.10.2009, 15:54) *
Как уже отмечалось, с PicKit-ом удобно использовать универсальный адаптер для прошивки отдельных МК и EEPROM.
Выкладываю разводку такого адаптера, вернее 2-х, один для пиков, другой для микросхем памяти.
Прикрепленный файл  PickitHeader.rar ( 13,27 килобайт ) Кол-во скачиваний: 4199


Отличный адаптер - стал недавно обладателем pickit2 и занялся поиском универсального адаптера использующего ZIF панели с поддержкой максимального числа МК. Есть много других вариантов (на одной панельке например) но они по некоторым причинам не устраивали (часть выводов под нежелательным питанием, использование миропереключателей итд и тп )
Я так понимаю зеркалить надо
Какие контроллеры прошивали ?

Сообщение отредактировал jn79 - 17.12.2010, 10:51
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 17.12.2010, 12:09
Сообщение #78


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


На двух по-моему удобнее. Просто хоть один из ZIF-ов надо поставить как у меня - с широкими контактами.
Прошивал все, и пики в разных корпусах (40, 28, etc.) и все три вида памяти - на втором адаптере. Плюс, прошивал все обозначенное и внутрисхемно и для отладки использовал питание через PicKit2.
Адаптер не совместим с dsPIC-ами (сам PicKit- прошивает, но адаптер должен быть другим)
Встречалась мне схема на одном ЗИФ-е, что мне не понравилось - разные пики надо ставить вразнобой, во кстати и этот адаптер. Рабочий или нет - не знаю, не проверял и даже не вникал (IMG:style_emoticons/default/wink.gif)
Прикрепленный файл  Adapter.rar ( 46,52 килобайт ) Кол-во скачиваний: 1656


Платы - да, надо зеркалировать.

Еще для программатора посоветую изготовить удлинитель, просто соединенные жгутом 6-контактные колодки папа и мама, не всегда удается подлезть к разъёму ICP...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 14.1.2011, 13:59
Сообщение #79


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


А можно ли при программировании, чтобы не запутаться в куче пинов, заранее обозначить как-нить так:

Код
Led1 := PORTA.0;
Led2 := PORTA.3;
Btn1 := PORTA.1;


А потом просто писать типа:

Код
if Btn1 then do
Begin
Led1:= 1;
Led2:= 0;
end;
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 14.1.2011, 14:53
Сообщение #80


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


В MikroBasic такая возможность есть, надо в начале программы записать что-то типа этого:

symbol Inputport = PORTB.0

Записывается именно в начале программы, до объявлений переменных и т.д.
В help-е на Паскаль я что-то не нашел такого, может в про версии присутствует (у меня её нет чтоб посмотреть)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 18.1.2011, 20:27
Сообщение #81


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Спасиб (IMG:style_emoticons/default/smile.gif)
А ты когда-нить паял ПИК в корпусе SSOP-20? Это вообще реально дома? (IMG:style_emoticons/default/smile.gif) Я платы делаю лазерным принтером на фотобумагу, потом хлорное железо, дорожки в 0.3мм получаются чётко, а вот как запаять? Я дорожки потом лужу в кастрюле сплавом Розе. Достаточно ли будет только слоя лужения Розе? Т. е. я просто поставлю МК на площадку и прогрею все ноги паяльником?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Titus
сообщение 18.1.2011, 20:38
Сообщение #82


Don Amadeus
*******

Группа:
Главные администраторы
Сообщений: 29954
Регистрация: 19.2.2009
Из: Russia, Sevastopol
Вне форума
Авто: Lancer IX-1.6 MT Turbo, Honda Accord IX-2.4 AT Executive.

Репутация:   466  


Есть еще такие штуки как паяльные фены, вот им паять подобно одно удовольствие (IMG:style_emoticons/default/wink.gif)
Для более крутых вещей (это уже ближе к матерям компов и тп) - инфракрасные паяльные станции.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 18.1.2011, 20:58
Сообщение #83


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Ну такое покупать не хочу, дорого пока для меня (IMG:style_emoticons/default/smile.gif) Паяльник нормальный тонкий, чистым жалом если поводить, припаяется к слою сплава Розе? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Titus
сообщение 18.1.2011, 21:13
Сообщение #84


Don Amadeus
*******

Группа:
Главные администраторы
Сообщений: 29954
Регистрация: 19.2.2009
Из: Russia, Sevastopol
Вне форума
Авто: Lancer IX-1.6 MT Turbo, Honda Accord IX-2.4 AT Executive.

Репутация:   466  


Должно (IMG:style_emoticons/default/smile.gif)
Кстати, паяльный фен - не такое уж и дорогое удовольствие, относительно, ессно, сравним по цене с неплохим паяльником с терморегулятором.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 19.1.2011, 12:04
Сообщение #85


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Народ, ещё пару вопросиков (IMG:style_emoticons/default/smile.gif)

1) Собираюсь переходить на SMD компоненты в дальнейшем. Для начала хочу закупить наборы резисторов. Как думаете, для наших с вами МК целей хватит "0805" (0.125Вт) или лучше остаться на 0.250Вт - "1206"? Вот считаю 0.125Вт как-то впритык хватает (IMG:style_emoticons/default/smile.gif) Это же 25mА@5V или 10mA@12V... Хотя впринципе там где надо 0.25Вт можно буд выводные ставить в редких местах...

2) Собираюсь перейти на внешние кварцы для МК, но тут есть 3 ветки я так понял: Кварцевые генераторы, Кварцевые резонаторы и Керамические резонаторы. Что используется чаще и проще всего обычно? Вроде обычная схема это Osc1 и Osc2 от МК в этот "кварц" и от этих 2х ног ещё по малеькому конденсатору на землю? Этот "кварц" неполярен? Так что их трёх лучше?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 19.1.2011, 12:30
Сообщение #86


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


1. Если речь идет только о МК, то и 0,125Вт за глаза хватит, большей мощности они и не выдают.
2. В тех схемах где не требуется жесткая стабилизация временных параметров можно вообще не ставить кварцев, частота внутр. генератора достаточна стабильна. Если-же все-таки нужен кварц - без разницы, ставь что удобно или что возможно достать. У меня, напр. нет 3-х ножечных, со встроенными конденсаторами, поэтому в основном применяю отдельный кварц + 2 конденсатора.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 19.1.2011, 12:47
Сообщение #87


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Вот тут где ты говоришь "Кварц" это "Кварцевый генератор", Кварцевый резонатор" или "Керамический резонатор"? (IMG:style_emoticons/default/smile.gif) Или "Керамический" тут вообще не при делах? Я хочу делать как в демосхеме - с двумя кондёрами и 2х-ножечным "кварцем".
Зачем они мне вдруг понадобились? Хочу сделать общение по RS-485 и где-то прочитал, что лучше использовать внешний более стабильный источник синхросигнала.
Вроде я хочу именно резонатор - http://www.chipdip.ru/catalog/quartz-resonators.aspx они дешевле (IMG:style_emoticons/default/smile.gif) У него 2 ноги равноценны?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 19.1.2011, 16:16
Сообщение #88


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Кварц и кварцевый резонатор это одно и то же
Керамический резонатор - по сути тот же самый прибор, отличается некоторыми характеристиками, напр. большей нестабильностью частоты. Но зато размеры у последних меньше.
При включении в цепь ножки у них равноценны. Для синхронизации МК кварц соединяется между ножками OSC1 и OSC2 а конденсаторы между каждой из ножек и корпусом.
Если прибор 3-х выводный, то скорее всего он со встроенными конденсаторами, среднюю ножку сажаем на корпус, 2 остальных опять - как попало.

Кварцевый генератор - ясно из названия, генератор, частота которого стабилизирована кварцем могут быть как самодельными так и выпускаемые промышленностью. При использовании для синхронизации с МК выходной сигнал с генератора обычно подают на вывод OSC1.

В любом случае необходимо также правильно сконфигурировать МК согласно выбранному методу и частоте синхронизации. Информация об этом есть в даташитах на конкретный МК.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 19.1.2011, 16:18
Сообщение #89


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Терь всё понял! Спасибо! (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
AlexGreat
сообщение 19.1.2011, 17:21
Сообщение #90


LED маньяк
*******

Группа:
Почетные ветераны
Сообщений: 1114
Регистрация: 4.7.2009
Из: Russia, Moscow, ЮЗАО, Belyaevo Village
Вне форума
Авто: Lancer V STW AWD

Репутация:   50  


Цитата(NeWT @ 18.1.2011, 20:27) *
Спасиб (IMG:style_emoticons/default/smile.gif)
А ты когда-нить паял ПИК в корпусе SSOP-20? Это вообще реально дома? (IMG:style_emoticons/default/smile.gif) Я платы делаю лазерным принтером на фотобумагу, потом хлорное железо, дорожки в 0.3мм получаются чётко, а вот как запаять? Я дорожки потом лужу в кастрюле сплавом Розе. Достаточно ли будет только слоя лужения Розе? Т. е. я просто поставлю МК на площадку и прогрею все ноги паяльником?


SSOP-20 совершенно беспроблемно паяется руками. А если будет жало "микроволна" то паяется еще проще. (IMG:style_emoticons/default/smile.gif) Если душа иногда требует эстетики, то можно через трафарет паяльной пасты мазнуть, сверху чип, на подогревной столик и сверху горячим воздухом. Подогрев снизу, чтобы не было температурного шока и плату не коробило. Хотя в последнее время на пасту только QFN сажаю. А нормальные выводы и так беспроблемно паяются. Только флюс не жалеть в месте пайки.
Кстати что касается керамических резонаторов, то размеры у них как раз больше чем у кварцевых резонаторов, а вот точность и стабильность частоты гораздо хуже. Соответственно и стоимость меньше. Керамические фильтры да, размерами обычно меньше, но и по параметрам до кварцевых естественно не дотягивают. Примерно так. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 19.1.2011, 17:42
Сообщение #91


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Во блин, ну лан, попробуем (IMG:style_emoticons/default/smile.gif) А то до этого я только PDIP'ы паял (IMG:style_emoticons/default/smile.gif) Ну видать в SMD монтаже проще паять мелочь...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
AlexGreat
сообщение 19.1.2011, 17:44
Сообщение #92


LED маньяк
*******

Группа:
Почетные ветераны
Сообщений: 1114
Регистрация: 4.7.2009
Из: Russia, Moscow, ЮЗАО, Belyaevo Village
Вне форума
Авто: Lancer V STW AWD

Репутация:   50  


Я 0402 руками паяю, и вроде ничего, пока не умер от этого... (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 19.1.2011, 17:46
Сообщение #93


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Про пайку мелких микросхем можно посмотреть здесь:
http://easyelectronics.ru/pajka-planarnyx-...ikrovolnoj.html

Хотя я сам паяю обычным паяльником
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 20.1.2011, 12:30
Сообщение #94


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Блин, что-то я переоценил силы... 0.3мм дорожки от SSOP не переносятся у меня утюгом (IMG:style_emoticons/default/sad.gif) Может текстолит был зафаканный...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 20.1.2011, 13:08
Сообщение #95


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Ребят, никак не пойму. Допустим я выбрал кварцевый резонатор: ссыль.
Далее смотрим даташит с картинкой по подключению:
Прикрепленное изображение
Смотрим таблицы: 14-1 для керамических резонаторов - не подходит. 14-2 для "Crystal Oscillator" - кварцевых генераторов? Тоже не подходит. А для Crystal Resonator нету. Далее там уже про другое в даташите. И в каких случаях надо резистор RS (и сколько?)? Или всё же моя таблица - 14-2 и я беру 15-30pF Mode HS?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
dmitrij_b
сообщение 20.1.2011, 13:48
Сообщение #96


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1802
Регистрация: 21.2.2009
Из: Екатеринбург
Вне форума
Авто: Lancer IX 1.6MT (105HP)

Репутация:   108  


Crystal Oscillator, в данном случае и есть кварц. (IMG:style_emoticons/default/wink.gif)

Генератор, это отдельная схема, возможно застабилизированная кварцем. И подключается он по другому, всего на один вывод, скорее всего на OSC1.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 20.1.2011, 14:04
Сообщение #97


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Ок, понял, а резюк RS нужен? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 20.1.2011, 16:07
Сообщение #98


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Oscillator=Resonator
Резистор не нужен.
В таблице все четко прописано, для кварцевых резонаторов - для какой частоты какие фьюзы ставить.
Конденсаторы - ставь тоже как в таблице, я затоварился на 22пФ, везде ставлю их.
Дорожки делай 0,4мм
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
AlexGreat
сообщение 20.1.2011, 23:41
Сообщение #99


LED маньяк
*******

Группа:
Почетные ветераны
Сообщений: 1114
Регистрация: 4.7.2009
Из: Russia, Moscow, ЮЗАО, Belyaevo Village
Вне форума
Авто: Lancer V STW AWD

Репутация:   50  


Цитата(NeWT @ 20.1.2011, 12:30) *
Блин, что-то я переоценил силы... 0.3мм дорожки от SSOP не переносятся у меня утюгом (IMG:style_emoticons/default/sad.gif) Может текстолит был зафаканный...


А с ЛУТом всегда так. чем плата меньше, тем дорожки тоньше и нормально получаются. Ну и FR-4 нужно внимательней смотреть, иногда попадается с фольгой на 18мкм, причем не лучшего качества, сделан так, что рельеф стеклоткани проступает. На таком ЛУТом 0,2/0,2 это сродни, как это... душевным терзаниям.. (IMG:style_emoticons/default/biggrin.gif) Из того, что в Мск пробовал, лучшим оказался стеклотекстолит от Matsushita. Там все правильно сделано, и травится равномерно. Хотя для больших плат, на самом дел, пленочный фоторезист в помощь, но только правильный, например AGFA.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 3.2.2011, 13:57
Сообщение #100


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Где-то писал, но не помню... Про пайку мелких микросхем. На всякий случай продублирую....
Недавно попробовал новый способ - получилось. Суть в том, что во время пайки не мучаясь просто запаиваешь весь ряд, выводы и с дорожками на плате и с друг-другом. После чего расплавляя припой (насколько захватит жало) отсосом высасываем излишки. Никакой особой сноровки не требуется...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post

10 страниц V   1 2 3 > » 
Fast ReplyReply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Быстрый заказ, позвонить +7-978-708-85-73
Дроссель Amadeus Productions. Быстрый заказ по телефону.
(Viber, WhatsApp, Telegram)
Amadeus Productions Дроссельный узел на Lancer IX 1.6 (4G18), 2.0 (4G63) и другие моторы
Ремкомплект РХХ на Mitsubishi Lancer IX, 1.6 (4G18), MD619857, 1450A116
Облегченный маховик на 1.6 (4G18) и другие моторы
Облегченные шкивы на 1.6 (4G18) и другие моторы
One-touch или "Ленивые поворотники"