roboforum.ru

Технический форум по робототехнике.


AVR на C/C++ программирование - вводный курс

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

AVR на C/C++ программирование - вводный курс

Сообщение =DeaD= » 25 июл 2008, 09:50

Пожалуй реанимируем тему, может быть EdGull как раз прочитает и освоится в новой среде :)

2Voon: Я уберу там всё про makefile? А то люди в ужасе убегать будут от таких вещей на 1 странице, давай потом для продвинутых сделаем про makefile'ы отдельный раздел?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение avr123.nm.ru » 25 июл 2008, 10:21

На Cpp это IAR и WinAVR наверно ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение EdGull » 25 июл 2008, 10:30

Тогда начинайте с мигания светодиода
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение =DeaD= » 25 июл 2008, 10:59

Так именно с мигания светодиодом и начали :)
[[Рабочее место разработки прошивок для МК AVR]]

Только вот оформить это надо будет грамотно. Приглашаются все желающие.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение EdGull » 25 июл 2008, 11:01

а проще никак нельзя послать еденичку в порт??? :shock:
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение =DeaD= » 25 июл 2008, 11:08

EdGull писал(а):а проще никак нельзя послать еденичку в порт??? :shock:

Можно, но хотелось вроде мигать? :) что именно смущает? Инклюды вначале? Или циклы для задержки?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение EdGull » 25 июл 2008, 11:25

вот эта конструкция мен просто убила!!!
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i++)

нельзя как-то как в васике написать?
Код: Выделить всёРазвернуть
portB.0=1


Добавлено спустя 11 минут 39 секунд:
Можно, но хотелось вроде мигать?

а ты умеешь мигать без высталения единички??? :D
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение =DeaD= » 25 июл 2008, 11:25

EdGull писал(а):вот эта конструкция мен просто убила!!!
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i++)

Это циклы в сях :) и вообще всё просто, сложно это регулярные выражения для поиска емайлов в тексте:
Код: Выделить всёРазвернуть
@mass=grep{s/(.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/$2/ig} split /\n/, $test;


EdGull писал(а):нельзя как-то как в васике написать?
Код: Выделить всёРазвернуть
portB.0=1

Чем принципиально PORTB = 0x00 сложнее? Конечно для конкретного бита будет менее красиво, дойду до дома нарисую несколько вариантов как это можно делать :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение Кирилл » 25 июл 2008, 12:47

а зачем тут цикл? :shock: тем более два...
Кирилл
 
Сообщения: 432
Зарегистрирован: 20 окт 2005, 16:11
Откуда: Вильнюс,Литва
прог. языки: Basic

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение EdGull » 25 июл 2008, 12:49

помоему чтобы жизнь раем не казалась... :ROFL:
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение =DeaD= » 25 июл 2008, 12:53

Вот вы пристали к исходнику :)

Попробую убрать циклы, я только начал и эту страничку законченной считать вообще нельзя, я её показал только к тому, что и так, как EdGull предлагает - с мигания светодиодом начинаем :)

PS: Все конструктивные предложения от знатоков си\си++ приветствуются :)

PPS: Тем не менее все неконструктивные замечания вида "нихренасе вы тут намутили, я вообще не понял что значит ...." тоже приветствуются :)))
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение Сергей » 25 июл 2008, 14:20

Может EdGull стоит сначала Кернигана и Ритчи почитать? А потом уже к МК переходить

Добавлено спустя 11 минут 13 секунд:
Кстати, чтобы было проще, предлагаю
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i++)
         _delay_ms(10);


вынести в отдельную inline функцию или macro
типа
Код: Выделить всёРазвернуть
inline void delay_s( double s )
{
    uint16_t i, ms = 1000 * s;
    for( i = 0; i < ms; i++ )
        _delay_ms( 1 );
}
Example: delay_s( 0.1 ); , delay_s( 5 );...
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение =DeaD= » 25 июл 2008, 15:18

Сергей писал(а):Может EdGull стоит сначала Кернигана и Ритчи почитать? А потом уже к МК переходить

Ну ты садист. Тебе чего надо - чтобы он на си\си++ перешел или чтобы забил на это дело увидев сколько страниц в этом кернигане и ритчи? :)

Сергей писал(а):Кстати, чтобы было проще, предлагаю
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i++)
   _delay_ms(10);

вынести в отдельную inline функцию или macro

Вот не надо в первых же примерах сразу инлайны вводить :) чтобы так сказать проще...
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение Сергей » 25 июл 2008, 15:27

=DeaD= писал(а):
Сергей писал(а):Может EdGull стоит сначала Кернигана и Ритчи почитать? А потом уже к МК переходить

Ну ты садист. Тебе чего надо - чтобы он на си\си++ перешел или чтобы забил на это дело увидев сколько страниц в этом кернигане и ритчи? :)

Там мало страниц то, около 300 всего. Это тебе не Бьерн Страуструп 1600стр)

=DeaD= писал(а):
Сергей писал(а):Кстати, чтобы было проще, предлагаю
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i++)
   _delay_ms(10);

вынести в отдельную inline функцию или macro

Вот не надо в первых же примерах сразу инлайны вводить :) чтобы так сказать проще...

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

Re: Вводный курс для программирования МК AVR на языке C/C++

Сообщение EdGull » 25 июл 2008, 15:34

нафиг мне чё-то читать??? :shock:
у меня и вот так всё прекрасно и интуитивно работает!!!

Код: Выделить всёРазвернуть
For A = 1 To 100
  PortB.0 = 1
Next A


ты чё забыл? тут по результатам голосования было принято решение меня переубедить что на Сях проще писать чем на васике :ROFL:

Добавлено спустя 2 минуты 9 секунд:
кстати, и в отдельные функции в васике тоже всё прекрасно выносится так же как и в отделые прекрепляемые файлы
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

След.

Вернуться в Микроконтроллеры

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15