- Высококачественный низкопотребляющий 8- битный AVR микроконтроллер
- Передовая RISC архитектура
— 133 команд, большинство которых выполняется за один тактовый цикл
— 32 8 битных рабочих регистра общего применения
— Полностью статическая архитектура
— производительность до 16 MIPS при тактовой частоте 16 МГц
— встроенный двухцикловый умножитель - Энергонезависимая память программ и данных
— 128 КБ внутрисистемно программируемой Flash памяти программы, способной выдержать 10 000 циклов записи/стирания
— вспомогательная секция загрузочной программы с независимым битом защиты
выбираемый размер загрузочной памяти: 1, 2, 4 или 8 КБ
внутрисистемное программирование встроенной программой-загрузчиком через UART или CAN
реальная функция считывания при программировании
— 4 КБ EEPROM, способной выдержать 100 000 циклов записи/стирания
— 4 КБ встроенной SRAM памяти (статическое ОЗУ)
— возможность работы с внешней памятью объемом до 64 КБ
— Программируемая защита от считывания - JTAG (IEEE 1149.1 совместимый) интерфейс
— Возможности граничного сканирования в соответствии со стандартом JTAG
— Программирование битов защиты Flash и EEPROM
— Поддержка встроенной отладки - CAN 2.0A и 2.0B контроллер
— 15 полных сообщений объектов с раздельными метками и масками
— Режимы передачи, приема, автоматического ответа и приема кадров
— Максимальная скорость передачи 1 МБит/с при рабочей частоте 1 МГц - Характеристики периферии
— Программируемый сторожевой таймер со встроенным генератором
— 8- битный синхронный таймер/счетчик 0
10 – разрядный предварительный делитель
внешний счетчик событий
выход сравнения или 8 – битного ШИМ сигнала
— 8- битный синхронный таймер/счетчик 2
10 – разрядный предварительный делитель
внешний счетчик событий
выход сравнения или 8 – битного ШИМ сигнала
32 кГц генератор для выполнения функций часов реального времени
— Два 16- битных синхронных таймера/счетчика 1 и 3
10 – разрядный делитель
вход захвата с подавителем шумов
внешний счетчик событий
три выхода сравнения или 16- битного сигнала с ШИМ
выход модулятора сравнения
— 8 канальный 10 битный SAR АЦП
8 несимметричных каналов
7 дифференциальных каналов
2 дифференциальных канала с программируемым коэффициентом усиления 1, 10 или 100
— Встроенный аналоговый компаратор
— Байт- ориентированный последовательный 2- проводный интерфейс
— Двойной программируемый последовательный USART
— Ведущий/ведомый SPI интерфейс - Специальные характеристики микроконтроллера
— Сброс при включении питания и детектор кратковременных пропаданий питания
— Встроенный откалиброванный генератор
— 8 внешних источников прерывания
— Пять режимов пониженного потребления: Idle, ADC Noise Reduction, Power-Save, Power-down и Standby
— Программное переключение рабочей частоты
— Отключение всех подтягивающих транзисторов - Порты ввода — вывода и корпусное исполнение
— 53 программируемых линии портов ввода-вывода
— 64 выводные TQFP, QFN и CA-BGA корпуса - Диапазон напряжения питания
— от 2.7 до 5.5 В - Индустриальный и автомобильный рабочие температурные диапазоны
- Максимальная рабочая частота:
— 8 МГц при 2.7 В питании у микроконтроллеров с индустриальным диапазоном
— 16 МГц при 4.5 В питании у микроконтроллеров с индустриальным диапазоном - 0.5 мкА при напряжении питания 1.8 В
Блок- схема ATMega128CAN11:
Расположение выводов ATMega128CAN11:
ATMega128CAN11 – низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATMega128CAN11 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.
AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.
ATMega128CAN11 имеет следующие характеристики: 128 КБ внутрисистемно программируемой Flash память программы, 4 КБ EEPROM память данных, 4 КБ SRAM (статическое ОЗУ), 53 линии ввода — вывода общего применения, 32 рабочих регистра общего назначения, CAN контроллер, часы реального времени, четыре гибких таймера/счетчика со схемой сравнения и генератором сигнала с ШИМ, 2 USART, байт- ориентированный последовательный 2- проводный интерфейс, 8 канальный АЦП, программируемый сторожевой таймер со встроенным генератором, SPI порт, JTAG порт с поддержкой внутрисистемной отладки и пять программно инициализируемых режима пониженного потребления.
В режиме Idle останавливается ядро, а SRAM, таймеры/счетчики, SPI/CAN порт и система прерываний продолжают функционировать. В Power-down режиме содержимое регистров сохраняется, но останавливается задающий генератор и отключаются все внутренние функции микропроцессора до тех пор, пока не произойдет прерывание или аппаратный сброс. В режиме Power-save асинхронные таймеры продолжают функционировать, позволяя отсчитывать временные интервалы в то время, когда микропроцессор находится в режиме сна. В режиме ADC Noise Reduction останавливается вычислительное ядро и все модули ввода-вывода, за исключением асинхронного таймера и самого АЦП, что позволяет минимизировать шумы в течение выполнения аналого-цифрового преобразования. В Standby режиме задающий генератор работает, в то время как остальная часть прибора бездействует. Это позволяет быстро сохранить возможность быстрого запуска приборов при одновременном снижении потребления.
Читайте также: Что такое диагональная конструкция шины
Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс программой-загрузчиком, выполняемой в AVR ядре, или обычным программатором энергонезависимой памяти. Программа-загрузчик способна загрузить данные по любому интерфейсу, имеющегося у микроконтроллера. Программа в загрузочном секторе продолжает выполняться даже при загрузке области памяти прикладной программы, обеспечивая реальный режим «считывания при записи». Объединив 8- битное RISK ядро и самопрограммирующейся внутри системы Flash памятью корпорация Atmel сделала прибор ATMega128CAN11 мощным микроконтроллером, обеспечивающим большую гибкость и ценовую эффективность широкому кругу управляющих устройств.
Видео:Программирование МК AVR. УРОК 24. Знакомство с шиной SPIСкачать
CAN или не CAN? Или зачем мне сеть микроконтроллеров?
Этот вопрос мне пришлось задать себе лет десять назад или больше. Работа, которую надо было сделать, заключалась в дарении второй жизни диспетчерскому щиту. Это такая штука во всю стену, состоящая из лампочек и выключателей с переключателями. Думаю, не ошибусь, предположив, что щиты стали делать с тех пор, как появились лампочки, поскольку выключатели к тому времени, наверняка, уже были известны. А тяга к прекрасному, вообще, пришла к людям из далекой древности.
Сейчас многие предпочтут щитам дисплейные панели. Но будут ли любители дисплеев в большинстве, зависит от многого, нам неведомого. Но сейчас речь не об этом.
Каждый, кто может в течение пяти минут поддерживать разговор об электропроводке, сразу скажет мне, что щит состоит из плоских панелей, на которых размещены выключатели и лампочки, а также из ящика со множеством проводов. Ведь лампочка без проводов только для того и годится, чтобы ее или тупо разбить или, если подойти творчески и включить воображение, разместить у самого пытливого во рту и довольно быстро узнать, где находится травмпункт.
Все так и было, куча проводов, уходящих из ящика к выключателям и лампочкам, только лампочки — маленькие. Видимо, внучки знаменитой лампочки Ильича.
И вот, помнится, глянул за окно, а там 21-й век. Стало быть надо все делать заново и по-другому. Вместо лампочек — экономичные светодиоды. Вместо проводов — проводки. Вместо одного ящика — много-много маленьких ящичков, контроллеров, стало быть.
Оказалось, что если каждый контроллер сможет обслуживать четыре светодиода и два переключателя то это будет выглядеть оптимальненько. В смысле, не так ужасающе. А если через все контроллеры будет проходить шина питания и информационная шина, всего четыре провода, то появится некое изящество. Оказалось также, что контроллеров потребуется 104 штуки. По-хорошему, тут надо было бы поставить и решить задачу коммивояжера. И тогда, возможно, контроллеров потратили бы меньше. Но было не до хорошего.
К тому времени я уже знал, что такое CAN и уровень моего уважения к фирме Bosch был много выше, нежели у повара приличного ресторана или аккуратной домохозяйки. А производители автомобилей BMW, я уверен, даже ходили к инженерам Bosch в гости.
Controller Area Network, как сказали бы иностранцы, на мой взгляд, как техническое решение, возникло из желания сделать что-то, наконец, хорошо. Не скрою, все прелести результатов работы инженеров почувствуешь не сразу, как осилишь два тома стандарта, а значительно позже. Когда пообщаешься с очевидцами, опросишь свидетелей. Сейчас томов прибавилось, но, может быть, можно сразу начинать с третьего, поскольку, теперь оно называется CAN_FD. Однако, позвольте продолжить.
Еще до столкновения со щитом мне пришлось столкнуться с чужими инженерными решениями на тему использования CAN, а также наделать и своих ошибок. Ошибки обычно появляются в перерывах между чтением инструкций и изучением описаний. Хорошо, что только со второго раза они выглядят как грабли.
Читайте также: Характеристики шин для киа рио
Видео:Введение в AVR микроконтроллерыСкачать
Теперь несколько тысяч слов для читателя, который терпимо относится к занудам и не считает их врагами.
CAN можно установить там, где раньше работал RS485 на витой паре. Витая пара — это не непременное условие, просто удобно сравнивать. Используя витую пару, по CAN, как и по RS485, можно передать сообщения от управляющего контроллера к подчиненному и получить ответ. Сходство бросается в глаза, но, давайте лучше остановимся на отличиях. Кое-какие из отличий могут нести знак минус для некоторых из читателей. Но им бы я посоветовал не огорчаться, а вспомнить закон Ломоносова.
Благодаря синхронной организации протокола разрешение коллизий на шине реализовано аппаратно, на лету, так сказать. Ниже отмечено, к чему это приводит и что это дает непоседливому инженеру.
Можно получить сообщение и без запроса.
Не надо ждать, когда ответ будет готов, можно спросить в это время еще кого-то.
Подчиненный контроллер тоже может спросить и получить ответ.
Из-за синхронной работы длина шины CAN обратно пропорциональна скорости передачи или типа того.
Максимальная скорость составляет 1 Мбод (10 — на подходе).
То, что сообщение не исказилось при передаче отправляющий знает сразу после последнего бита. Точнее, это знают все на шине.
Если сообщение исказилось для одного, попытка не засчитывается всеми.
Если сообщение удалось передать в шину, то абонент не получит его лишь при условии, что сломался.
Количество контроллеров на шине не должно превышать 127.
Сообщения ограничены по длине. Они состоят из идентификатора, указателя длины в байтах и блока данных, именно с таким количеством байт, как указано. Есть еще несколько служебных битов, но о них пока помолчим, поскольку сервис должен быть ненавязчивым. Идентификатор может быть размером 11 или 29 бит. Блок данных может содержать от 0 до 8 байт (64 — на подходе).
Для конкретики приведу немного цифр. Если хочется работать на скорости 1Мбод, то длина шины не должна быть больше 35 метров (некоторые предпочитают 40, то есть, погорячее). Если необходимо передать что-то на расстояние до 8 км, то скорость не должна превышать 5 Кбод. Кстати, читатель вправе спросить, почему килобод, а не килобит? Потому, что не все боды становятся битами. Как-то так.
Как можно распорядиться всеми этими совсем не секретными ингредиентами? Те, кто во всем видят игру в кубики, сразу вспомнят, что есть такая замечательная вещь, как CANopen и еще много красивых сочетаний и аббревиатур и нечего изобретать велосипед. Таким мне часто хочется ответить: «Разве не похожа на велосипед та яичница из двух яиц, которую многие готовят себе на завтрак? Почему бы не сходить в общепит и не взять себе омлет?». Но я лучше промолчу и продолжу, не отвлекаясь на выкрики из зала.
В те времена, когда 29 битовый идентификатора еще не успели придумать, существовал только 11 битовый. Одни его стали использовать, чтобы запихнуть туда название (номер) нужного вида данных. Другие использовали как адрес контроллера, к которому обращаются. И то и другое имело смысл. Например, можно спросить так:
- А подай-ка нам, милейший, шато тринадцатого года в литровой бумажной упаковке.
Заверните мне, пожалуйста, то, что спрятано у вас на самой нижней полке справа.
Кстати, в CAN может сработать и такая конструкция:
Всем лежать! А ты быстро складывай все с полок мне в сумку.
Но этой конструкцией часто не попользуешься, поскольку после придется какое-то время ждать.
Ждать пока все ответы не выстроятся один за другим и не поступят в распоряжение запрашивающего контроллера. Мы уже ушли от кино, если что.
Меня в моем случае устроил бы вариант идентификатора в качестве адреса. Из 11 бит требовалось 7 и еще 4 оставалось на то, чтобы сделать одни сообщения более срочными по сравнению с другими, а также пометить часть контроллеров как главные.
Некоторое неудобство перекочевало сюда из RS485, а именно, адреса надо было устанавливать вручную на каждом контроллере. Затем проверять и переустанавливать. И, возможно, вернуться к предыдущему шагу и повторить.
К счастью, к тому времени уже существовали два обстоятельства.
Видео:STM32 CAN шина. Часть 1. Настройка и странности HALСкачать
Читайте также: Размер шин для альмеры классик
Первое — уже появился 29 битный идентификатор. А второе то, что многие производители микроконтроллеров стали считать хорошим тоном условие, чтобы каждый чип имел свой уникальный и довольно длинный номер.
Теперь в длинном идентификаторе можно было 24 бита смело отвести для уникального адреса. Еще 5 оставалось, для заботы о том, чтобы поезда различались срочностью, направлением (туда, обратно), наличием вагона-ресторана и вагонов с повышенным комфортом.
Если перестать дурачиться и сделаться серьезным, назвать подчиненных контроллеров агентами, а остальных боссами, то можно составить таблицу. Она будет показана немного позже.
Еще немного про адресацию. Уникальный номер чипа, как правило, занимает количество битов значительно превышающее 24, например, 96 у STM32FXXX. Поэтому необходимо как-то получить 24 из 96. Я выбрал операцию XOR. Вы можете выбрать что-то другое, но небольшая проблема останется. Это совпадения адресов после редуцирования.
Вероятность появления этой проблемы крайне мала, но она есть. Она решаема, но добавляет работы наладчикам. Здесь надо вспомнить, что сообщения CAN могут не содержать данных совсем. Это нам и пригодиться при решении. Оно состоит из следующих действий.
Управляющий контроллер (босс) отправляет широковещательный запрос, на который должны ответить все агенты (это запрос с нулевым адресом). Ответные сообщения с нулевой длиной данных и совпадающими адресами не испортят друг-друга, а достигнут босса в виде одного.
Теперь останется подсчитать сколько получено ответов и сколько их должно быть. Если эти два числа совпадают, значит все в порядке. Если ответов меньше чем контроллеров, то налицо совпадение адресов и наладчикам есть работа. А если ответов больше, нежели контроллеров, то надо подумать о диссертации, поскольку, вы — на пороге открытия.
Если изменение длины сообщения рассматривать как некоторые вариации его смысла, то можно получить дополнительные возможности, о которых позже расскажу, если мама не позовет кушать.
Еще из интересного, если использовать и короткие и длинные идентификаторы одновременно, то можно получить, например, адресацию групп или частично широковещательные запросы. Но не будем пока углубляться.
Вернемся к кодированию идентификатора.
Видео:ДОКТОР AVR! 🚑 Лечим микроконтроллерыСкачать
Для целей адресации в расширенном идентификаторе отведено 24 бита, а в стандартном – шесть. Адрес со значением 0x000000 является широковещательным для расширенного идентификатора. Для стандартного идентификатора нулевой адрес (6 его бит) также считается широковещательным. Пять начальных (старших) битов в длинном и коротком идентификаторе, называются заголовком, влияют на смысл сообщения и обозначаются буквами NVADR:
Конечно, для диспетчерского щита потребовалось реализовать только часть этой схемы. В первом проекте со щитом (или на щите, как правильно?) использовались чипы Cortex от NXP, а в следующих проектах (были и такие) уже применялись M0 от STMicroelectronics.
Пару слов об использовании коротких идентификаторов. Те шесть бит, которые отводятся для адресации, адресуют не контроллер, а группу. Эта группа при старте сначала у всех нулевая. Далее производится конфигурирование агентов, после которого часть из них или все становятся принадлежащими своей группе. Теперь запросом к группе, мы получаем ответы тех агентов, которые мы собрали в эту группу.
Теперь, немного о том, что добавляется, если по-разному трактовать сообщения с различной длиной данных. Например, запрос с нулевой длиной хорошо помогает при отладке, как уже упоминалось выше. Запрос с длиной 3 обслуживает пространство байтовых переменных размером 16384. Запрос с длиной 4 делает то же самое, но предназначен для агента-шлюза, который обслуживает CAN шину второго уровня. Эта шина может состоять из одного-двух агентов, зато удаленных на пару километров.
Запрос с длиной 5 и 6, аналогично, предназначены для пространства двухбайтовых переменных размером 4194304. Два бита используются не для адресации. Один бит управляет записью-чтением. Другой сигнализирует об ошибке.
Далее 7 и 8 обслуживают четырех байтовые слова. Их тоже 4194304.
Эти пространства являются общими для всех агентов. Каждый из них, в зависимости от предназначения, использует только отрезок пространства переменных. Контроллер для измерения температуры в двух точках представлен на фото. Это для отладки и тестирования.
Соединяются контроллеры плоским шлейфом на 6 жил. На питание идут сдвоенные. Микросхема о двадцати ногах — это STM32F042.
С обратной стороны присутствует MAX3051, формирователь CAN в корпусе SOT23-8.
Ну вот, мама кушать зовет.
Видео:Ошибки при прошивке микроконтроллера. 12 частых ошибок при программировании микроконтроллеровСкачать
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
📺 Видео
ATMEL. Микроконтроллеры для автопрома - ...Скачать
Микроконтроллеры AVR. С чего начать. Выбор микроконтроллера. Atmega8Скачать
Металлизация переходных отверстий в реальной работе. Разработка индикатора CAN шины на STM32F103.Скачать
Внешние прерывания микроконтроллера | Микроконтроллеры с нуля #14Скачать
2 урок. Выбор микроконтроллераСкачать
Микроконтроллеры AVR. С чего начать. Выбор программатора. USBASP V2.0Скачать
Proteus | AVRDUDE | Отладка и прошивка микроконтроллеров AVR | Микроконтроллеры с нуля #5Скачать
Кварцевый резонатор | Настройка фьюзов | Микроконтроллеры с нуля #16Скачать
Микроконтроллеры ATMEL - AT89C2051-24PUСкачать
AVR Boot loader Using CAN BusСкачать
Как просто научиться программировать микроконтроллеры PIC и AVR / Бегущие огни за 8 минут!Скачать
STM32 или AVR. Как изучать программирование микроконтроллеров.Скачать
Микроконтроллеры avr для начинающих ( расширяем порты микроконтроллера)Скачать