Рядовой
Сообщений всего: 5
Дата рег-ции: Май 2012
|
Здравствуйте! Недавно начал увлекаться микроконтроллерами, а именно их программированием. На данный момент работаю только в симуляторах (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, однако . Код хорошо комментирован, полное описание находится в самом файле библиотеки. Если есть идей что можно добавить, убрать, оптимизировать пишите вместе и обсудим. При копирование/распространений прошу указывать автора (то есть меня). С уважением Савчук Александр…
(Добавление)
Прошу извинить за некрасивое форматирование кода. В исходниках все красиво :-)
(Отредактировано автором: 05 Июня, 2012 - 12:08:03) |