• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

72 сообщения в этой теме

admin    2 264

Запускаем новый видеокурс по микроконтроллерам семейства STM8. Курс планируем сделать интересным и интерактивным. Будут различные задания для проверки ваших знаний. От вас хотим услышать обратную связь и активное обсуждение, а также ждем любых вопросов!

Ведет курс Василий (Профиль на сайте cxem.net для доната: i80186)

Урок #1:

Рассмотрены основные особенности микроконтроллеров серии STM8 серии STMicroelectronics. Проведено сравнение их с микроконтроллерами фирм Atmel и Microchip. Так же уделено внимание средствам разработки и отладки для данных микроконтроллеров, требующимся для начала работы с ними, а именно среде IAR EMBEDDED WORKBENCH для STM8 и отладочному набору на базе микроконтроллера STM8S105 - STM8S-DISCOVERY.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
admin    2 264

В первом уроке были проблемы со звуком, во втором постарались исправить этот недочет

Рассмотрены основы работы со средой разработки IAR для микроконтроллеров STM8. Описана установка среды, создание проекта в ней, рассмотрены основные инструменты отладки.

Среда IAR

STM8 Lesson-2.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
admin    2 264

Урок #3:

Подключение STM8S-DISCOVERY. Разбор работы портов ввода-вывода. Простейшая программа.

Он-лайн тест

Урок #4:

Разбор работы модуля тактирования и таймер TIM4. Пример программы.

Он-лайн тест

Урок #5:

Практика 1. Измерение расстояния УЗ датчиком HC-SR04. Датчик парковки

lesson3.rar

lesson4.rar

lesson5.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4

Спасибо за курс!

А можете сделать уроки для тех кто работал с Ардуино и знает Си. Но не работал с полноценной Атмегой, Пиком, СТМом и тд

Многие вещи не очень ясны.

- Если есть настроение, хоть как то расскажите о регистрах более подробно.

- А так же о том, как тут работают прерывания.

- Некоторые команды не ясны. #pragma, TIM4_OVR_UIF_vector, pragma vector=TIM4_OVR_UIF_vector

- Если не лень, пожалуйста комментируйте код более подробно.

- __enable_interrupt(); что это за функция?

Изменено пользователем IDis

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Настроение есть. Уроков будет много. Они задуманы, как последовательный рассказ о настройках периферийных узлов процессора, применительно к созданию некого электронного устройства.

#pragma - это команда для компилятора. В в данном контексте она задаёт адрес вектора прерывания TIM4 для функции обработки прерывания по переполнению таймера.

__enable_interrupt(); - это стандартная для С функция. Находится в стандартной библиотеке intrinsics.h. Разрешает глобальное прерывание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 209

какой смысл в STM8, когда есть STM32F030 мне кто нибудь здесь сможет толково обьяснить? Может я чего не знаю?

видеокурс по очередному тупику эволюции МК

Работать ради работы конечно можно. Героически снимать видео и тешить ЧСВ. Но пользы от этого будет мало. Кого то это введет в заблуждение, а ктото просто плюнет на эти модные STM-ки и будет продолжать грызть меги и пики. Не в обиду. Чисто мнение со стороны

Все что говорится в первом ролике было бы актуально лет 5-7 назад и то с натяжкой на фоне AVR, но не сегодня. Стартовый набор для 32-ой стоит 5 долларов. Это уже коммерческая цена. Компилятор бесплатный, поддерживает полностью С++

Я сравнивал 8-ку и 32 так и сяк и пришел к выводу что по стоимости они в одной нише, это раз. Корпусировка доступна та же, если надо. Инструменты разработчика для 32 наааамного круче. Ресурсов самого камня (не знаю как точно сравнить, но все равно скажу так) - на порядок больше. И самое главное - 32 проще 8-ки, такой вот парадокс. Последний гвоздь в крышку гроба - разрядность. Ну вы понимаете о чем я

Изменено пользователем mail_robot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

какой смысл в STM8, когда есть STM32F030 мне кто нибудь здесь сможет толково обьяснить? Может я чего не знаю?

видеокурс по очередному тупику эволюции МК

Работать ради работы конечно можно. Героически снимать видео и тешить ЧСВ. Но пользы от этого будет мало. Кого то это введет в заблуждение, а ктото просто плюнет на эти модные STM-ки и будет продолжать грызть меги и пики. Не в обиду. Чисто мнение со стороны

Все что говорится в первом ролике было бы актуально лет 5-7 назад и то с натяжкой на фоне AVR, но не сегодня. Стартовый набор для 32-ой стоит 5 долларов. Это уже коммерческая цена. Компилятор бесплатный, поддерживает полностью С++

Я сравнивал 8-ку и 32 так и сяк и пришел к выводу что по стоимости они в одной нише, это раз. Корпусировка доступна та же, если надо. Инструменты разработчика для 32 наааамного круче. Ресурсов самого камня (не знаю как точно сравнить, но все равно скажу так) - на порядок больше. И самое главное - 32 проще 8-ки, такой вот парадокс. Последний гвоздь в крышку гроба - разрядность. Ну вы понимаете о чем я

А если я с TI начну сравнивать... Это ОБУЧАЮЩИЕ видео, тут обучают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 209
Это ОБУЧАЮЩИЕ видео, тут обучают.

уже есть прекрасный (я считаю) видеокурс по авр-кам. Чем ваша обучалка конкретно лучше той? Если провести по итогу дифанализ, то отличия будут только в описании отдельных специфических блоков, которых не так уж и много. Принципиально 8-битки мало чем друг от друга отрываются. Все примерно на одной линии. Разве что конечно АВР дороже как по корпусам, так и по стоимости оборудования для толковой работы в режиме отладки в железе.

Прошло время, появились STM8. Намного позже, но с похожим возом проблем. Появились по всей видимости чтобы заткнуть дырку в бюджете ST. Стало понятно что в таком виде конкурировать с атмелом они не смогут, слишком много проблем и мало аргументов в пользу перехода на 8-ки. Сделали ставку на лицензированное ядро Cortex и полную переработку архитектуры. В итоге появились STM32. Причем в широчайшей линейке, перекрывающей в том числе и нишу STM8 как по возможностям, так и по цене, но с несравнимо более дешевым и экономичным циклом разработки от идеи до готового решения.

Вот это вот можно еще сравнивать. Лепить сюда TI было весьма непрофессионально с вашей стороны. Это совсем иная ниша и другие деньги.

Что я могу сказать еще в качестве аргументов за 32-ю серию против 8-ой

1. Компилятор бесплатный и очень крутой. Отсылать за кряком на торренты в видео было не очень красиво. Ресурс то публичный

2. Среда разработки далеко не убогий IAR

3. Есть мощнейшее средство администрирования ресурсов и автокодинга. Сокращает затраты на пустой код иниток раз в 20 по времени

4. Есть операционная система реального времени. Еще сокращает расходы на кодинг раз в 10. Помигать светодиодом? 5 минут ровно. Можно на скорость сделать за 2, при этом 99,99999% времени ядра будут свободны для других задач. При этом ни один таймер не будет задействован.

5. Производительность. Простейший камень за доллар работает на частоте 72 мегагерца на 32 разрядах. Ваши 16 мегагерц? Я улыбаюсь

6. DIP40 для домашнего использования. Не вопрос

7. Программатор-отладчик - 2 бакса

8. ЦАП/АЦП 12 разрядов. 10 уже давно мало для многих даже простых задачек

Лично обучил несколько студентов от полного нуля до состояния - дядя, отойди я дальше сам за неделю.

STM8 - тупик к сожалению. Разрабатывать что-то новое на нем смысла никакого нет

Изменено пользователем mail_robot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    249

mail_robot, вы не правы, разводя срач не по существу. Полезное оно или нет пусть разбираются те, кому эта тема интересна. Я вообще считаю все подобные обучающие видео бесполезными (текстовый материал удобнее), но если кому-то помогает - да на здоровье. Я уверен, если смотреть никто не будет это демотивирует лучше.

Посмотреть само видео не получается, так что по существу оценить не могу - дается ли там нормальная теория или только набор шаманских ритуалов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 209

первый ролик вообще в принципе можно и не смотреть, там бла бла про то какие замечательные камни 8-ки и про планы на курс

второе видео как устанавливать иар и куда там тыкать. Просто видео про иар

я вот тоже согласен с тем, что текстовый вариант обучалки эффективнее. Можно быстро пропустить ту часть материала которая не интересна, просто бегло по тексту. Выбрать рубрику которая нужна и ее проштудировать. В текст можно вставить ссылки на сопутствующие материалы, если нужно. Листинги примеров с текста тоже лучше воспринимаются.

человек занялся, пусть делает

Изменено пользователем mail_robot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

а когда будет третий урок ?

Скоро будет. Выздороветь выздоровел. Клавиатуру отбитую нашёл, моя сдохла. STM8S-DISCOVERY приехало. Будут порты ввода вывода, самый простой таймер. "хеллоу Ворлд!" с миганием свеетодиодиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4
Будут порты ввода вывода, самый простой таймер. "хеллоу Ворлд!" с миганием свеетодиодиком.

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

Например PD_DDR_bit.DDR7 почему именно такие названия даны. Или что это? PD_CR1_bit.C17 Без понятия логики, придется зубрить, а зубрешка надолго в голове не останется

Изменено пользователем IDis

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10
Будут порты ввода вывода, самый простой таймер. "хеллоу Ворлд!" с миганием свеетодиодиком.

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

Например PD_DDR_bit.DDR7 почему именно такие названия даны. Или что это? PD_CR1_bit.C17 Без понятия логики, придется зубрить, а зубрешка надолго в голове не останется

Это не я так называю, это так названы они в заголовочном файле. Чтоб было нагляднее откройте менюшку Регистры в режиме дебагара и посмотрите как они названы там. Ну или описание самого процессора. Это обращения к конкретным битам конкретного регистра процессора в общем. PD - port D, DDR - data derection registr, bit - обращение к биту, ну и его название. Придумали видимо разработчики процессора, на английском так попонятнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4

Надеюсь, мы тут не отбили желание продолжить делать данный курс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Надеюсь, мы тут не отбили желание продолжить делать данный курс?

Нет. Просто микрофон пришлось из Китая ждать новый. Ролик очередной уже готов. Скоро опубликовать должны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
admin    2 264

В третий пост добавлен третий урок.

В этот раз видеокурс у нас будет интерактивным и для третьего выпуска подготовлен он-лайн тест. После просмотра видео вы можете проверить себя как вы усвоили материал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4

Конспект к лекции 3

e2bd1af9aa1c.jpg

макс размер таблицы

IDR - входной регистр

ODR - выходной регистр

DDR - регистр направления (вход / выход)

CR1 - регистр управления

  • на выходе задет либо стандартный выход (1), либо усиленный выход(0)
  • на входе подключает подтягивающий резистор(1), либо ножка болтается и ловит помехи(0)

CR2 - регистр управления

  • на выходе: задет либо стандартную скорость 2мГц (0), либо быструю 10 мГц(1)
  • на входе: запрещает прерывания(0), или разрешает прерывания(1)

ccb8e7ea42fat.jpg

PD_DDR_bit.DDR0 = 1; // порт D0, ножка на МК 41 сконфигурирован как выход (1).
PD_CR1_bit.C10 = 1; // порт D0, ножка 41 подключен как стандартный выход (1)(не расчитан на повышенную нагрузку)
PD_CR2_bit.C20 = 1; // порт D0, ножка 41 сконфигурирован на повышенную скорость работы 10мГц(1) (иначе 2мГц)

PD - порт D (для порта С запись будет иметь следующий вид PC_DDR_bit.DDR0=1;)

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

bit - указывает что значение может быть либо 1 либо 0

DDR0 - порядковый номер порта D равен 0 (для порта C5 (ножка 30) запись будет иметь вид PC_DDR_bit.DDR5=1;)

С10 - порядковый номер порта. (для порта C5 (ножка 30) запись будет иметь следующий вид: PC_CR1_bit.C15=1;)

//Дополнительный пример конфигурации вывода на вход.

PC_DDR_bit.DDR5=0; // Порт C5 ножка на микроконтроллере 30, сконфигурирован на вход (0).
PC_CR1_bit.C15=0; // Не использовать подтягивающий резистор (0)
PC_CR2_bit.C25=0; // не использовать прерывания (0)

распиновка на плате (провод вверху)

616213bb80b2.jpg

========================================================================================================

ВОПРОСЫ ПО ЛЕКЦИИ:

- зачем нам ODR и IDR если мы тоже самое можем сделать с помощью DDR ? Что те конфигурируют вывод на вход или выход, что этот.

- все ли я правильно записал, в конспекте?

- что такое P-Buffer?

Изменено пользователем IDis

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

IDR - входной регистр

ODR - выходной регистр

DDR - регистр направления (вход / выход)

CR1 - регистр управления

  • на выходе задет либо стандартный выход (1), либо усиленный выход(0)
  • на входе подключает подтягивающий резистор(1), либо ножка болтается и ловит помехи(0)

CR2 - регистр управления

  • на выходе: задет либо стандартную скорость 2мГц (0), либо быструю 10 мГц(1)
  • на входе: запрещает прерывания(0), или разрешает прерывания(1)

Не усиленный выход, а выход с мнимым открытым коллектором, т. е. верхний транзистор на структурной схеме в описании называемый P-buffer, отключён.

PD_DDR_bit.DDR0 = 1; // порт D0, ножка на МК 41 сконфигурирован как выход (1).
PD_CR1_bit.C10 = 1; // порт D0, ножка 41 подключен как стандартный выход (1)(не расчитан на повышенную нагрузку)
PD_CR2_bit.C20 = 1; // порт D0, ножка 41 сконфигурирован на повышенную скорость работы 10мГц(1) (иначе 2мГц)

PD - порт D (для порта С запись будет иметь следующий вид PC_DDR_bit.DDR0=1;)

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

bit - указывает что значение может быть либо 1 либо 0

DDR0 - порядковый номер порта D равен 0 (для порта C5 (ножка 30) запись будет иметь вид PC_DDR_bit.DDR5=1;)

С10 - порядковый номер порта. (для порта C5 (ножка 30) запись будет иметь следующий вид: PC_CR1_bit.C5=1;)

PC_DDR_bit.DDR0 - вся запись едина и неделима. Это просто перевод сокращений для данного компилятора. Возможны другие обозначения.

для порта C5 (ножка 30) запись будет иметь следующий вид: PC_CR1_bit.C5=1; Нет PC_CR1_bit.C15=1; Опечатка наверное.

//Дополнительный пример конфигурации вывода на вход.

PC_DDR_bit.DDR5=0; // Порт C5 ножка на микроконтроллере 30, сконфигурирован на вход (0).
PC_CR1_bit.C15=0; // Не использовать подтягивающий резистор (0)
PC_CR2_bit.C25=0; // не использовать прерывания (0)

========================================================================================================

ВОПРОСЫ ПО ЛЕКЦИИ:

- зачем нам ODR и IDR если мы тоже самое можем сделать с помощью DDR ? Что те конфигурируют вывод на вход или выход, что этот.

- все ли я правильно записал, в конспекте?

- что такое P-Buffer?

Регистр DDR задаёт напрявление передачи данных, сами же данные соответственно пишутся и читаются в и из регистров ODR и IDR. Т.е. конфигурирует только DDR.

P-buffer- название того самого транзистора, который необходимо отключить, дабы получить выход с открытым коллектором. Для чего они записали это его в таблицу, без понятия))

Кстати порты имеющие литеру T(PE0 и PE1) имеют реальный выход с открытым коллектором, можно повысить выходное напряжение до 6,5В путём включения режима open-drain и подключения подтягивающего резистора.

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Там ещё вот это 2/10 Мгц в таблице. Не 2/10, просто 10Мгц. Если CR2 при выводе данных 1, то 10МГц, если 0 то 2 Мгц.

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4
мнимый открытый коллектор

То есть, при включении мнимого открытого коллектора мы на выходе получаем ноль?

запись ниже означает: на вывод 30 (порт С5) подать ноль?

PC_DDR_bit.DDR5=1;
PC_CR1_bit.C15=0;

Есть ли разница при конфигурировании аналогово и цифрового входа/выхода? Или здесь нет АЦП и все выводы цифровые?

Изменено пользователем IDis

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10
мнимый открытый коллектор

То есть, при включении мнимого открытого коллектора мы на выходе получаем ноль?

запись ниже означает: на вывод 30 (порт С5) подать ноль?

PC_DDR_bit.DDR5=1;
PC_CR1_bit.C15=0;

Есть ли разница при конфигурировании аналогово и цифрового входа/выхода? Или здесь нет АЦП и все выводы цифровые?

Да, при мнимом открытом коллекторе необходимо внешний резистор на питание.

Нет, запись обозначает настроить порт на вывод. Ещё дописать нужно. PC_ODR_bit.ODR5=0;

Как я уже говорил, вывод данных в регистр ODR, а ввод из регистра IDR.

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

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4

а мнимый открытый коллектор, что в данном случаи (у stm8) что означает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

а мнимый открытый коллектор, что в данном случаи (у stm8) что означает?

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

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IDis    4

хотел уточнить насчёт изменения скорости 2/10мГц.

это скорость с которой может ножка дергаться? Это зависит от внутреннего кварца? А если использовать внешний кварц, тогда как скорость регулировать?

Отправлено с моего Wileyfox Swift через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Pivowar
      Всем привет!
      Мы ищем человека которому интересно заниматься проектированием схем, плат и созданием своих устройств. Мы стартап-команда, занимающаяся разработкой IoT, на основе различных микроконтроллеров с последующей интеграцией с облачными технологиями. Так же имеется большое количество проектов по разработке программно-аппаратных решений "под ключ". Для всего этого необходимо проектировать схемы, разрабатывать прототипы, подбирать различные модули и компоненты, создавать gerber файлы и подготавливать это все для производства. Прошу на обсуждение всех заинтересовавшихся. 
      Наше место дислокации: г. Москва, СЗАО, метро "Октябрьское Поле"
    • Гость Vlad_krsu
      Автор: Гость Vlad_krsu
      Разбираюсь с микросхемой UC3825. Есть работающая схема контроля скважности выходного сигнала переменным резистором, подключенным к ноге 8. Приложена к посту
      Задался целью управлять этой микросхемой не переменным резистором, а с помощью ШИМ от 5в микроконтроллера. Насколько я понял по даташиту UC3825 может работать по току и по напряжению и теоретически это возможно.
      Есть ли кто ни будь, кто хорошо разбирается в функционале это микрухи? Как можно подключить к ней МК и будет ли она работать от входного ШИМ сигнала, частотой скажем 1кГц?

    • Автор: ekaterina_b
      Команда проекта расположена в разных странах, но большинство технических специалистов находятся в России, а именно в Санкт-Петербурге. Само назначение проекта - создание умной потребительской электроники, гаджетов и онлайн-сервисов. Отличительной особенностью этой работы является возможность участия в создании инновационных, нестандартных продуктов. Если тебе это по душе, то откликайся! В связи с расширением мы ищем Инженера-схемотехника.
      Обязанности:
      Разработка электрических принципиальных схем; Выбор элементной базы; Трассировка печатных плат; Техническое сопровождение изготовления опытных образцов, отладка и настройка; Требования:
      Знание и опыт работы с AltiumDesigner; Опыт работы в сфере радио и высокочастотной электроники. Условия:
      Дружная команда единомышленников; Уютный офис в центре города Конкурентоспособная заработная плата; Фрукты и сладости в офисе; Полное обеспечение всеми необходимыми в работе учебными материалами; Возможность участие в отраслевых мероприятиях.
    • Автор: Wenter
      Суть программы нажали на кнопку ушли в прерывание, в прерывании от кнопки поменяли уровень на порту со светодиодом, порт с LED соединён с другим портом на котором тоже есть прерывание при переходе из 0 в 1, Соответственно при нажатии кнопки ушли в прерывание там выставили смену уровня на другой ноге и должно сработать другое прерывание. Проблема, прерывание от кнопки работает, прерывание от смены уровня нет. Хотя этаже программа работала, плата STM8L152C6T6 пере прошивалась затем залилась этаже прога и не заработала.
      Ещё вопрос при прерывании от кнопки устанавливается бит флага  EXTI_SR1_bit.P1F а чтоб его сбросить почему то работает EXTI_SR1_bit.P2F=0; а не EXTI_SR1_bit.P1F=0;
      Код программы полностью: В IAR
      /*
      *15.11.2016
      *STM8L152C6T6
      *
      *Измерять таймером задержку от нажатия кнопки до начала генерации
      */
      #include "iostm8l152c6.h"
      int perep;
      unsigned int tic;
      /**************Обработка вектора прерывания от кнопки**************/
           #pragma vector=EXTI1_vector
           __interrupt void Pin1_interrupt(void)
           {
             EXTI_SR1_bit.P2F=0;//Сброс флага прерывания
             TIM1_CR1_bit.CEN = 1; //Запускаем таймер
             PC_ODR_bit.ODR7^=1; //Инверсия порта С7
           }
      /**************Обработка вектора прерывания от начала генерации**************/
         
       #pragma vector=EXTI6_vector
           __interrupt void Pin6_interrupt(void)
           {
             EXTI_SR1_bit.P2F=0;//Сброс флага прерывания
              TIM1_CR1_bit.CEN = 0; //Останавливаем  таймер
              tic=TIM1_CNTRL;
             PE_ODR_bit.ODR7^=1; //Инверсия порта E7
             
           }
      /************************При переполнении таймера*******************************************************/
       /*#pragma vector=TIM1_OVR_UIF_vector
           __interrupt void TIM1_OVF(void)
           {
             //perep++;
             
           }*/
      int main( void )
      {
      /***************Выберем частоту SYSCLK************/
        //По умолчанию тактируемся от HSI/8
        CLK_CKDIVR=0;// Выбираем делитель на 1
       
      /********Инициализация пина который моргает Светодиодом ИИИИИИИИИИИИИИИНДИКАЦИЯ********/  
        PC_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
        PC_CR1_bit.C17 = 1; //Переключаем его в режим push-pull (это когда он может выдавать
        //и низкий и высокий уровень), а то по-умолчанию он прикидывается пинов с открытым стоком
        //(это когда может выдавать только низкий уровень, а вместо высокого переключается на вход)
       
        /********Инициализация пина который моргает Светодиодом********/  
        PE_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
        PE_CR1_bit.C17 = 1; //Переключаем его в режим push-pull (это когда он может выдавать
        //и низкий и высокий уровень), а то по-умолчанию он прикидывается пинов с открытым стоком
        //(это когда может выдавать только низкий уровень, а вместо высокого переключается на вход)
      /****************************************************************************************/  
       
       /*****************ПРЕРЫВАНИЕ ОТ КНОПКИ****************************************************************************/
        /*С начало настраиваем пины с кнопкой*/
        PC_DDR_bit.DDR1 =0; //Настраиваем 1й пин порта C на вход
        PC_CR1_bit.C11=1; //Настроили порт кнопки на вход pull-up
        PC_CR2_bit.C21=1; //Размещаем прерывание
       
        /***************Настройка прерываний**************/
        /*В регистре EXTI_CONF1 по умолчанию все 0
          тоесть каждый пин даёт нам отдельное прерывание*/
       
        //Настраиваем фронт срабатывания прерывания
        //Т.к. кнопка замыкается на землю то выбираем задний фронт
         EXTI_CR1_bit.P1IS=2; //Прерывание на ножке срабатывает по заднему фронту
         //ITC_SPR1_bit.VECT1SPR=0; //Высокий прерывание от нашей кнопки
      /**************************************************************************************************************/
         
      /*********************ПРЕРЫВАНИЕ ПРИ НАЧАЛЕ ГЕНЕРАЦИИ**********************************************************/
        PC_DDR_bit.DDR6 =0; //Настраиваем 6й пин порта C на вход
        PC_CR1_bit.C16=1; //Настроили порт  на вход pull-up
        PC_CR2_bit.C26=1; //Размещаем прерывание
       
        /***************Настройка прерываний**************/
        /*В регистре EXTI_CONF1 по умолчанию все 0
          то есть каждый пин даёт нам отдельное прерывание*/
       
        //Настраиваем фронт срабатывания прерывания
        //Фронт  прерывания передний
        EXTI_CR2_bit.P6IS=1; //Прерывание на ножке срабатывает по переднему фронту
        //ITC_SPR2_bit.VECT6SPR=3; //Средний приоритет  прерывание от нашей кнопки
         
      /*********Настройка таймера TIM1***************************/
        CLK_PCKENR2_bit.PCKEN21 = 1; //Включаем тактирование таймера TIM1
        //Делитель на 160
        //НО выставляем 15(так как всегда +1)
        TIM1_PSCRH = (15) >> 8;
        TIM1_PSCRL = (15)& 0xFF;
        TIM1_PSCRH = (0) >> 8;
        TIM1_PSCRL = (0)& 0xFF;
        //Счет по умолчанию вверх TIM1_CR1 DIR=0
        //Значение регистра сравнения(До чего тикает таймер)
        TIM1_ARRH = (10000) >> 8;
        TIM1_ARRL = (10000)& 0xFF;//Частота переполнений = 16М / 1600 / 10000 = 1 Гц
       /*Новый пред делитель в таймер записывается только после  события Update (Update Event — UEV)
         чтоб сразу инициализировать нужный пред делитель
         вызовем программно Update (Update Event — UEV), и чтоб в это время не уйти в какое нибудь
         прерывание разрещим прерывание только от переполнения таймера */
        TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика
        TIM1_EGR_bit.UG = 1;  //Вызываем Update Event
        TIM1_IER_bit.UIE = 0; //Запрещаем прерывание при совпадении с ARR
        TIM1_CR1_bit.CEN = 0; //не Запускаем таймер
       
         asm("RIM");//Глобальное разрешение прерываний
         
        while(1)
        {
        }
      }
       
    • Автор: rampage17
      Доброго времени суток всем.
       
      В данный момент работаю над небольшим проектом.
      Имеется готовая модель rc-вертолета ( T605 SHUTTLE ), необходимо поставить на него микроконтроллер, гироскоп и акселерометр (думаю использовать MPU-6050 и MPU-9250) и написать для него мозги.
      МК должен принимать данные с датчиков, выполнять работу по стабилизации вертолета, посылать ШИМ-сигнал.
      Какой лучше подобрать микроконтроллер, который бы подходил под поставленную задачу ? Пока думаю над atmega 128a (просто потому, что имел с ним дело уже).
      P.S. если с программированием проблем возникнуть не должно, то как это всё подобрать, установить, спаять и тд понятия не имею, поэтому буду благодарен любым советам на эту тему
      Спасибо.