Форум myROBOT.ru » Роботы и робототехника » Делимся опытом » Библиотека для роботы с UART

Страниц (1): [1]
 

1. Linch - 05 Июня, 2012 - 12:03:28 - перейти к сообщению
Здравствуйте! Недавно начал увлекаться микроконтроллерами, а именно их программированием. На данный момент работаю только в симуляторах (Proteus, VMlab и т. д.), но в скором будущем перейду на реальное железо.Тем не менее, подумал что мне очень понадобится разные библиотеки, для упрощения роботы с МК, не работать же всегда через регистры (на данный момент пишу на чистом Си, компилятор WinAVR). Начал я штурмовать UART (Универсальный Асинхронный Приемо/Передатчик) в народе называемый RS-232 или СOM, так как он будет очень полезен для отладки программ, и вообще Я ориентирован на робототехнику для меня это очень полезная штука! Если купить радио-модули можно дистанционно управлять роботом отправлять разную информацию на ПК и много разных вкусностей. Очень бы хотелось знать как библиотека поведет себя в Реальных Условиях, если вам не лень прошу протестировать ее и сообщить мне о результатах. Приведу простой пример работы с ней (некоторые функций очень похожи на Паскаливские :-)
CODE:

#include <avr/io.h> // стандартные библиотеки
#include <util/delay.h>
#include "uart_driver.c" // собственно моя библиотечка

#define F_CPU 1000000UL // частота МК
#define MAX_LINE_LENGHT 40 // макрос определения максимальной длины строки ввода/вывода

int main(void)
{
char name[MAX_LINE_LENGHT]; // строка в которой будет храниться имя пользователя
unsigned int delete; // метка которое указывает сколько по что удалять

uart_init(9600); // в качестве параметра функция принимает //бауд-рейт
uart_write("UART INIT COMPLET...\r"); // выводим сообщение об успешной инициализаций
uart_write("START WHILE!"); // начало главного цикла
delete = cSend; // сSend – счетчик отправленных символов, здесь мы вставляем //метку которая указывает по что удалять
while (1)
{
uart_write("\rHellow! My name is Linch! What you the name? "); // Привет! Меня зовут Линч! Как тебя зовут (перевод)
uart_readln(name); // cохраняем имя в строке name (после ввода имени нужно //нажать enter)
uart_write(name); uart_write(" it's cool name! \r");
uart_wait("Plees press enter...\r", '\r'); // Выводим сообщение и ждем
//нажатия клавиши (в данном случае enter'a)
for (int i = 1; i <= 3; i++)
{
uart_write_int(i); uart_putc('\!');
_delay_ms(1000);
uart_write("\b\b");
}
uart_write("\rRESTART WHILE!");
_delay_ms(1000);
uart_clr(delete);
}
return 0;
}

Постоянные ссылки:

Вот такие проги Улыбка. В будущем планирую создать библиотеки для каждого модуля (АЦП, ШИМ, Таймеры, SPI и т.д. и т.п.). Все вопросы, пожелания, предложения, (жалобы!?) прошу отправлять в ящик  sciencefan@yandex.com, или пишите в комментариях. Весь код является полностью открытым(Open Source, однако Улыбка. Код хорошо комментирован, полное описание находится в самом файле библиотеки. Если есть идей что можно добавить, убрать, оптимизировать пишите вместе и обсудим. При копирование/распространений прошу указывать автора (то есть меня). С уважением Савчук Александр…
(Добавление)
Прошу извинить за некрасивое форматирование кода. В исходниках все красиво :-)
2. Роботов - 05 Июня, 2012 - 13:18:30 - перейти к сообщению
Linch пишет:
Начал я штурмовать UART (Универсальный Асинхронный Приемо/Передатчик) в народе называемый RS-232 или СOM

Немного не так.
COM и UART отличаются как минимум уровнями сигналов, я уже не говорю о том что в СОМ-порту есть кроме приема и передачи ещё и служебные сигналы.
Ну это так, для сведения. Подмигивающий
3. Linch - 05 Июня, 2012 - 13:51:25 - перейти к сообщению
Роботов пишет:
Linch пишет:
Начал я штурмовать UART (Универсальный Асинхронный Приемо/Передатчик) в народе называемый RS-232 или СOM

Немного не так.
COM и UART отличаются как минимум уровнями сигналов, я уже не говорю о том что в СОМ-порту есть кроме приема и передачи ещё и служебные сигналы.
Ну это так, для сведения. Подмигивающий

Ну да, вы полностью правы! Ну я думаю идея понятна!
4. cjA - 13 Июня, 2012 - 03:21:07 - перейти к сообщению
понятна.
это прошлый век.
боюсь что уже юсб (над которым бьюсь) -прошлый век.

Оставте уарт только если два МК должны будут взаимодействовать и переходите на юсб, если нужна связь с компом. или блютуз. или вайфай. или уже наверное никто не знает что, но только не тратьте время на СОМ или уарт. (хотя уарт по технологии вечен)