roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 191 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 13  След.
Автор Сообщение
 Заголовок сообщения: Re: Вводный курс для программирования МК AVR на языке C/C++
СообщениеДобавлено: 28 июл 2008, 15:08 
Не в сети

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

Вот это я и предлагал в своих первых постах когда предложил использовать функцию delay_s( ), кстати именно .._s() так как новичкам так будет понятнее


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

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Код:
/**
* @file common.h
* @brief common macros & functions
*/

#ifndef COMMON_H_
#define COMMON_H_

#define bit_set(reg, bit)    reg |= (1<<bit)
#define bit_clear(reg, bit)  reg &= ~(1<<bit)
#define bit_invert(reg, bit) reg ^= (1<<bit)

/**
* Delay in seconds
*/
void delay_s(double s);

#endif /*COMMON_H_*/


PS: А про маски и битовые операции всеравно придется обьясныть :wink:
PSS: Talk is cheap. Show me the code. Linus :)

_________________
Linux user | Firefox user


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

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Конечно придется. Но это не зависит от используемого языка. А подобная базовая библиотека кстати удобна не только для начинающих.

_________________
Проект [[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++
СообщениеДобавлено: 28 июл 2008, 15:36 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
а планчик накидать для начала.
0 Си, и куда его писать. Описание языка, Как настроить WinAVR, простейшая программа ни чего не делающая(типа пустого цикла while(1) ).
1 мигаем диодом с помощью МК, для этого надо
(базовые знания устройство порта, схемка, детали, операторы Си... )
2 мигаем диодами с помощью МК, для этого надо
(битовые операции... )
3 мигаем диодами с помощью МК, реагируя на кнопку/ки, для этого надо и тд.
(...)
а то вы рванули помигать сразу с функциями и битовыми операциями.


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

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

/**
* @def GetLowByte(x)
* @brief Извлечение из слова младшего байта
*/
#define GetLowByte(x) ((char)(x))

/**
* @def GetHighByte(x)
* @brief Извлечение из слова старшего байта
*/
#define GetHighByte(x) ((x)>>8)

/**
* Получаем слово, путем соединение старшего и младшего байтов
* @param HighByte Старший байт
* @param LowByte Младший байт
* @return Слово(16-бит)
*/
uint16_t GetWord( uint8_t HighByte, uint8_t LowByte )
{
   return ( ( HighByte & 0xFF ) << 8 ) | ( LowByte & 0xFF );
}


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

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
uint16_t - это стандартный для WinAVR тип пеерменной?


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

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Код:
/**
* @file common.h
* @brief common macros & functions
*/

#ifndef COMMON_H_
#define COMMON_H_

#include <stdint.h>
// проверьте, есть ли оно в winavr?
#include <stdbool.h>

#define bit_set(reg, bit)    reg |=  (1<<(bit))
#define bit_clear(reg, bit)  reg &= ~(1<<(bit))
#define bit_invert(reg, bit) reg ^=  (1<<(bit))

/// Delay in seconds
void delay_s(double s);

/// Извлечение из слова младшего байта
#define get_low_byte(x) ((unsigned char)(x))

/// Извлечение из слова старшего байта
#define get_high_byte(x) ((unsigned char)((x)>>8))

/**
* Получаем слово, путем соединение старшего и младшего байтов
* @param HighByte Старший байт
* @param LowByte Младший байт
* @return Слово(16-бит)
*/
inline uint16_t get_word(uint8_t HighByte, uint8_t LowByte )
{
   return ( ( HighByte & 0xFF ) << 8 ) | ( LowByte & 0xFF );
}

#endif /*COMMON_H_*/



uint16_t стандартный для GCC, для авр определен как
Код:
typedef unsigned int uint16_t;

_________________
Linux user | Firefox user


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

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Лучше написать еще типа этого
Код:
#ifndef true
#define true 1
#endif
#ifndef false
#define false 0
#endif


Добавлено спустя 1 минуту 53 секунды:
В моем стиле - еще добавь авторов)


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

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Народ, вы чего? Какие еще библиотеки в первых примерах? Давайте без фокусов на первых порах. Никто из серьезных людей не начинают первые же исходники в курсе писать с использованием своей личной библиотеки. Давайте курс по стандартному языку отдельно и свои библиотеки отдельно. Как минимум этому человеку потом не только наши с вами исходники под WinAVR читать, так что давайте не будем его заставлять изучать наши личные способы установитьсбросить бит порта, ему штатных 25 хватит.

Добавлено спустя 4 минуты 46 секунд:
GetLowByte(x) - это вообще в паскале вроде принято имена с большой буквы начинать, в сях вроде наоборот с маленькой...

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


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

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
2 Сергей, это есть в stdbool.h:
Код:
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING.  If not, write to
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.  */

/* As a special exception, if you include this header file into source
   files compiled by GCC, this header file does not by itself cause
   the resulting executable to be covered by the GNU General Public
   License.  This exception does not however invalidate any other
   reasons why the executable file might be covered by the GNU General
   Public License.  */

/*
* ISO C Standard:  7.16  Boolean type and values  <stdbool.h>
*/

#ifndef _STDBOOL_H
#define _STDBOOL_H

#ifndef __cplusplus

#define bool   _Bool
#define true   1
#define false   0

#else /* __cplusplus */

/* Supporting <stdbool.h> in C++ is a GCC extension.  */
#define _Bool   bool
#define bool   bool
#define false   false
#define true   true

#endif /* __cplusplus */

/* Signal that all the definitions are present.  */
#define __bool_true_false_are_defined   1

#endif   /* stdbool.h */


А вообще деад прав, первые примеры должны быть просты.

_________________
Linux user | Firefox user


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

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

Это я вырезал из С++ проекта, поэтому с большой. А в Си да, с маленькой.


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

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

Курс отдельно, библиотека отдельно, кто за, кто против?

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


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

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

Курс отдельно, библиотека отдельно, кто за, кто против?
Ну ответ очевиден. Конечно отдельно. Только вот курс будет основываца на этой библиотеке или нет? Если нет - то и нет смысла в библиотеке


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

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
По-моему очевидно курс не может основываться на библиотеке, потому что так никто из серьезных людей не делает. Надо учить человека разбираться в том, что он будет видеть в листингах чужих программ, а не в нашей библиотеке. Вот если потом будем адаптировать курс под курс начинающего программиста минибота на сях, тогда можно будет сделать либу под минибота и вообще с любыми своими функциями и это будет правильно.

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


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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 191 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 13  След.

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


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

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


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

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