roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 04:39

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




Начать новую тему Ответить на тему  [ Сообщений: 191 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13  След.
Автор Сообщение
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 14:58 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Я не понял кто что взял. Могу написать работу с таймером, работу с портами ввода\вывода к примеру


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 15:16 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей писал(а):
Я не понял кто что взял. Могу написать работу с таймером, работу с портами ввода\вывода к примеру

Пока я всё взял :) и blindman хотел вводную написать, но пока не начинал.

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

(формат в каком будем выкладывать? PROTEUS + jpg из него?)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 15:20 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
=DeaD= писал(а):
(формат в каком будем выкладывать? PROTEUS + jpg из него?)

Да, можно пару скринов. Вообщем если нужно написать работу с периферией - то зови.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 15:21 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
может еще и асмовый курс ? )))

ПС чат устроили тут ))

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 21:57 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Так там почти всё работа с периферией :) считай что зову :)

Курс по асму - ну нафиг. Провели же опрос чего надо - по моему 81% - Си, 22% - Асм, 16% - Васик.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 22:05 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
=DeaD= писал(а):
Так там почти всё работа с периферией :) считай что зову :)
Скажи что написать нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 22:48 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
асм рулез )) могет к вашему курсу наишу копий на асме потом

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 01 авг 2008, 23:57 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей писал(а):
Скажи что написать нужно.

Так там есть список уроков, я пока кроме мигания светодиодом еще ничего не сделал, выбирай любой из списка:
[[Курс "Программирование МК AVR на Си"]]
или список сюда продублировать?

Я пока никакой в темах №4.3, 5.х, слабоват в теме 4.1, 4.2.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 00:22 
Не в сети
Аватара пользователя

Зарегистрирован: 20 сен 2007, 11:44
Сообщения: 491
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич
Прелесть асма в том что там курса не нужно, есть набор инструкций и твори с ними шо хош :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 02:34 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
=DeaD= писал(а):
Сергей писал(а):
Скажи что написать нужно.

Так там есть список уроков, я пока кроме мигания светодиодом еще ничего не сделал, выбирай любой из списка:
[[Курс "Программирование МК AVR на Си"]]
или список сюда продублировать?
Не нужно дублировать, я узнал что хотел.

=DeaD= писал(а):
Я пока никакой в темах №4.3, 5.х, слабоват в теме 4.1, 4.2.
Разберемся. Буду делать и выкладывать сюда, с вики не дружу пока.

Добавлено спустя 30 минут 9 секунд:
Вот пример 4.1

Код:
#include <avr/io.h>
#include <stdint.h>

void usart0_init( uint32_t baudrate );
void usart0_putchar( uint8_t data );
uint8_t usart0_getchar( void );
void usart0_putstr( char *str );
void usart0_getstr( char *str, uint8_t length ) ;

void usart0_init( uint32_t baudrate )
{
   uint16_t bauddiv = ( ( F_CPU + ( baudrate * 8L ) ) / ( baudrate * 16L ) - 1 );
   UBRRL |= bauddiv;
   UBRRH |= ( bauddiv >> 8 );
   UCSRB |= ( 1 << TXEN ) | ( 1 << RXEN );
}

void usart0_putchar( uint8_t data )
{
   while( !( UCSRA & ( 1 << UDRE ) ) );

   UDR = data;
}

uint8_t usart0_getchar( void )
{
   while( !( UCSRA & ( 1 << RXC ) ) );
   
   return UDR;
}

void usart0_putstr( char *str )
{
   while( *str )
      usart0_putchar( *str++ );
}

void usart0_getstr( char *str, uint8_t length )
{
   while( length )
   {
      *str = usart0_getchar();
      
      if( *str == 'n' || *str == 'r' )
         break;
      
      str++;
      length--;
   }
}

int main( void )
{
   char tmp_str[] = "Hello, world!nr";
   
   usart0_init( 9600 );
   
   usart0_putstr( tmp_str );
   
   while( 1 )
   {
      char buffer[64] = { 0 };
      
      usart0_getstr( buffer, 64 );
      
      usart0_putstr( buffer );      
   }
   
   return 0;
}


Добавлено спустя 14 минут 8 секунд:
Вот пример 3.3, управляем светодиодом кнопками через INT0-1
Код:
#include <avr/io.h>
ISR( INT0_vect )
{
   PORTD |= ( 1 << PD4 );
}

ISR( INT1_vect )
{
   PORTD &=~( 1 << PD4 );
}

int main( void )
{
   DDRD &=~ ( 1 << PD2 ) | ( 1 << PD3 );
   PORTD |= ( 1 << PD2 ) | ( 1 << PD3 ) | ( 1 << PD4 );
   
   DDRD |= ( 1 << PD4 );
   
   MCUCR = 0;
   GICR |= ( 1 << INT0 ) | ( 1 << INT1 );
   
   sei();
   
   while( 1 );
   
   return 0;
}


Добавлено спустя 30 минут 44 секунды:
Работа с еепром по юарт. Правьте как нужно, другого ничего в голову не пришло, пойду спать. Считайте что это пример на 5.2
Код:
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

void usart0_init( uint32_t baudrate );
void usart0_putchar( uint8_t data );
uint8_t usart0_getchar( void );
void usart0_putstr( char *str );
void usart0_getstr( char *str, uint8_t length );

void eeprom_write( uint16_t address, uint8_t data );
uint8_t eeprom_read( uint16_t address );

void usart0_init( uint32_t baudrate )
{
   uint16_t bauddiv = ( ( F_CPU + ( baudrate * 8L ) ) / ( baudrate * 16L ) - 1 );
   UBRRL |= bauddiv;
   UBRRH |= ( bauddiv >> 8 );
   UCSRB |= ( 1 << TXEN ) | ( 1 << RXEN );
}

void usart0_putchar( uint8_t data )
{
   while( !( UCSRA & ( 1 << UDRE ) ) );

   UDR = data;
}

uint8_t usart0_getchar( void )
{
   while( !( UCSRA & ( 1 << RXC ) ) );
   
   return UDR;
}

void usart0_putstr( char *str )
{
   while( *str )
      usart0_putchar( *str++ );
}

void usart0_getstr( char *str, uint8_t length )
{
   while( length )
   {
      *str = usart0_getchar();
      
      if( *str == '\n' || *str == '\r' )
         break;
      
      str++;
      length--;
   }
}

void eeprom_write( uint16_t address, uint8_t data )
{
   while( EECR & ( 1 << EEWE ) );
   EEAR = address;
   EEDR = data;
   EECR |= ( 1 << EEMWE );
   EECR |= ( 1 << EEWE );
}

uint8_t eeprom_read( uint16_t address )
{
   while( EECR & ( 1 << EEWE ) );
   EEAR = address;
   EECR |= ( 1 << EERE );
   return EEDR;   
}

int main( void )
{
   char str_enter_cmd[] = "Enter command ( 'r' to read, 'w' to write ): ";
   char str_enter_addr[] = "Enter address: ";
   char str_enter_value[] = "Enter value: ";
   char str_default[] = "Wrong command, try again!\n\r";
   char str_value[] = "Value is: ";
   
   usart0_init( 9600 );
   
   while( 1 )
   {
      char buffer[8] = { 0 };
      int addr = 0;
      uint8_t value = 0;
      
      usart0_putstr( str_enter_cmd );
      
      switch( usart0_getchar() )
      {
      case 'r':
         usart0_putchar( '\r' );
         
         usart0_putstr( str_enter_addr );
         
         usart0_getstr( buffer, sizeof( buffer ) );
         
         addr = atoi( buffer );
         
         memset( buffer, 0, sizeof( buffer ) );
         
         value = eeprom_read( addr );
         
         usart0_putstr( str_value );
         
         usart0_putstr( itoa( value, buffer, 10 ) );
         
         break;
         
      case 'w':
         usart0_putchar( '\r' );
                  
         usart0_putstr( str_enter_addr );
         
         usart0_getstr( buffer, sizeof( buffer ) );
         
         addr = atoi( buffer );
         
         memset( buffer, 0, sizeof( buffer ) );
         
         usart0_putchar( '\r' );
         
         usart0_putstr( str_enter_value  );
         
         usart0_getstr( buffer, sizeof( buffer ) );
         
         value = atoi( buffer );
         
         memset( buffer, 0, sizeof( buffer ) );
         
         eeprom_write( addr, value );
         
         break;
         
      default:
         usart0_putstr( str_default );
         break;
      }
      
      usart0_putchar( '\r' );
      
   }
   
   return 0;
}


Вложения:
2.rar [12 КиБ]
Скачиваний: 22
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 12:37 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
2Сергей: О! респект! :) А это всё под АТМега32?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 13:14 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Для EEPROM есть стандартные функции определенные в avr/eeprom.h

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 14:33 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
=DeaD= писал(а):
2Сергей: О! респект! :) А это всё под АТМега32?

Я под мегу16 делал. Проверю на 32-ю мегу.
blindman писал(а):
Для EEPROM есть стандартные функции определенные в avr/eeprom.h

Это конечно очень удобно и тп. Но ведь в курсе мы показываем "как это работает" :beer:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей писал(а):
Это конечно очень удобно и тп. Но ведь в курсе мы показываем "как это работает" :beer:

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 02 авг 2008, 16:06 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Дак а там то же самое. Только еще дополнительные методы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 191 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 12


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO