Суббота, 18.05.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2016 » Октябрь » 23 » Программирование микроконтроллеров
22:24
Программирование микроконтроллеров

Программирование микроконтроллеров

Сегодня будет чуть про этим микросхемы, но в список с номерами я это включать не хочу. Там только то что руками трогать приходилось.
Во-первых, вопрос с GPS-автопилотом без компьютера снялся. Если штука поддерживает хоть какой-то язык умеющий вычитать и складывать, то расчётную программу на нём написать можно.
Во-вторых, чуть про то, что это такое. Тут очередной раз встретились оборудование (любое), которое что-то делает и объект как придуманная абстракция со свойствами и методами. Я тут писала про то как из DOS появился WINDOWS:
http://akostina76.ucoz.ru/blog/2016-09-16-3441

… и как работа с прерываниями и подключенными устройствами трансформировалась в работу с множеством запущенных программ.
Но ведь компьютер целиком это тоже устройство. И методы с событиями у него есть. Это те самые функции прерываний, которые отрабатывают при определённых событиях. И даже свои обработчики событий у него есть. Когда в DOSe писался свой обработчик какого-то события это и был собственный обработчик события устройства под названием «компьютер целиком».
Микроконтроллер это такой маленький компьютер, т.е штука способная получать информацию тем или иным способом и отправлять её. А между этим происходят какие-то действия, т.е какая-то интеллектуальная обработка информации. Программист может написать программу, которая и определит, что и как будет выполняться.
Тут:
http://akostina76.ucoz.ru/blog/2016-10-21-3539

… я не ошиблась с интерпретацией того, что такое функции loop()  и Setup(). Это действительно обработчики событий, в которых программист может написать что угодно:
http://arduino.ua/ru/prog/

loop()
После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле, позволяя вашей программе совершать вычисления и реагировать на них. Используйте её для активного управления платой Arduino.

… Почему это тут названо операторами я не знаю. В других местах это более близко называется всё теми же прерываниями (от структуры DOS) или функциями API (от терминологии Windows, не точно и означает скорее низкий уровень, максимально приближенный к железу).
Обработчиком события я это тоже могу называть по форме работы. Т.е надо просто написать текст с нужным названием (это на обработчик события больше похоже). У конкретно этого микроконтроллера два события – прерывания. Первое происходит при запуске, второе постоянно, пока не выключат питание (запрос информации и вывод информации на экран).
А ват ранее помянутое от РадиоКота:
http://radiokot.ru/circuit/digital/game/51/

Здесь другой микроконтроллер. Не Arduino а AVR для проигрывания музыки. Это другой маленький «компьютер» с другим назначением и, соответственно с другими событиями, которым надо написать обработчики:
void Player_StartMelody( const flash TMelody* _pMelody, uint16_t _delay );
Начать воспроизведение мелодии. _delay задаёт начальную задержку перед воспроизведением, 255 единиц = 1 секунда.
void Player_Stop();
Прекратить воспроизведение мелодии.
bool Player_IsPlaying();
Возвращает false, если воспроизведение мелодии завершено.
void Player_WaitFinish();
Подождать, пока воспроизведение мелодии завершится.
void Player_TimerFunc();
Эту функцию нужно вызывать ( в прерывании от таймера ) с частотой семплирования, заданной в конфигурации.
Когда воспроизведение мелодии завершено, вызовы можно не делать.

void Player_Output( uint8_t sample );
Должна быть реализована пользователем. Вызывается плейером, когда необходимо вывести следующий семпл.
void Player_Started();
Должна быть реализована пользователем. Вызывается, когда плейер начинает воспроизводить мелодию.

Может быть использована для настройки прерываний от таймера.
void Player_Finished();
Должна быть реализована пользователем. Вызывается, когда плейер завершил воспроизведение мелодии.

Может быть использована, чтобы отключить прерывания от таймера, или запустить воспроизведение другой мелодии.
Прошивка такого контроллера это отчасти аналог биоса компьютера, т.е некая постоянная информация (в отличии от оперативной памяти, которая очищается при выключении). Если при запуске компьютера нажать и не отпускать какой-то кнопку, то будет предложено войти в подобные постоянные настройки. В других местах (где-то меняемые где-то нет) записаны другие программы, которые находятся по уровню ниже чем операционная система. В настойках, например, можно установить где, т.е на CD-DVD или жёстком диске искать установщик операционной системы (что-то же должно запустить те первые команды, когда операционная система ещё не установлена, этим и занимается низкий аппаратный уровень). Он же проводит начальные проверки. Например проверяет наличие клавиатуры и не идёт дальше если её нет (выводя стандартное сообщение).
Wi-Fi роутер, позволяющий входить в Интернет с разных устройств тоже имеет свой внутренний микроконтроллер. Он тоже каким-то определённым образом реагирует на информацию, которую ему передают. А ещё у него есть удобный диалог для настроек (и это только одна из вещей которые умеет этот «компьютер»):

В этом диалоге обычно можно загрузить какую-то другую прошивку:

Как реагировать на то, что пользователь затребовал окно настроек тоже, скорее всего, есть в файле прошивки. Где-то же должно быть записано какой HTML текст отправлять браузеру.
Микроконтроллеры на компьютеры похожи, но ими не являются. Потому не возьмусь утверждать с чем лучше сравнивать прошивку с БИОСом или настройкой операционной системы.
Но задавать какие-то реакции микросхемы где-то с помощью языка (Arduino) а где-то с помощью прошивки (ESP8266) можно.
Сюда же для компании:
1] Подробно про взаимодействие Arduino и маленького дисплея:
http://www.poprobot.ru/home/Arduino-TFT-SPI

2] Ещё один вид микроконтроллера (со своими событиями), а на выходе работающий датчик температуры:
https://habrahabr.ru/post/116709/

3] Ещё один датчик температуры:
https://habrahabr.ru/hub/controllers/

4] Документация по ESP8266
http://esp8266.ru/downloads/esp8266-doc/#wpfb-cat-1
(в числе прочего AT-команды, на которое приучено реагировать это средство связи). Знакомство было давно и недолго. Всё, что от него осталось – смутные ассоциации с древним модемом при виде окна настроек ESP8266. Средства связи реагируют на AT-команды. Знаменитая шутка про менеджера связи: мол «что да безобразие?  звоню к вам в офис, а ваш менеджер связи на меня шипит» это, насколько понимаю, шипение модема обменивающегося информаций через такие AT команды. Но, могу ошибаться.
5] Человек разбирается как BlueTooth работает: http://lobotryasy.net/learning_bluetooth_part_1.php

Тоже радиосвязь, ничем не хуже Wi-Fi.
6] Примеры по использованию Arduino:
http://edurobots.ru/kurs-arduino-dlya-nachinayushhix/

Шутки шутками, а ведь действительно пылесос по квартире гонять теперь можно, настроев его на объезд мебели, если он вдруг встретит препятствие.
Набор датчиков для Arduino:
http://www.chipdip.ru/product/sensors-pack/

1 х Датчик газа (MQ-5 Gas Sensor);
1 х Датчик цвета (Color Sensor);
1 х Датчик пламени (Flame Sensor);
1 х Датчик Холла (Hall Sensor);
1 х Датчик ИК отражающий (Infrared Reflective Sensor);
1 х Датчик лазерный (Laser Sensor)
1 х Датчик влажности (Moisture Sensor);
1 х Датчик вращения (Rotation Sensor);
1 х Датчик звука (Sound Sensor);
1 х Датчик температуры и влажности (Temperature-Humidity Sensor);
1 х Датчик наклона (Tilt Sensor);
1 х Датчик УФ (UV Sensor);
1 х Датчик уровня жидкости (Liquid Level Sensor);

… т.е того, от чего он может получать информацию, программно обрабатывать и как-то на неё реагировать.
Всё это вместе означает, что к вообще любому железу типа автомобиля теперь можно прикрутить электронику неограниченной сложности. Датчиками можно всё померить, а силами местного процессора рассчитать а потом как-то отреагировать или просто вывести на экран.
Электронику с еропланам будем придумывать позже. При всей фантастичности во-первых хороший пример, т.к вот уже где куча информации которую и показывать и анализировать надо, во-вторых, если уж кому-то машинный автопилот потребовался, то кто знает кому и что потребуется чуть позже.
А пока примитивное. Есть курятник зимой на даче, а есть люди в квартире и на работе. А дверку на ночь лучше закрывать чтобы тепло не выпускать. Обычная настройка по фоторезистору, №8 отсюда:
http://akostina76.ucoz.ru/blog/2016-02-28-2669

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

Просмотров: 251 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz