Например TDA7294

Форум РадиоКот • Просмотр темы - Передача строки по UART
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 03:48:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 111 ]    , , , , 5,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Чт янв 19, 2017 07:49:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
LEX38RUS писал(а):
что лучше обмен по rs232 или по hid
RS232

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Чт янв 19, 2017 11:16:33 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
еще предложу обратить внимание на RS-485


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пт янв 20, 2017 07:20:42 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
UART гораздо проще в реализации, но соответствующие разъемы не везде есть. Впрочем, почти везде можно поставить переходник. USB (в том числе, HID и virtual-UART) в реализации сложнее, и сложнее подключить к чему-то кроме компа, например, к самодельному выносному терминалу.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пт янв 20, 2017 21:49:28 
Открыл глаза

Зарегистрирован: Пн янв 11, 2016 20:35:49
Сообщений: 54
Рейтинг сообщения: 0
Правильно ли я пробую реализовать шим
Спойлер
Код:
#include <avr/io.h>
#define F_CPU 8000000UL //8MHz
#include <util/delay.h>
#include <avr/interrupt.h>
#include <string.h>

#define RX_BUFFER_SIZE 5
uint8_t received;
char rx_data [5];
volatile uint8_t rx_flag = 0;
volatile uint8_t indexchar = 0;

void UARTInit(void) {
   UBRRH = 0;
   UBRRL = 51; //baud rate 9600
   UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
   UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8 bit, 1 stop bit
}

void UARTSend(uint8_t data) {
   while(!(UCSRA & (1<<UDRE)));
   UDR = data;
}

unsigned char UARTGet() {
   while(!rx_flag);
   rx_flag = 0;
   indexchar = 0;
   rx_data[4] = '\0';
   return 1;
}

void Send_Uart_Str(char *s)
{
   while (*s != 0) UARTSend(*s++);
}
void send_Uart(unsigned char c)//   Отправка байта
{
   while(!(UCSRA&(1<<UDRE)))   //   Устанавливается, когда регистр свободен
   {}
   UDR = c;
}
void send_int_Uart(unsigned int c)//    Отправка числа от 0000 до 9999
{
   unsigned char temp;
   c=c%10000;
   temp=c/100;
   send_Uart(temp/10+'0');
   send_Uart(temp%10+'0');
   temp=c%100;;
   send_Uart(temp/10+'0');
   send_Uart(temp%10+'0');
}

void InitPWM()
{
   TCCR0|=(1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
   DDRB|=(1<<PB3);
}

void SetPWMOutput(uint8_t duty)
{
   OCR0=duty;
}

void Wait()
{
 _delay_loop_2(3200);
}

uint8_t brightness = 0;
int main(void) {

InitPWM();
   DDRC = 0b00000001;
   sei();
   UARTInit();
   while(1) {
      received = UARTGet();
      if (strcmp("1ON2", rx_data) == 0)
      {
                  SetPWMOutput(100);          
      }
      if (strcmp("1OF2", rx_data) == 0)
      {
                  SetPWMOutput(0);
      }

   }
}

ISR(USART_RXC_vect) {
   rx_data[indexchar] = UDR;
   if (rx_data[0] !='1')
   {
      indexchar = 0;
      return;
   }
   if ((rx_data[0]=='1') && (rx_data[indexchar]=='2'))
   {
      Send_Uart_Str(rx_data);
      rx_flag = 1;
      return;
   }
   if(++indexchar >= RX_BUFFER_SIZE)
   {
      
      indexchar = 0;
   }
}

Вот скрин с осцилографа.


Вложения:
PWM.jpg [59.01 KiB]
Скачиваний: 372
Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 03:15:37 
Открыл глаза

Зарегистрирован: Пн янв 11, 2016 20:35:49
Сообщений: 54
Рейтинг сообщения: 0
Возможно ли OCR0 присваивать переменную типа float и если да то подскажите как.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 05:03:27 
Держит паяльник хвостом

Карма: 25
Рейтинг сообщений: 375
Зарегистрирован: Ср апр 13, 2011 11:09:20
Сообщений: 933
Откуда: Екатеринбург
Рейтинг сообщения: 0
LEX38RUS писал(а):
Возможно ли OCR0 присваивать переменную типа float

Невозможно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 06:46:22 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Alkul писал(а):
Невозможно
ответ не верный. можно. но надо понимать, каков будет результат.
Цитата:
- эти грибы есть можно?
- да. но только один раз.
в переменную OCR0 в результате такого присваивания попадет младший байт целой части результата преобразования float в int

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 08:40:38 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А я ждал когда же ARV появится с подобным постом на ответ Alkul.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 08:44:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Z_h_e писал(а):
А я ждал когда же ARV появится с подобным постом
а я ждал, когда же вы среагируете. наши ожидания оправдались, не так ли?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 10:20:02 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5592
Откуда: Minsk
Рейтинг сообщения: 3
COKPOWEHEU писал(а):
UART гораздо проще в реализации, но соответствующие разъемы не везде есть.

Век живи - век учись : не подозревал, что для UART существуют специальные разъемы :( Я всегда был уверен, что UART заканчивается на пинах Rx - Tx микроконтроллера, а дальше делай с ним что хошь - сопрягай через разъемы, развязывай токовой петлей, модулируй радиоканал. Проблема UART не в разъемах, а в том, что он заточен для внутри- и меж-блочных связей, и без соответствующей дополнительной обвязки для связи дальше 1..2 метров не годен.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 10:28:35 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я думаю, что COKPOWEHEU хотел сказать RS-232, вернее даже COM-порт.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 10:32:04 
Открыл глаза

Зарегистрирован: Пн янв 11, 2016 20:35:49
Сообщений: 54
Рейтинг сообщения: 0
Цель передачи значения типа float чтоб сделать регулировку от 0 до 100%


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 10:40:05 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
LEX38RUS писал(а):
Цель передачи значения типа float чтоб сделать регулировку от 0 до 100%
как из этой постановки задачи вытекает необходимость float? 100 - это целое число!

OCR0 - это байт. в байте предельное значение - 255. т.к. за 100% всегда принимается ПОЛНЫЙ объем, то 100% - это 255. следовательно, каждая единичка в OCR0 соответствует 0,39%. получается, что у вас и так ДРОБНОЕ число процентов может находиться в OCR0, хотя оперируете вы с ЦЕЛЫМИ. такой вот нюансик.

в школе проценты изучали? удивительно, что подобные вопросы возникают...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 11:00:16 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5592
Откуда: Minsk
Рейтинг сообщения: 1
Спойлер
ARV писал(а):
удивительно, что подобные вопросы возникают...

Удивительно, что они еще пока возникают, тогда не все потеряно. А у большинства нонешнего уже вообще нет вопросов. :(

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 12:24:45 
Держит паяльник хвостом

Карма: 25
Рейтинг сообщений: 375
Зарегистрирован: Ср апр 13, 2011 11:09:20
Сообщений: 933
Откуда: Екатеринбург
Рейтинг сообщения: 0
ARV писал(а):
Alkul писал(а):
Невозможно
ответ не верный. можно. но надо понимать, каков будет результат.
в переменную OCR0 в результате такого присваивания попадет младший байт целой части результата преобразования float в int

А теперь внимание, вопрос - (младший байт целой части преобразования float в int == float) ? Если да, то я многого не знаю про float. А если нет, то мой ответ на вопрос правильный. Именно float в OCR0 занести невозможно. Если Вы с этим не согласны, то докажите мне, что один байт - это float и есть.
Если я заношу переменную куда-то, это означает, что она, по-крайней мере, может быть оттуда без искажения считана. В противном случае эта переменная не занеслась туда, куда я хотел её занести.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 13:17:26 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Alkul писал(а):
А теперь внимание, вопрос
ага. я ни слова не говорил про значение float, я говорил о результате преобразования "по умолчанию" типов данных, т.е. float в int

Число 3.14 после приведения к int превратится в 3, а младший байт этого int-а попадет в байтовую переменную.
Число 3.14e-2 после преобразования в int превратится в 0.
Число 314.123 после преобраования превратится в 314, и младший байт 0x3A попадет в байт.

что не так?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 14:38:45 
Открыл глаза

Зарегистрирован: Пн авг 10, 2015 12:53:00
Сообщений: 47
Рейтинг сообщения: 0
А вот вопрос в тему пропуска полупериодов и проч.: какая частота ШИМ предпочтительней, для бытовых целей, с точки зрения ресурса компонентов, нагрузки на проводку итд? 50Гц, единицы Гц, десятые доли Гц? 1,5 кВт тэн управляется симистором ВТ139-600 через драйвер МОС3063 (с контролем "0"). Сейчас длительность периода 5 секунд с заполнением 0, 20, 40, 60, 80, 100%
Хорошо ли это?


Последний раз редактировалось maxitch Ср янв 25, 2017 01:41:08, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 15:31:08 
Открыл глаза

Зарегистрирован: Пн янв 11, 2016 20:35:49
Сообщений: 54
Рейтинг сообщения: 0
С процентами у меня все нормально. Просто в программе на ПК думал делать так, нажимаю кнопку + это в программе будет отоброжаться как 1 из 100 % следовательно программа отсылает команду увеличить мощность на 1% в мк получается переменную же нужно увеличить на 2.55? Или я не верный путь выбрал?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 18:45:19 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
может без флоатов обойтись типа
2.55=255/100=51/20

Код:
uint8_t power;
uint16_t pwm;

pwm = ((uint16_t)power*51)/20;
OCR0 = (uint8_t)pwm;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Вт янв 24, 2017 19:10:02 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
LEX38RUS писал(а):
переменную же нужно увеличить на 2.55
да делайте с float-ами, компилятор сам все "округлит" - я выше вам написал, что будет в разных случаях. просто float сожрет память, но если вы на "просторном" МК делаете свои поделки - какая разница?!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 111 ]    , , , , 5,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y