roboforum.ru

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


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

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

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

Сообщение Виталий » 25 июл 2008, 20:10

Мигание...
Код: Выделить всёРазвернуть
unsigned long a = 0;
unsigned char c = 0x00;

while(1){
     if (a == 0) {
         PORTB = c;
         c = 0xFF - c; //Вместо if (c == 0xFF) c == 0x00; else c == 0xFF;
     }
     a++;  //Переполнится и станет нулем.
}


Не знаю так сработает или нет:
Код: Выделить всёРазвернуть
unsigned long a = 0;

while(1){
     if (a == 0) PORTB = 0xFF - PORTB;
     a++;
}
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

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

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

я конечно извиняюсь заранее, ибо на Си никогда не писал, но чем плох вот этот код:
Код: Выделить всёРазвернуть
#include <90s2313.h>
#include <delay.h>

void main()
{

DDRD=0xff;
PORTD=0x00;

while(1)
{
PORTD.1=0;
delay_ms(1000);
PORTD.1=1;
delay_ms(1000);
}

}

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

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

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

Виталий писал(а):Мигание...
a++; //Переполнится и станет нулем.

Это из серии "очумелые ручки", а не из того программирования которому надо учить. Я бы повешался потом код разбирать в котором такие вещи используются, да и через месяц сам будешь сидеть и гадать что вообще в коде происходит. :)

Кирилл писал(а):я конечно извиняюсь заранее, ибо на Си никогда не писал, но чем плох вот этот код:

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

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

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

И давайте определимся каким компилятором пользуемся. У Кирилла насколько я понял CV, а Дед пишет под avr-gcc..
=DeaD= писал(а):PS: Не вижу смысла чтобы начинать программить под МК изучить весь си\си++, из него (особенно из си++) реально пользуется под МК процентов 10-20 в подавляющем числе случаев.

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

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

Сообщение Myp » 25 июл 2008, 23:35

=DeaD= писал(а):Черт, ничего не успел сегодня посмотреть и сделать на эту тему.

теперь ты должен себя убить!!!
Давайте всетаки без флуда. <Сергей>
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

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

Виталий писал(а):Не знаю так сработает или нет:
Код: Выделить всёРазвернуть
unsigned long a = 0;

while(1){
     if (a == 0) PORTB = 0xFF - PORTB;
     a++;
}

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

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

Сообщение Victorovych » 27 июл 2008, 16:46

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

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

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

Это не си стрёмный, это из нас учителя стрёмные :) а си он хороший, белый и пушистый.

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

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

Сообщение EdGull » 27 июл 2008, 20:50

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

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

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

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

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

Сообщение Alex Gritsenko » 27 июл 2008, 23:44

Простые хакеры на асме пишут, суровые хакеры пишут в бинарном коде @_@
Аватара пользователя
Alex Gritsenko
 
Сообщения: 150
Зарегистрирован: 12 июл 2005, 16:10
Откуда: Харьков
прог. языки: Lua, C, JS

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

Сообщение Victorovych » 27 июл 2008, 23:56

Сергей писал(а):Суровые хакеры на Асме пишут!!

Эт променя :ROFL:
Если серьезно, мужики, вы в личке перетрите, прийдете к общему мнению тогда что-то постите, а то хотелось Ся изучить, а вижу здесь 3.14ЗДЕЦ, мб топик лучше поправить или дрокнуть до лучших времен
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

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

Сообщение AlexCH » 28 июл 2008, 08:03

Вобщем дело было так:
Изучал я в свое время дельфи, а до этого паскаль. Естественно под пк.
А когда добрался сюда, почитал про мк и все такое, понял, что для программирования мк надо учить си и ничто другое. Асм не в счет, т.к. он является "тонким инструментом" для критических секций кода.
(Эффективная разработка программ подразумевает также и время разработки, поэтому умные люди придумали языки высокого уровня, и писать на асме весь код имхо неправильно.)
Для меня переход на си был довольно простым, т.к. написание программы это в первую очередь составление и понимание алгоритма, по которому она должна работать, и только потом написание непосредственно кода в соответствии с правилами синтаксиса языка.
Поэтому я не полез в гугл искать микропаскаль и тому подобную ерунду.
Немало помог курс, сами знаете какой, там реально описаны все основы.

Вобщем я считаю что си. (точка). :D
Куча материалов, наработанных годами по всему миру, исходников, библиотек, и т.д.
Разве этим может похвастаться тот-же васик?

Вот эта конструкция кажется совсем убогой:
Код: Выделить всёРазвернуть
For A = 1 To 100
Next A

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

Но насколько я понимаю (поправьте плиз если я не прав), "Next A" это жестко "A++"
А в случае с СИ можно написать так:
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i+=2){
}

Или так:
Код: Выделить всёРазвернуть
for(i = 0; i < 100; func(i)){
}

Вот Васик так умеет? Или на нем придется извращаться?
AlexCH
 
Сообщения: 50
Зарегистрирован: 12 мар 2007, 23:15
Откуда: Иркутск

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

Сообщение EdGull » 28 июл 2008, 08:36

Разве этим может похвастаться тот-же васик?

может
"Next A" это жестко "A++"

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

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

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

Зато васик не умеет по диагонали крестиком вышивать :) например в сях можно в 1 строку зашить решение уравнение методом последовательных приближений :) for(инициализация переменных; условие, когда ответ достаточно для нас хорош; шаг итерации);

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

Пред.След.

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

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

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