-=FISHER=-

AtMega8 + Bluetooth HC-05 + MIT App Inventor 2

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

-=FISHER=-    5

Всех приветствую!

 

Сейчас разбираюсь с управлением МК через Bluetooth с помощью самодельного приложения для Android, которое создано при помощи бесплатной среды разработки  MIT App Inventor 2.

Для начала хочу научиться управлять двухканальным ШИМ через интерфейс из двух "Бегунков". Вот такой простейший интерфейс.

Скрытый текст

5c6faa49a32b2_.thumb.jpg.0e30b6b41cb1ab82bbc48e6e0dee4661.jpg

Отправляются данные на МК с помощью вот такой простейшей программы. Обрабатывается событие, которое происходит после изменения положения "бегунка", на МК (к которому через HC-05 ранее было осуществленно подключение) отправляется байт данных, который содержит значение регистра OCR1A или OCR1B. А также для наглядности значение выводится в текстовое поле.

Скрытый текст

5c6fac4a01683_1.JPG.875c64b76e7ac99ab67f8631ed72d76f.JPG

МК в свою очередь обрабатывает эти данные в прерывании по приёму USART следующим образом:

Скрытый текст

ISR(USART_RXC_vect)
{
	OCR1A=UDR;
}

 

В целом всё работает, но когда добавляется второй канал ШИМ, возникает проблема, для решения которой я и обратился к Вам, как мне грамотнее разделить данные от первого и второго бегунка и распределить их по регистрам OCR1A и OCR1B ?

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


Ссылка на сообщение
Поделиться на других сайтах
ruhi    36
2 часа назад, -=FISHER=- сказал:

отправляется байт данных, который содержит значение регистра OCR1A или OCR1B

так отправьте 2-байта в первом номер регистра А или В, а во втором значение регистра.

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


Ссылка на сообщение
Поделиться на других сайтах
-=FISHER=-    5
46 минут назад, ruhi сказал:

так отправьте 2-байта

Ну а как это будет выглядеть? Сначала отправляю байт с номером регистра, в прерывании становится понятно что это регистр A например, следом отправляю байт со значением регистра, мы заходим в прерывание снова и.... первый байт ведь уже потерян? я не понимаю сам механизм, сможете набросать код для примера пожалуйста?

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


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

Впервые на русском языке! Работаем с микроконтроллерами STM32F7(на основе STM32F7 Online Training)

Цикл материалов на основе STM32F7 Online Training от компании STMicroelectronics. Описаны функциональные блоки и инструменты разработки для семейства микроконтроллеров STM32F7, охватывающие тематику системной периферии, памяти, безопасности, аналоговой периферии, цифровой периферии, таймеров, экосистемы.

Подробнее>>

ruhi    36
18 минут назад, -=FISHER=- сказал:

сможете набросать код для примера пожалуйста?

это ж охириниеть как сложно :) 

static uchar stage = 0;
static uchar regNum = 0;
ISR(USART_RXC_vect)
{
	if(stage == 0)
	{
		stage =  1;
		regNum =UDR;		
	}
	else if(stage == 1)
	{
		stage =  0;
		if(regNum == 0) OCR1A=UDR;
		else if(regNum == 1) OCR1B=UDR;

	}
	
}

 

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


Ссылка на сообщение
Поделиться на других сайтах
-=FISHER=-    5
10 минут назад, ruhi сказал:

это ж охириниеть

А что переменная не скинется в ноль автоматически при новом входе в прерывание??

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


Ссылка на сообщение
Поделиться на других сайтах
ruhi    36
2 минуты назад, -=FISHER=- сказал:

А что переменная не скинется в ноль автоматически при новом входе в прерывание??

Ну вы блин даЁте :) !

НЕТ! это то же у вас С-язык?

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

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


Ссылка на сообщение
Поделиться на других сайтах
-=FISHER=-    5
39 минут назад, ruhi сказал:

Ну вы блин даЁте :) 

жёстко же я затупил

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


Ссылка на сообщение
Поделиться на других сайтах
-=FISHER=-    5
2 часа назад, ruhi сказал:

это ж охириниеть

В общем использовал Ваш пример, всё в целом заработало, только вот работает немного глючно. Чтобы не читать много букв, посмотрите пожалуйста короткое видео на Youtube, на не видно что яркость меняется скачками, а хотелось бы плавно...Интересно, может быть дело в том что что не желательно менять содержимое регистров OCR1A и B из прерывания или ещё в чем?..  .Видео

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


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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас