Например TDA7294

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

Текущее время: Пт июл 25, 2025 23:51:27

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 32 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: ШИМ + UART как быть с пк
СообщениеДобавлено: Чт мар 26, 2009 19:11:53 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
доброго времени суток.
итак имеется МК соединенный с ПК по uart. необходимо вывести на МК 3 байта, первый байт разобрать на биты, если первый бит 1 вотрой бит 0 третий бит 1 то следующие 2 байта являются значениями которые необходимо вывести на 2 шима.
непонятно как взаимодействовать с пк из приложения, ведь пересылаются символы. а надо еще и разбить на биты.
помогите с куском кода.
PS пишу на С

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 26, 2009 19:21:50 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 16, 2009 21:40:57
Сообщений: 828
Рейтинг сообщения: 0
Надо принять символы-байты в буфер и потом их разобрать - какие биты в них. Парсинг команд - называется.

Пример приема команд по UART с ПК на Си есть в PROTEUS - это пример AN696. в папке Proteus\SAMPLES\VSM MPLAB Viewer\App Notes\AN696

Я очень советую вам скачать и использовать PROTEUS 7.4 sp3 с лекарством 1.6.5
PROTEUS позволяет ВИДЕТЬ что происходит ВНУТРИ микроконтроллера - это интересно и полезно при отладке.

Разбор команды начинается со строк
Код:
if(PIR1bits.RCIF)            
{
   switch(udata = RCREG)

Весь исходник прицеплен.

Подробно работу с UART USART AVR на Си недавно обсуждали в "МЯУУУУ" - прием и передача данных.
http://radiokot.ru/forum/viewtopic.php?p=194982#194982

Анализ битов проводят с помощью битовых операций с масками - с числами типа 0b00101110


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 27, 2009 12:13:01 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
putsf("OK_START");
while (1){
st_bit = getchar() ;
st_bit = (3<<st_bit); //взять первые 3 бита из переменной
if(st_bit == 5) //101
{
znX=getchar();
znY=getchar();
OCR1AL = znX+read_adc(0);
OCR1BL = znY+read_adc(2);
putsf("OK");
} else { putsf("error"); };
};
не уверен что написал правильно, поправьте как должно быть.

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 27, 2009 23:25:00 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
чтото никто не отвечает :cry: приходится самому ответ искать:
    putsf("OK_START");

    while (1){


    st_bytte = getchar() ;
    OCR1AL = znX+(read_adc(0)+read_adc(1)/4);
    OCR1BL = znY+(read_adc(2)+read_adc(3)/4);


    st_bit0 = st_bytte & 0b10000000; // стартбит


    st_bit1 = st_bytte & 0b01000000; //
    st_bit2 = st_bytte & 0b00100000; //
    st_bit3 = st_bytte & 0b00010000; //
    st_bit4 = st_bytte & 0b00001000; //
    st_bit5 = st_bytte & 0b00000100; //
    st_bit6 = st_bytte & 0b00000010; // резерв
    st_bit7 = st_bytte & 0b00000001; // резерв
    if(st_bit0>0 & st_bit1==0 & st_bit2>0) //101
    {
    if(st_bit3>0) {blanking=1;} else {blanking=0;};
    if(st_bit4>0) {PORTC.4 = 1;} else {PORTC.4 = 0;};
    if(st_bit5>0) {PORTC.5 = 1;} else {PORTC.5 = 0;};
    znX=getchar();
    znY=getchar();
    putsf("OK");
    st_bytte=0;
    } else { putsf("error");
    };
    };

вобщем вот

итак возник вопрос как и чем и что отправлять с компа (в планах на basic)чтобы МК принял 160 а не 1 потом 6 потом 0 !

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 28, 2009 02:04:29 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 16, 2009 21:40:57
Сообщений: 828
Рейтинг сообщения: 0
demson писал(а):
как и чем и что отправлять с компа (в планах на basic)

Специальные проги есть для работы с приборами через COM порт.
Посмотрите - вот 3 программы
http://kazus.ru/forum/topics/f_76711.html#76711

demson писал(а):
чтобы МК принял 160 а не 1 потом 6 потом 0 !

Дак отправьте 160 он и примет 160.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 15:06:09 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
программа виснет при попытке отправить что-либо на мк грешу на переходник usb - com причем если мк отцепить все отлично, если замкнуть rx tx эхо идет без ошибок. в чем может быть дело?

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 17:17:38 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
заработало но косо: с мк передает сообщение "error" а комп принимает сплошные нули от чего это может быть?

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 17:21:21 
Модератор
Аватар пользователя

Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26
Сообщений: 11492
Откуда: град Нижний
Рейтинг сообщения: 0
Может быть при несовпадении скоростей...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 17:28:18 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
нет скорости одни и те-же даже в симуляторе vmlab работает. а как всетаки передать с компа число 1101 1111 или BF
чтобы мк его принял как единое целое а не b и f.

вот еще исходник гляньте может в нем что косо.


Вложения:
1.c [4.91 KiB]
Скачиваний: 401

_________________
в спорах рождается ИСТИНА [AND] flud.
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 18:39:14 
Модератор
Аватар пользователя

Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26
Сообщений: 11492
Откуда: град Нижний
Рейтинг сообщения: 0
Может и форматы не совпадать..
Обычно для ПК это:
1бит - стартовый,
8бит - данные,
1бит - чётность,
1бит - стоповый...
Проверь, как на МК запрограммировано..
У тя в программе например указано - нет чётности..
Сам те по твоему МК подсказать не смогу - сам работаю только с МК51 семейством...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 18:40:37 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 16, 2009 21:40:57
Сообщений: 828
Рейтинг сообщения: 0
demson писал(а):
а как всетаки передать с компа число 1101 1111 или BF чтобы мк его принял как единое целое а не b и f.


Из проги терминальной для COM порта передасть число 0хBF или BFh

Удобные программы для COM порта есть в "Связь COM порта ПК и USART МК AVR" - http://radiokot.ru/forum/viewtopic.php?p=198337#198337


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 31, 2009 20:11:48 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
нашел проблему номер 1 - не встали фьюзы при первой прошивке, а больше я их и не смотрел :cry: вобщем так и тактовался мк от своего 1 мГц генератора, исправил теперь тактутся от кварца 16 мГц но проблема с usart не решилась. теперь думаю что не исправен переходник usb-com. вот так вот. скоро за мах232 поеду. :))

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 31, 2009 22:13:22 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Чтобы проверить ком порт нужно замкнуть пины 2 и 3 на разьёме. Таким образом ПК будет принимать то, что отправит. И если в терминале(именно это вам и нужно попробуйте PuTTY - хороший терминал. В личке помогу настроить) Вы увидите то, что отправите. Например набрали "G" а в терминале будет "GG". Чтобы отправить байт 160(0xA0 или 0b10100000) нужно по таблице ASCII символов найти символ с таким кодом. Ещё хочу добавить что обычно для проверки правильности связи МК и ПК по UART'у обычно на Си пишут такой код
Код:
putchar(getchar());

Таким образом если скорости выставлены правильно и связь налажена верно то на терминале вы топять таки должны получить то что и отправляли.[/b]

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 01, 2009 13:50:53 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
тобы проверить ком порт нужно замкнуть пины 2 и 3 на разьёме.

это работает принимает нормально без косяков.

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 01, 2009 17:15:02 
Модератор
Аватар пользователя

Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26
Сообщений: 11492
Откуда: град Нижний
Рейтинг сообщения: 0
а) попробуй "зациклить" передачу одного байта с МК и посмотри длительность посылки..
б) потом "зациклить" передачу одного байта с компа и тоже посмотри длительность посылки..
Думаю всё-же у тя - несовпадение скоростей..


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 01, 2009 19:46:10 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
putchar(getchar());

опа не принимает ничего!

при попытке отослать на ПК строку putsf("OK"); на ПК полный бред.

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 04, 2009 22:20:55 
IT KT
Аватар пользователя

Карма: 19
Рейтинг сообщений: 10
Зарегистрирован: Пн авг 25, 2008 08:49:33
Сообщений: 1309
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
вобщем переходник usb-com не являлся таковым. Спаял avr 309 все работает замечательно.
вечно все проблемы от подделок!!!! 8)

_________________
в спорах рождается ИСТИНА [AND] flud.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ + UART как быть с пк
СообщениеДобавлено: Ср апр 11, 2012 14:10:33 
Родился

Зарегистрирован: Пт окт 21, 2011 19:42:45
Сообщений: 18
Рейтинг сообщения: 0
Люди помогите всё не допрёт, до меня вот реализован UART и шим; делаю так
OCR1B = 300;
так работает;
ну или

if(UDR=='1')
OCR1B = 300;
тоже работает но только я делаю типо такого
OCR1B = UDR; ну к примеру.
пробовал всякие преоброзования и всё такое... ШИМ таким оброзом не работает, что упустил, ну и сам вопррос то
как получть число с UDR и отправить OCR1B ;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ + UART как быть с пк
СообщениеДобавлено: Ср апр 11, 2012 15:49:10 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 235
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3863
Откуда: Москва
Рейтинг сообщения: 0
UART настроен? Скорости совпадают? Процедура обработки приема данных через UART есть? Учитывается что OCR1B - 16 разрядный, а UDR - 8 разрядный?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ + UART как быть с пк
СообщениеДобавлено: Ср апр 11, 2012 18:50:38 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Может лучше сделать работу с двойным буфером. И отправлять количество требуемых байт в комп(запрос), когда нужно заполнить один из буферов.
В буфер складывать по прерыванию юсарта.
Из буфера читать в шим по прерыванию таймера.
С данными работать в виде структуры. Битовые поля.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 32 ]  1,  

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


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

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


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

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


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