roboforum.ru

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

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

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

=DeaD= » 25 июл 2008, 09:50

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

2Voon: Я уберу там всё про makefile? А то люди в ужасе убегать будут от таких вещей на 1 странице, давай потом для продвинутых сделаем про makefile'ы отдельный раздел?

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

avr123.nm.ru » 25 июл 2008, 10:21

На Cpp это IAR и WinAVR наверно ?

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

EdGull » 25 июл 2008, 10:30

Тогда начинайте с мигания светодиода

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

=DeaD= » 25 июл 2008, 10:59

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

Только вот оформить это надо будет грамотно. Приглашаются все желающие.

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

EdGull » 25 июл 2008, 11:01

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

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

=DeaD= » 25 июл 2008, 11:08

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

Можно, но хотелось вроде мигать? :) что именно смущает? Инклюды вначале? Или циклы для задержки?

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

EdGull » 25 июл 2008, 11:25

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

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


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

а ты умеешь мигать без высталения единички??? :D

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 сложнее? Конечно для конкретного бита будет менее красиво, дойду до дома нарисую несколько вариантов как это можно делать :)

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

Кирилл » 25 июл 2008, 12:47

а зачем тут цикл? :shock: тем более два...

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

EdGull » 25 июл 2008, 12:49

помоему чтобы жизнь раем не казалась... :ROFL:

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

=DeaD= » 25 июл 2008, 12:53

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

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

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

PPS: Тем не менее все неконструктивные замечания вида "нихренасе вы тут намутили, я вообще не понял что значит ...." тоже приветствуются :)))

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 );...

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

=DeaD= » 25 июл 2008, 15:18

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

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

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

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

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

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:

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

EdGull » 25 июл 2008, 15:34

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

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


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

Добавлено спустя 2 минуты 9 секунд:
кстати, и в отдельные функции в васике тоже всё прекрасно выносится так же как и в отделые прекрепляемые файлы


Rambler\'s Top100 Mail.ru counter