roboforum.ru

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


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

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

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

Сообщение EdGull » 28 июл 2008, 10:23

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

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

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

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

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

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

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

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

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

1. Это непоказательная выборка, вот если бы у нас 20-30 человек выкладывало независимые друг от друга проекты написанные с нуля и там был бы только васик - вот тогда да, а тут ты создал платформу ты выкладываешь на том языке который знаешь - по моему подтасовка результатов налицо 8)

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

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

Сообщение EdGull » 28 июл 2008, 12:14

Ура! Ура! Ура!... :Yahoo!:
у нас теперь есть библы для работы с видео под МК!!! :ROFL:

Ага!.. Щазаз!!! Нука покажи нормальные коды для роботов под МК. :wink:

Добавлено спустя 1 минуту 10 секунд:
типа:
вперед
назад
поморгать светиком
попищать динамиком

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

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

Сообщение Сергей » 28 июл 2008, 13:19

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

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

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

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

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

Сообщение Сергей » 28 июл 2008, 13:55

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

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

Сообщение EdGull » 28 июл 2008, 14:00

Си-шные примеры которые здесь были преведены, они не для начинающих!
Если дальнейшие будут в таком же духе, то они нафиг не нужны.
Я вот до сих пор не осознал всей элегантности вышеприведенных примеров.
Мало того я их смысла не понимаю!

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

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

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

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

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

Сообщение Кирилл » 28 июл 2008, 14:20

Эд, зря ты так. пример простейшей программы моргания светодиодом был представлен и разобраться в нем можно без труда. Другое дело что сишники легких путей не ищут и выложили решения этой же задачи только более изощренным способом, тем самым запутывая людей не знающих Си.
вот код из вики:
Код: Выделить всёРазвернуть
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>

int main(void)
{
   char i;
   DDRB = 0xFF;
   PORTB = 0x00;

   while(1)
   {
      for(i = 0; i < 100; i++)
         _delay_ms(10);
      PORTB = 0xFF;
      for(i = 0; i < 100; i++)
         _delay_ms(10);
      PORTB = 0x00;
   }
   return 0;
}

мне лично, человеку не разу в жизни не написавшему ни одной строчки на Си он понятен, а тебе? :)

кстати, Dead, в вики походу ошибка. С сайта Атмела нада наверное скачивать AVR Studio, а не WinAVR. :wink:
Кирилл
 
Сообщения: 432
Зарегистрирован: 20 окт 2005, 16:11
Откуда: Вильнюс,Литва
прог. языки: Basic

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

Сообщение rig » 28 июл 2008, 14:48

в CVAVR работает
delay_ms(1000) и delay_ms(5000), сам проверял так что можно упростить код, убрав циклы.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

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

Сообщение Vooon » 28 июл 2008, 15:00

А так не проще ли будет?
Код: Выделить всёРазвернуть
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>

int main(void)
{
   char i;
   DDRB = 0xFF;
   PORTB = 0x00;

   while(1)
   {
      for(i = 0; i < 100; i++)
         _delay_ms(10);
      PORTB ^= 0xFF; // побитовое исключающее или, в нашем случае просто инвертирование.
                     // если непонятно то man xor; google://исключающее или
   }
   return 0;
}


Добавлено спустя 7 минут 12 секунд:
или вот мигалка поинтереснее:
Код: Выделить всёРазвернуть
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>

int main(void)
{
   unsigned char i, mask = 0x5A;
   DDRB = 0xFF;
   PORTB = 0x00;

   while(1)
   {
      for(i = 0; i < 100; i++)
         _delay_ms(10);
      mask ^= 0xFF;
      PORTB ^= mask;
   }
   return 0;
}
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

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

rig писал(а):в CVAVR работает
delay_ms(1000) и delay_ms(5000), сам проверял так что можно упростить код, убрав циклы.

Давайте не будем писать в CV? там библиотеки хорошие, но всетакие не айс. Я предлагаю писать в WInAVR, - там _delay_ms в среднем не может быть больше 200 в зависимости от кварца.

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

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

Сообщение blindman » 28 июл 2008, 15:04

Vooon писал(а):А так не проще ли будет?
.......

Проще - да. Понятнее - однозначно нет. Понятнее всего наверно так:

Код: Выделить всёРазвернуть
#include "library.h"

int main(void)
{
    bit_set(DDRB, 1);
    while (1) {
        bit_set(PORTB, 1);
        wait_ms(300);
        bit_clear(PORTB, 1);
        wait_ms(300);
    }
}



Может имеет смысл сначала сделать простую библиотеку базовых функций, и уже на ее основе делать курс или как-там-его-назвать?

Вместо
Код: Выделить всёРазвернуть
PORTB |= (1 << 6);
будет
Код: Выделить всёРазвернуть
bit_set(PORTB, 6);

Вместо
Код: Выделить всёРазвернуть
PORTB &= ~(1 << 6);
будет
Код: Выделить всёРазвернуть
bit_clear(PORTB, 6);

Вместо
Код: Выделить всёРазвернуть
PORTB ^= (1 << 6);
будет
Код: Выделить всёРазвернуть
bit_invert(PORTB, 6);


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

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

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

Пред.След.

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

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

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