Robo.com.ua Портал любителей робототехники

Главная · Проекты на Робо · Форумы · Ссылки · Статьи · Файловый архив · Поиск March 04 2021 14:54:23
Навигация
Главная
Проекты на Робо
Форумы
Ссылки
Статьи
Файловый архив
ЧаВо
Поиск
Блоги
YouTube




Последние статьи
Новая система складс...
Эксперимент с ИК при...
Проект ROBER или роб...
Программатор STK200 ...
Схема программатора ...
Партнерские ссылки
Просмотр темы
Robo.com.ua Портал любителей робототехники | Общий | Новичкам
Страница 1 из 2 1 2 >
Автор Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 17-10-2006 16:41
Здесь я предлагаю собирать библиотеку функций, заточенных под RoboCom32 и его плат расширения (MotoSensory, т.д.).

RoboCom32:

Библиотека функций для обмена данными по UART
http://www.robo.com.ua/forum/viewthread.php?forum_id=5&thread_id=156#post_2062

Библиотека функций для управления системным (желтым) светодиодом
http://www.robo.com.ua/forum/viewthread.php?forum_id=5&thread_id=156#post_2220

Библиотека функций для управления системой реального времени
http://www.robo.com.ua/forum/viewthread.php?forum_id=5&thread_id=156#post_2221

Библиотека функций для управления звуком через штатный динамик
http://www.robo.com.ua/forum/viewthread.php?forum_id=5&thread_id=156#post_2222

Библиотека функций для управления кнопками START и STOP
http://www.robo.com.ua/forum/viewthread.php?forum_id=5&thread_id=156#post_2223



МотоСенсорика:

Управление моторами
... в разработке.

Изменил(а) BOBKA, 23-11-2006 17:53
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
Persona
Пользователь

Сообщений: 276
Откуда: Киев
Зарегистрирован: 25.08.05
Опубликовано 20-10-2006 11:44
А в каком формате принимаются библиотеки?
Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 20-10-2006 18:59
Библиотека функций для обмена данными по UART


//***************************************************************************************************
// File Name : "RoboCom32_UART.c"
// Title : UART functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : UART functions for RoboCom32 Board to communicate
// with PC via RS-232 & Hyper Terminal
// with speed 115200, Asynchronous mode, No Parity, 1-stop bit, 8-bit Data
// Описание : Функции для обмена данными платы RoboCom32 и ПК
// с помощью встроенного интерфейса UART через RS-232
// Параметры настройки стандартного Windows Hyper Terminal:
// скорость обмена 115200, Asynchronous mode, No Parity, 1-stop bit, 8-bit Data
//***************************************************************************************************

#include <RoboCom32.h>

//=======================================================================
// USART functions
//====================================================================

// Init Atmel Mega16/32 USART interface
void USART_Init( unsigned long baud )
{
// calculate division factor for requested baud rate, and set it
unsigned int bauddiv = ((F_CPU+(baud*8L))/(baud*16L)-1);

UBRRH = (unsigned char) (bauddiv>>8);
UBRRL = (unsigned char) bauddiv;
UCSRB = (1<<RXEN) | (1<<TXEN);
UCSRC = (1<<URSEL) | (3<<UCSZ0);
}

// Transmit 1 byte
void USART_Transmit( unsigned char data)
{
while( !( UCSRA & (1<<UDRE)) )
;
UDR=data;
}

// Transmit string
void USART_puts(const char *s )
{
while (*s)
USART_Transmit(*s++);

}

// Receive 1 byte
unsigned char USART_Receive(void)
{
while( !( UCSRA & (1<<RXC)) )
;
return(UDR);
}

// Transmit 9 bit (2 bytes)
void USART_Transmit_9bit( unsigned int data)
{
while( !( UCSRA & (1<<UDRE)) )
;
UCSRB &= ~(1<<TXB8);
if( data & 0x0100)
UCSRB |= (1<<TXB8);
UDR=data;
}

// Formatted print. Parameters: %c, %d, %x
int USART_printf(const char *format, ...)
{
static const char hex[] = "0123456789ABCDEF";
char format_flag;
unsigned int u_val, div_val, base;
va_list ap;

va_start (ap, format);
for (;;)
{
while ((format_flag = *format++) != '%')
{ // Until '%' or '\0'
if (!format_flag)
{
va_end (ap);
return (0);
}
USART_Transmit(format_flag);
}

switch (format_flag = *format++) {
case 'c': format_flag = va_arg(ap,int);
default: USART_Transmit(format_flag); continue;

case 'd': base = 10; div_val = 10000; goto CONVERSION_LOOP;
case 'x': base = 16; div_val = 0x10;

CONVERSION_LOOP:
u_val = va_arg(ap,int);
if (format_flag == 'd')
{
if (((int)u_val) < 0)
{
u_val = - u_val;
USART_Transmit('-');
}
while (div_val > 1 && div_val > u_val) div_val /= 10;
}
do
{
USART_Transmit(hex[u_val / div_val]);
u_val %= div_val;
div_val /= base;
} while (div_val);
}
}
}



Пример использования:


//***************************************************************************************************
// File Name : "Using_UART.c"
// Title : Example of using UART functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : Example of using UART functions for RoboCom32 Board to communicate
// with PC via RS-232 & Hyper Terminal
// with speed 115200, Asynchronous mode, No Parity, 1-stop bit, 8-bit Data
// Описание : Примеры использования функций для обмена данными платы RoboCom32
// и ПК с помощью встроенного интерфейса UART через RS-232
// Параметры настройки стандартного Windows Hyper Terminal:
// скорость обмена 115200, Asynchronous mode, No Parity, 1-stop bit, 8-bit Data
//***************************************************************************************************

#include <RoboCom32.h>

int main (void)
{
unsigned char UserName[20]="BOBKA";
unsigned char ch;
unsigned int i;


USART_Init(115200); // включаем приемо-передатчик для общения с ПК по RS-232
// в качестве параметра указываем скорость передачи 115200 бод (бит в секунду)
// USART_Init(4800); - а здесь выставляется скорость 4800 бод. Такую же скорость нужно выставить и у "собеседника", например, у Hyper Terminal или другого RoboCom32

USART_printf("\n\rHello, ");
i=1;
if(i)
{
USART_puts(UserName);
}
else
{
USART_puts("Master");
}


USART_Transmit(13); // 13 - это код перевода курсора в начало этой же строки на экране
USART_Transmit(10); // 10 - код перевода курсора на следующую строку вниз на экране
// Кстати, клавиша клавиатуры "Enter" в MS-DOS и MS-Windows "генерирует"
// сразу два кода вподряд: 13 и 10
USART_puts(UserName); // пример использования функции вывода строки символов USART_puts();
USART_Transmit(32); // пример использования функции вывода одного символа USART_Transmit();
// 32- код пробела
USART_Transmit('!'); // печатать символ можно не только кодом, но и непосредственно - в одинарных кавычках


ch=USART_Receive(); // Пример использования функции USART_Receive();
// в переменную "ch" заносится код клавиши, которая будет введена на клавиатуре ПК.
// Эта функция с ожиданием ввода. То есть программа будет ждать здесь до тех пор
// пока USART_Receive(); не получит свой код с клавиатуры.
if(ch==32)
{
USART_printf("Вы нажали на клавиатуре ПК пробел");
}
else
{
USART_printf("Вы нажали на клавиатуре ПК кнопку %с, которая имеет код %d", ch, ch);
}
}


BOBKA присоединил файл:
UART[98].zip

Изменил(а) BOBKA, 23-11-2006 17:12
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 23-10-2006 13:33
Выложил пример функций по UART - свое видение как это может выглядеть.
"Формат" библиотек - вопрос открытый. Я могу сформулировать пока только требования к ним.
Любому, даже неподготовленному человеку должно быть понятно - как пользоваться опубликованным софтом. Поэтому исходник должен содержать максимум полезной инфы. Желательно в "шапке" и более-менее однотипно. Если используется какое-то специфическое железо, то в шапке нужно также написать - какое и как его подключить, чтобы программы работали.
Разумеется, исходники должны содержать комментарии. Уровень подробностей и язык комментариев - на усмотрение автора.

В первом посте я планирую обновлять список ссылок на исходники, опубликованные, в этой ветке форума, чтобы можно было легко ориентироваться - что есть и где это можно найти. Плюс, указывать тип компилятора (ASM/WinAVR/CodeVision/Basic/...).
Тем, кто еще не определился окончательно с компилятором, предлагаю ориентироваться на бесплатный и активно развиваемый компилятор Си - WinAVR.

Какие будут предложения по "Шапке", Оформлению ?
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
Reboot_s
Пользователь

Avatar пользователя

Сообщений: 87
Откуда: Черновцы
Зарегистрирован: 27.03.06
Опубликовано 23-10-2006 14:24
В принципе можна остановится и на твоей "шапке". Если чего надо будет - допишем. Только я бы еще сделал обязательным название и предназначение (по русски или украински) функций в комментариях, а то каждый по разному привык называть и укорачивать. Я имею ввиду в исходнике, а не в примере.


Не напрягайся - перезагрузись!
199611461 Послать приватное сообщение
Автор RE: Soft для RoboCom32
crutchmaster
Пользователь

Сообщений: 11
Откуда: Киев
Зарегистрирован: 20.07.06
Опубликовано 23-10-2006 18:54
Программки? Хорошо...
Только при приёме с UART целесообразно использовать прерывания и кольцевую очередь. А в основной программе осуществлять выборку не из регистров UART, а из очереди. Ведь, боту будет что делать и без ожидания приёма символа?
Послать приватное сообщение
Автор RE: Soft для RoboCom32
Persona
Пользователь

Сообщений: 276
Откуда: Киев
Зарегистрирован: 25.08.05
Опубликовано 23-10-2006 21:49
Тут речь не об этом шла.. ВОВКА выложил пример просто..
Но с crutchmaster я согласен
Послать приватное сообщение
Автор RE: Soft для RoboCom32
crutchmaster
Пользователь

Сообщений: 11
Откуда: Киев
Зарегистрирован: 20.07.06
Опубликовано 02-11-2006 14:03
Кстати, Коллега Вовка. У меня есть существенное замечание. Если рубрика ориентирована на помощь новичкам, то следовало бы больше внимания уделять наглядности представления текстов программ. Для этого, как известно, матёрыми рекомендовано применять ФОРМАТИРОВАНИЕ текстов, то есть - табуляцию. Текст каждого вложенного оператора рекомендуется смещать вправо. Настоятельно рекомендую.
Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 02-11-2006 17:20
2crutchmaster: если нажать кнопку "QUOTE" моего сообщения с исходником (типа цитировать), то можно будет увидеть оригинал.
Естественно, он с форматированием. Но "зеленое" окно полностью его убирает.
Выход я вижу в выкладывании исходников в архиве и публикации исходника в форуме "как есть". То есть без рамки. Тогда наглядности прибавится.
Кстати, а что обозначает фраза "Программки? Хорошо..." ?
smiley
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
andruha
Пользователь

Сообщений: 96
Откуда: Николаев
Зарегистрирован: 27.03.06
Опубликовано 03-11-2006 18:54
Кстати, насчет программок. А какая структура программ для робота оптимальна. Я тут дошел до программирования своего детища и понял, что линейная структура типа "включил мотор-подождал 2 сек.-выключил мотор-зажег лампочку-подождал 1 сек. ... и т.д." для устройства, имеющего несколько каналов ввода и несколько вариантов реакции на раздражители неудобна. В интернете есть ссылки на системы реального времени (QNX, что-то еще), но я там ничего не понялsmiley
Сделал попытку реализовать собственный вариант event-driven модели программы - хотя и получилось, но как-то кривовато. Может, у кого-то есть отработанные решения?

Изменил(а) andruha, 03-11-2006 18:55
Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 06-11-2006 17:25
Я бы посоветовал почитать тему: "RTOS и RoboCom32"
http://www.robo.com.ua/forum/viewthread.php?forum_id=5&thread_id=147
Там есть полезные ссылки. Может быть впишешь свою страницу в дело внедрения RTOS (Real Time Operating System) в любительские разработки ?
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
andruha
Пользователь

Сообщений: 96
Откуда: Николаев
Зарегистрирован: 27.03.06
Опубликовано 09-11-2006 18:15
А ты что-нибудь под jacOS компилировал? Каким компилятором? Мне что-то WinAVR не очень понравился, мутный он какой-то (на первый взгляд). И генератор начального кода отсутствует.
Послать приватное сообщение
Автор RE: Ку: Кстати, а что обозначает фраза "Программки? Хорошо..." ?
crutchmaster
Пользователь

Сообщений: 11
Откуда: Киев
Зарегистрирован: 20.07.06
Опубликовано 11-11-2006 00:03
А обозначает эта фраза некоторое удивление бескорыстием. Нет, я считаю, что так и должно быть, но бывает редко.
Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 13-11-2006 14:33
2 andruha: из-за хронического напряга со временем попробовать jacOS пока не смог. На сайте этой ОС присутствуют версии для разных компиляторов. В том числе и WinAVR.
WinAVR - это хороший компилятор. У него нет некоторых украшательств. Но пусть это тебя не отталкивает. Очень многие в мире AVR вынуждены считаться с популярностью WinAVR. Попробуй. Непонятно и "мутно" только в начале пути.

2 crutchmaster: почему ты удивлен чьим-то бескорыстием ?
Неужели все стали такими корыстными ? Жизнь такая, какой мы ее сами делаем. Почему не протянуть руку помощи человеку, который тянется к знаниям в довольно сложной области ? Не к наркотикам, а к знаниям. Это же наши ребята.
Я знаю, что, наверное, мог бы сделать в этом направлении больше. Как всегда есть отмазки (работа, семья, мало времени)... Но я не теряю надежды прорваться.
Мне запомнилась фраза одного хорошего человека: "Безсмертие - это когда люди долго хранят добрую память о тебе".
Что после каждого из нас останется ?
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
dima
Пользователь

Сообщений: 32
Откуда: Lugansk
Зарегистрирован: 21.11.06
Опубликовано 22-11-2006 21:09
Доброго времени суток. Долго я читал и исследовал этот форум. Попал я сюда случайно в поисках самоходного шасси для радиоуправляемого... даже не знаю как назвать, робота не робота... для установки на это шасси дистанционной видеокамеры.
и вот я увидел этот проект. Чесно говоря прочитав все, я забыл зачем пришел сюда...smiley. но вот беда... много всего интересного, и проект интересный, и сделал бы я с огромным удовольствием все, что сдесь описывается (как раз для меня как для новичка) но как говорится "НО". Я так и не смог стянуть в кучу всю информацию по этому роботу. Вот по этоу поводу и хотелось бы внести предложение... Если уж есть этот проект, есть наработанные платы, схемы, програмное обеспечение. То почему бы не собрать это все в один архив, написать мануал - как куда чего вставлять, заливать, какой програматор нужен - схему, описание, плату... и т.д. Если происходят какие то изменения, то производить их просто заменой архива... что бы ни чего ни куда не разбегалось. Вот это было бы действительно огромной помощью новичкам, таким как мне.
С уважением DIM.
P.S Извените, если не в тот раздел форуа написал. Просто прочитав тему "Soft для RoboCom32" софта то я и не нашел...smiley
309857736 Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 23-11-2006 17:17
Библиотека функций для управления системным (желтым) светодиодом


//***************************************************************************************************
// File Name : "RoboCom32_LED.c"
// Title : LED functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : LED functions for RoboCom32 to show same info by yellow LED blinking,
// controled from software.
// Описание : Функции работы с системным светодиодом на плате - LED.
// RoboCom32 позволяет мигать им программно для отображения
// какой-либо информации. Это простейшая обратная связь с человеком.
//***************************************************************************************************

#include <RoboCom32.h>

//=======================================================================
// BUTTONS functions
//=======================================================================

void LED_Init(void)
{
sbi(DDRC,PC3); // Enable system LED
}


void LED_Disable(void)
{
cbi(DDRC,PC3); // Set port PC3 for input
sbi(PORTC,PC3); // Set Button STOP with pull-up resistors
}


void LED_on(void)
{
sbi(PORTC,PC3); // Включаем "лампочку"
}


void LED_off(void)
{
cbi(PORTC,PC3); // Выключаем "лампочку"
}



Пример использования:


//***************************************************************************************************
// File Name : "Using_LED.c"
// Title : LED functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : Example of LED functions for RoboCom32 to show same info by system LED blinking,
// controled from software.
// Описание : Пример использования функций работы с системным светодиодом на плате - LED.
// RoboCom32 позволяет мигать им программно для отображения
// какой-либо информации. Это простейшая обратная связь с человеком.
//***************************************************************************************************

#include <RoboCom32.h>


int main (void) // главная функция в Си. С main() начинается выполнение программы в МК
{
LED_Init(); // Активируем работу системного светодиода
LED_on(); // Зажигаем его
_delay_ms(1000); // Ждем 1000 миллисекунд = 1 секунда
LED_off(); // Выключаем светодиод
_delay_ms(1000); // Ждем 1000 миллисекунд = 1 секунда
LED_on(); // Опять включаем светодиод
_delay_ms(1000); // Ждем 1000 миллисекунд = 1 секунда
LED_Disable(); // Деактивируем системный светодиод
// Эта команда автоматически разрешает работу кнопки stop,
// которая подключена к тому же порту, что и LED
}


BOBKA присоединил файл:
LED[101].zip

Изменил(а) BOBKA, 23-11-2006 17:20
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 23-11-2006 17:19
Библиотека функций для управления системой реального времени


//***************************************************************************************************
// File Name : "RoboCom32_TIME.c"
// Title : Example of using TIME functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : Example of using TIME functions for RoboCom32 Board to setup and control
// the system time.
// Описание : Примеры использования функций работы со временем платы RoboCom32
// для установки и управления реальным временем в системе.
// Есть даже календарь с учетом высокосных лет. Все под контролем :)
//***************************************************************************************************
#include <RoboCom32.h>

//=======================================================================
// TIME functions
//=======================================================================
#include <avr/interrupt.h>
//#include <avr/signal.h>

typedef struct
{
unsigned char second; //enter the current time, date, month, and year
unsigned char minute;
unsigned char hour;
unsigned char date;
unsigned char month;
unsigned int year;
} time; // Описывем структуру time в которой всегда будет
// находиться дата и время с точностью до секунды.

time RTC; // имя структуры - "RTC" (Real Time Clock) - часы реального времени

char not_leap(void);

void RTC_Init(void) // Init RTC on TOSC1 and TOSC2 with 32,768kHz quartz
{
LED_Init(); // Активируем системный светодиод - LED
// для мигания им каждую секунду
// На работу часов это никак не влияет.
// Светодиодную мигалку можно убрать.

cbi(TIMSK,TOIE2); //Disable TC2 interrupt by Compare Match counter with TCNT2 register
cbi(TIMSK,OCIE2); //Disable TC2 interrupt by Overflow counter
sbi(ASSR,AS2); //Set Timer/Counter0 to be asynchronous from the CPU clock
//with a second external clock(32,768kHz)driving it.

TCNT2 = 0x00; //Clear TCNT2 register
TCCR2 = 0x05; //Prescale the timer to be clock source / 128 to make it
//exactly 1 second for every overflow to occur

while(ASSR&0x07); //Wait until TC2 is updated
sbi(TIMSK,TOIE2); //set 8-bit Timer/Counter0 Overflow Interrupt Enable
sei(); //set the Global Interrupt Enable Bit
}

SIGNAL (SIG_OVERFLOW2) // Активация прерывания для работы системных часов.
{ // Все данные заносятся в структуру RTC.
if (++RTC.second==60) // Рассчитываем time, date, month, and year
{
RTC.second=0;
if (++RTC.minute==60)
{
RTC.minute=0;
if (++RTC.hour==24)
{
RTC.hour=0;
if (++RTC.date==32)
{
RTC.month++;
RTC.date=1;
}
else if (RTC.date==31)
{
if ((RTC.month==4) || (RTC.month==6) || (RTC.month==9) || (RTC.month==11))
{
RTC.month++;
RTC.date=1;
}
}
else if (RTC.date==30)
{
if(RTC.month==2)
{
RTC.month++;
RTC.date=1;
}
}
else if (RTC.date==29)
{
if((RTC.month==2) && (not_leap()))
{
RTC.month++;
RTC.date=1;
}
}
if (RTC.month==13)
{
RTC.month=1;
RTC.year++;
}
}
}
}

// PORTB=~(((RTC.second&0x01)|RTC.minute<<1)|RTC.hour<<7); // Если на ножки порта PORTB
// подключить светодиоды,
// получим веселые "двуичные часы".

if(RTC.second & 0x01)
{
LED_on(); // Мигаем светодиодом.
}
else
{
LED_off(); // Мигаем светодиодом.
}

}

char not_leap(void) //check for leap year
{
if (!(RTC.year%100))
return (char)(RTC.year%400);
else
return (char)(RTC.year%4);
}



Пример использования:


//***************************************************************************************************
// File Name : "Using_TIME.c"
// Title : Example of using TIME functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : Example of using TIME functions for RoboCom32 Board to setup and control
// the system time.
// Описание : Примеры использования функций работы со временем платы RoboCom32
// для установки и управления реальным временем в системе.
// Есть даже календарь с учетом высокосных лет. Все под контролем :)
//***************************************************************************************************

#include <RoboCom32.h>


int main (void) // главная функция в Си. С main() начинается выполнение программы в МК
{
RTC.year=2006; // Записываем начальные значения даты и времени
RTC.month=2; // похожие на правду. Потом с клавиатуры их можно
RTC.date=9; // будет изменить "на лету", незаметно для часов RTC
RTC.hour=16;
RTC.minute=26;

RTC_Init(); // Эта функция "включает" тИкание часов внутри МК.
// Все! Больше ничего делать не нужно. Часы идут сами.
// В структуре RTC всегда точное время.
// Печатаем на экране: "день.месяц.год часы:минуты:секунды "
USART_printf("%d.%d.%d %d:%d:%d ", RTC.date, RTC.month, RTC.year, RTC.hour, RTC.minute, RTC.second);
}


BOBKA присоединил файл:
TIME[102].zip

Изменил(а) BOBKA, 23-11-2006 17:25
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 23-11-2006 17:24
Библиотека функций для управления звуком через штатный динамик


//***************************************************************************************************
// File Name : "RoboCom32_SOUND.c"
// Title : SOUND functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : SOUND functions for RoboCom32 Board to generate sounds of
// any frequency and duration. And standard beep().
// Описание : Функции работы со звуком для платы RoboCom32, позволяющие генерировать
// звуки произвольной частоты и длительности. Плюс, стандартный beep().
//***************************************************************************************************

#include <RoboCom32.h>

//=======================================================================
// SOUND functions
//=======================================================================

void sound(double us, unsigned short duration)
{
int i;

sbi(DDRD,PD7);
for(i=0;i<duration;i++)
{
sbi(PORTD,PD7);
_delay_us(us);
cbi(PORTD,PD7);
_delay_us(us);
}
}

void beep(void)
{
sound(20,100);
}



Пример использования:


//***************************************************************************************************
// File Name : "Using_SOUND.c"
// Title : Example of using SOUND functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : Example of using SOUND functions for RoboCom32 Board to generate sounds of
// any frequency and duration. And beep().
// Описание : Примеры использования функций для обмена данными платы RoboCom32
// и ПК с помощью встроенного интерфейса UART через RS-232
// Параметры настройки стандартного Windows Hyper Terminal:
// скорость обмена 115200, Asynchronous mode, No Parity, 1-stop bit, 8-bit Data
//***************************************************************************************************

#include <RoboCom32.h>


int main (void) // главная функция в Си. С main() начинается выполнение программы в МК
{
unsigned char ch; // объявляем переменные, которые будем использовать дальше в программе


USART_printf("Sound TEST\r\n");
USART_printf("Press any key to test beep()...\r\n");
ch=USART_Receive();
beep();
USART_printf("Press any key to sound(5,100)...\r\n");
ch=USART_Receive();
sound(5,100);
USART_printf("Press any key to sound(20,100)...\r\n");
ch=USART_Receive();
sound(20,100);
USART_printf("Press any key to sound(50,100)...\r\n");
ch=USART_Receive();
sound(50,100);
USART_printf("Press any key to sound(100,100)...\r\n");
ch=USART_Receive();
sound(100,100);
}


BOBKA присоединил файл:
SOUND[104].zip

Изменил(а) BOBKA, 23-11-2006 17:25
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 23-11-2006 17:27
Библиотека функций для управления кнопками START и STOP


//***************************************************************************************************
// File Name : "RoboCom32_BUTTONS.c"
// Title : BUTTONS functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : BUTTONS functions for RoboCom32 to control it by pressing two
// buttons on board: START and STOP.
// Описание : Функции работы с кнопками: START and STOP, установленными на плате
// RoboCom32 и позволяющие управлять платой с помощью контроля
// их нажатий из программы.
//***************************************************************************************************

#include <RoboCom32.h>

//=======================================================================
// BUTTONS functions
//=======================================================================

void BUTTONS_Init(void)
{
cbi(DDRC,PC2); // Set port PC2 for input
cbi(DDRC,PC3); // Set port PC3 for input

sbi(PORTC,PC2); // Set Button START with pull-up resistors
sbi(PORTC,PC3); // Set Button STOP with pull-up resistors
}


unsigned char start_button(void)
{
if( (PINC & (1<<PINC3)) )
{
return(0);
}
else
{
return(1);
}
}

unsigned char stop_button(void)
{
if( (PINC & (1<<PINC2)) )
{
return(0);
}
else
{
return(1);
}
}



Пример использования:


//***************************************************************************************************
// File Name : "Using_SOUND.c"
// Title : Example of using SOUND functions for RoboCom32 Board (www.robo.com.ua)
// Author : Volodymyr Kanivets
// Date : 09/02/2006
// Revised : 17/02/2006
// Version : 1.0
// Target MCU : ATmega16/32
// Language : C
// Compiler : WinAVR ver. 20060125
// Description : Example of using SOUND functions for RoboCom32 Board to generate sounds of
// any frequency and duration. And beep().
// Описание : Примеры использования функций для обмена данными платы RoboCom32
// и ПК с помощью встроенного интерфейса UART через RS-232
// Параметры настройки стандартного Windows Hyper Terminal:
// скорость обмена 115200, Asynchronous mode, No Parity, 1-stop bit, 8-bit Data
//***************************************************************************************************

#include <RoboCom32.h>


int main (void) // главная функция в Си. С main() начинается выполнение программы в МК
{
unsigned char ch; // объявляем переменные, которые будем использовать дальше в программе

USART_printf("Buttons TEST\r\n");
USART_printf("Press any key on PC to exit...\r\n");

BUTTONS_Init(); // Включаем кнопки. Порты конфигурируются на Вход.
// Важный момент !
// Альтернативная функция портов к которым подключены кнопки -
// работа JTAG. Этот интерфейс нужно выключить установкой фьюз-битов.
// Иначе кнопки работать не будут.

while( !( UCSRA & (1<<RXC)) )
{
if( start_button() ) // Сработает, если кто-то ;) нажал на RoboCom32 кнопку "start"
{
USART_printf("<START> is ON ");
}
else
{
USART_printf("<START> is off ");
}

if( stop_button() ) // Сработает, если кто-то ;) нажал на RoboCom32 кнопку "stop"
{
USART_printf("<STOP> is ON \r");
}
else
{
USART_printf("<STOP> is off\r");
}


}
LED_Init(); // Важный момент !
// в целях экономии портов, системный светодиод LED
// подключен к тому же порту МК (PC3), что и кнопка "stop".
// Поэтому при инициализации кнопок, LED светить не может.
// Если кнопки не нужны, разрешаем работу LED.
// При этом порт МК (PC3) конфигурируется на выход.
ch=USART_Receive(); // Вычитываем из буфера нажатый на клавиатуре ПК символ
}


BOBKA присоединил файл:
BUTTONS[106].zip

Изменил(а) BOBKA, 23-11-2006 17:27
386645092 Послать приватное сообщение
Автор RE: Soft для RoboCom32
BOBKA
Администратор

Avatar пользователя

Сообщений: 523
Откуда: г. Киев
Зарегистрирован: 08.02.05
Опубликовано 23-11-2006 18:14
dima написал:
и вот я увидел этот проект. Чесно говоря прочитав все, я забыл зачем пришел сюда...smiley

Знаешь, я был тронут этими твоими словами. Я напрягал себя вечерами в том числе и для того, чтобы однажды прочитать такие слова. Спасибо.

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


Истину глаголишь. Я вижу все именно так, как ты описал. Все хорошо оформленное с подробными инструкциями в картинках. Софт и железо с объяснениями "как это работает" в одном доступном месте...
Но у меня тоже есть свое небольшое "но". Одному поднимать такой пласт трудно. Продумывать функциональность, проектировать железо, делать его, проверять, писать софт, оформлять все... Не успеваю физически. Поэтому открытым текстом пишу - мне нужна помощь в подробном описании и оформлении наработок.
Кто может и хочет помочь, отзовитесь, пожалуйста!

Пользуясь случаем, хочу еще раз поблагодарить Арсеньева Алексея (Arsen) с "Железного Феликса" за большую работу по описанию процесса сборки (и не только) платы RoboCom32:
http://ironfelix.ru/modules.php?name=Pages&pa=showpage&pid=125


P.S Извините, если не в тот раздел форуа написал. Просто прочитав тему "Soft для RoboCom32" софта то я и не нашел...smiley

Вот, сегодня дошли руки до оформления и выкладывания софта. Софт по работе с EEPROM и управлением моторами оформлю и выложу немного позже.
Всем удачи !

Изменил(а) BOBKA, 23-11-2006 18:23
386645092 Послать приватное сообщение
Страница 1 из 2 1 2 >
Перейти на форум:
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 651
Не активированный пользователь: 2781
Посетитель: knevech
Last Seen Users
disop26 weeks
EpicOne73 weeks
overlocker98 weeks
Driver_UA99 weeks
knevech106 weeks
Petro113 weeks
admin141 weeks
BOBKA151 weeks
salavat165 weeks
nik22172 weeks
Мини-чат
Вам необходимо залогиниться.

Нет присланных сообщений.
robo.com.ua Copyright © 2004-2015. EMail admin_shs()robo.com.ua