Въведение в Микроконтролерите Пловдив/2015-02-21
TRANSCRIPT
Микроконтролери(за абсолютно начинаещи)
Въведение в микроконтролерите
2015-02-21, Hackafe Пловдив
Copyright © 2015, Neven Boyanov
This work by Neven Boyanov is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Въведение в микроконтролерите
2015-02-21, Hackafe Пловдив
Copyright © 2015, Neven Boyanov
This work by Neven Boyanov is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Какво е това микроконтролер
Интегрална схема, съчетаваща в себе си микропроцесор, тактов генератор, оперативна памет и входно-изходни устройства, което и позволява да функционира ̀като самостоятелно компютърно устройство.
Какво можем да правим с микроконтролер – нещо просто
Какво можем да правим с микроконтролер – нещо сложно
Как се програмира микроконтролер
Трябват ни …● Компютър● Програматор ● Микроконтролер
Как работи микроконтролера
Как контролираме битовете
Примерна програма
#include <avr/io.h>
int main(void) {
DDRB |= (1 << PB3);
DDRB &= ~(1 << PB4);
while (1) {
if (PINB & (1 << PB4) == 0) {
PORTB |= (1 << PB3);
} else {
PORTB &= ~(1 << PB3);
}
}
return (0);
}
Мигащ светодиод
#include <avr/io.h>#include <util/delay.h>int main(void) { DDRB |= (1 << PB3); while (1) { PORTB |= (1 << PB3); _delay_ms(200); PORTB &= ~(1 << PB3); _delay_ms(400); } return (0);}
Мигащ светодиодстъпка 1
#include <avr/io.h>● Включване на
стандартните за за микроконтролера дефиниции с помоща на #include директивите.
Мигащ светодиодстъпка 2
#include <avr/io.h>
int main(void) {
return (0);}
● Главната за програмата main() функция.
Мигащ светодиодстъпка 3
#include <avr/io.h>
int main(void) { DDRB |= (1 << PB3);
return (0);}
● Настройка на PB3 като изход.
Мигащ светодиодстъпка 4
#include <avr/io.h>
int main(void) { DDRB |= (1 << PB3); while (1) {
} return (0);}
● Задаване на безкраен цикъл wihle(1) за изпълнение на програмата.
Мигащ светодиодстъпка 5
#include <avr/io.h>
int main(void) { DDRB |= (1 << PB3); while (1) { PORTB |= (1 << PB3);
PORTB &= ~(1 << PB3);
} return (0);}
● Последователно установяване на изхода в …– 1 = високо ниво
– 0 = ниско ниво
… съответстващо на включване и изключване на светодиода.
Мигащ светодиодстъпка 6
#include <avr/io.h>#include <util/delay.h>int main(void) { DDRB |= (1 << PB3); while (1) { PORTB |= (1 << PB3); _delay_ms(200); PORTB &= ~(1 << PB3); _delay_ms(400); } return (0);}
● Задаване на закъснение след всяко включване и изключване.
Среда за разработка
Windows● WinAVR / AVR-GCC
Linux● AVR-GCC
$ make ...
$ avrdude ...
make
avrdude
Практика
Въпроси
?
Контакти и препратки
Невен Боянов● https://twitter.com/boyanov● https://www.facebook.com/boyanov● http://www.boyanov.org
Tinusaur● http://tinusaur.org● https://www.facebook.com/tinusaur
Programmers' Club in Veliko Turnovo● http://www.pcvt.org● https://www.facebook.com/groups/pcvt.org/
Невен Боянов● https://twitter.com/boyanov● https://www.facebook.com/boyanov● http://www.boyanov.org
Tinusaur● http://tinusaur.org● https://www.facebook.com/tinusaur
Programmers' Club in Veliko Turnovo● http://www.pcvt.org● https://www.facebook.com/groups/pcvt.org/
Бонус
Tinusaur : Какво е това?Tinusaur : Какво е това?
● Платка с ATtiny85 микроконтролер
● Минималния брой компоненти нужни на микроконтролера
● Конектор за програмиране на микроконтролера
● Малка батерия и държач● Отвори за монтиране
Проста и евтина платформа за абсолютно начинаещи и нетърпеливи помагаща да се научат бързо как да работят с микроконтролери
Какви са целите?Какви са целите?
Относно хардуера ...● Да се научим как да
подбираме необходимите компоненти
● Да се научим как да запояваме и сглобяваме
За 1 час!!!Осигуряване на необходимите компоненти, помощни инструменти и знания, за да завършите всичко от начало до край в рамките на 1 час или по-малко
Относно софтуера …● Да се научим как да инсталираме,
настроим и ползваме средата за разработка.
● Да се научим как да пишем прости програми за микроконтролери
Какво включва Проекта Тинузавър?Какво включва Проекта Тинузавър?
● Дизайна на Тинузавър ● Ръководствата
● Проекти с Тинузавър● Уроци и примерни програми.
Екстри: Add-on платкиЕкстри: Add-on платки
Hello World!Hello World!
#include <avr/io.h>#include <util/delay.h>// Define the I/O port to be used for the LED.#define LED_PORT PB3int main(void) { // Set the LED port number as output. // The DDRB is the data direction for port B.
DDRB |= (1 << LED_PORT); // Start an infinite loop. while (1) { // Set the LED bit to "1" - LED "on"
PORTB |= (1 << LED_PORT); _delay_ms(200); // Wait a little. // Set the LED bit to "0" - LED "off"
PORTB &= ~(1 << LED_PORT); _delay_ms(400); // Wait a little. } return (0);}
Проекти използващи ТинузавърПроекти използващи Тинузавър
Сравнение с други подобниСравнение с други подобни
Сравнение по параметриСравнение по параметри
Raspberry Pi Arduino Uno ATtiny85/Tinusaur
Processor ARM11 – 32-bit RISK ATmega328P 8-bit RISK ATtiny85 – 8-bit RISK
Frequancy 700 MHz 16 MHz 1 MHz
Memory RAM 256/512 MB 2 KB 512 B
Memory PRG On-board SD slot 32 KB, 1 KB EERPROM 8 KB, 512 B EERPROM
Input/Output 8×GPIO, UART, I²C, SPI ... 6 analog, 14 digital 6 analog/digital
Peripheral USB, audio & video, HDMI - -
OS Linux, etc. - -
Dimensions 85×56 mm 53×68 mm 23×36 mm
Weight 45 гр. 28 гр. 9 гр.
Power 500mA, 700–1000 mA 50 mA 1-2 мА, 300 µA (0.1 µA)
Cost 35 USD 20 USD (10 USD) 5 USD (8 USD Starter)
Кой би могъл да го използва?Кой би могъл да го използва?
● Абсолютно начинаещите, не е необходим никакъв почти опит
● Програмисти които са нетърпеливи да научат как работи хардуера
● Учители и преподаватели в училища, университети и др.
Кой не би могъл да го използва?Кой не би могъл да го използва?
Това може да се окаже дразнещо за хора които ...
● Експерти по хардуера● Експерти по
микроконтролери● Специалисти по и
Raspberry Pi● Които мразят C/C++ :)
Където ...● Има нужда от повече памет● Има нужда от бърз
процесор● Има нужда от по-голям
брои входно-изходни канали
Къде се използва в момента?Къде се използва в момента?
В обучението:● Училища, извънкласни
форми● Университети, като
допълнителен материал● Университети в чужбина
● Лични проекти
Ще бъде използвано в ...● летни училища по
електроника и роботика
Как се очаква в бъдеще?Как се очаква в бъдеще?
● Подобрени ръководства● Подобрени онлайн уроци● Повече проекти
● Повече add-on платки– Сензори– Дисплеи– Безжична комуникация
Може би …Нова платка с ARM базиран Cortex M0+ процесор, напр. Atmel SAM D10/D11
● Видео уроци
КонтактиКонтакти
http://tinusaur.org
http://facebook.com/tinusaurhttp://twitter.com/tinusaur
… или просто Google: "tinusaur"