Быстрый заказ, позвонить +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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Ну что, начнем. Заранее заявляю, что я сам тоже новичок в этом деле, так, что если что не так с удовольствием приму и критику и замечания и дополнения.
Что такое микроконтроллер (МК)? Это микросхема которая сама по себе АБСОЛЮТНО ничего не умеет делать в отличии от даже самой примитивной логики. Для того, чтобы заставить МК выполнять какую-нибуть работу надо прошить (загрузить) в него программу. МК выпускаются многими фирмами - 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  « < 2 3 4 5 6 > »   
Start new topic
Ответов (60 - 79)
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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Посмотри здесь, не только схема, но и примеры кода (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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


А черт его знает, что это за схема... Динамик включен в качестве смещения транзистора. Надо проанализировать чем она может быть так крута... Лучше по-моему использовать классику - как на ссылке.
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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Нет, об отрицательном напряжении речь не идет. Смещение надо для перевода транзистора в активный режим, иначе он будет работать только в так называемом ключевом режиме - открыт-закрыт.
Если интересно - в двух словах поясню, Если база транзистора соединена непосредственно с портом МК (естественно через ограничительный резистор) то при отсутствии сигнала ток в цепи базы равен 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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Да.
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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


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

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


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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Сегодня перечитал даташит на указанную микруху.
Соотв. установкой регистра 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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Конечно, не нужна. В 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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


Возвращаясь к адаптеру для 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-х, один для пиков, другой для микросхем памяти.
[attachment=2354:PickitHeader.rar]


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

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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


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


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

Еще для программатора посоветую изготовить удлинитель, просто соединенные жгутом 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


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

Группа:
Администраторы
Сообщений: 7044
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   263  


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

symbol Inputport = PORTB.0

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

10 страниц V  « < 2 3 4 5 6 > » 
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 или "Ленивые поворотники"