roboforum.ru

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

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

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

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

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

=DeaD= писал(а):в отпуск пора, сегодня поставил себе AVRStudio, WinAVR на недавно освеженный комп и не смог скомпилить пример, чего-то с makefile'ом намутил умудрился на ровном месте, хотя до этого раз 10 ставил всё и нормуль было :) ппц, переработал :)

Ппц. понял где грабли - русские буковки в пути к проекту :o бойтесь англоязычного софта! :)
Повесил предупреждение в курс.

Добавлено спустя 48 минут 25 секунд:
Нашел на странице доков к WinAVR http://www.nongnu.org/avr-libc/user-man ... delay.html вот такой текст:

Код: Выделить всёРазвернуть
void _delay_ms (double __ms)


Perform a delay of __ms milliseconds, using _delay_loop_2().

The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz).

The maximal possible delay is 262.14 ms / F_CPU in MHz.

When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution.

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

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

Сообщение blindman » 28 июл 2008, 21:38

Максимум 16.38375 мс на 16 МГц. 262.14 мс на 1МГц

Добавлено спустя 1 минуту 23 секунды:
А, ну да. 6.5 вроде. Щас проверю

Добавлено спустя 15 минут 6 секунд:
Получается, что это добавлено было в последних версиях avr-libc. У меня стоит 1.4.6, и там нет этого режима уменьшенного разрешения. Щас скачал 1.6.2 - там есть
Проект [[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(?)
ФИО: Андрей Юрьевич

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

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

Итак противники си трепещите :ROFL:

Исходный пример (мигаем всем портом B с частотой 2Гц) упростился до:
Код: Выделить всёРазвернуть
#include <avr/io.h> //подключаем библиотеку для работы с портами
#include <util/delay.h> //подключаем библиотеку для задержек работы программы на нужное время

int main(void) //объявление главной функции в которую входим при запуске программы
{
   DDRB = 0xFF; //Открываем порт B как выход
   while(1) //В бесконечном цикле
   {
      PORTB = 0x00; //Устанавливаем нули на порт B
      _delay_ms(250); //Ждем 1/4 секунды
      PORTB = 0xFF; //Устанавливаем единички на порт B
      _delay_ms(250); //Ждем еще 1/4 секунды
   };
   return 0;
}

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

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

Сообщение blindman » 28 июл 2008, 22:06

Из всего этого вывод : не забываем вовремя обновлять компилятор
Проект [[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(?)
ФИО: Андрей Юрьевич

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

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

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

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

Сообщение blindman » 28 июл 2008, 22:10

Это еще почему?
Проект [[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(?)
ФИО: Андрей Юрьевич

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

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

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

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

Сообщение Сергей » 29 июл 2008, 00:44

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

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

Сообщение blindman » 29 июл 2008, 05:15

Написано же - 6.5 с. Точнее, 65535 * 100мкс. И достаточно об этом упомянуть в тексте.
Проект [[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(?)
ФИО: Андрей Юрьевич

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

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

Сергей писал(а):Я к тому, что новичок не полезет читать максимальное количество мс которое можно задать _delay_ms( ), он может задать и больше максимального. Или у новых компиляторов ограничение снято?

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

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

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

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

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

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

Сергей писал(а):Ну раз решили учить МК, так давайте делать так, чтобы новички не допускали ошибок глупых :crazy:

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

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

Сообщение rig » 29 июл 2008, 14:15

что остановились?
один пример есть, теперь думайте как двумя диодам помигать, это уже побитовые операции.
а то понапридумываете черти что, я даж сомневатьсч стал знаю ли я Си.
Шаг вправо шаг влево это творчество, ошибки делают все. на них и учимся.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

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

Сообщение Vooon » 29 июл 2008, 14:24

Блин, вроде недавно же смотрел, в интерпиде была таже версия что и в харди, ан нет, уже новая :)
*обновился*
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

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

=DeaD= писал(а):
Сергей писал(а):Ну раз решили учить МК, так давайте делать так, чтобы новички не допускали ошибок глупых :crazy:

Это как можно обеспечить? Подарить им тьютора каждому, чтобы за спиной стоял и смотрел чего не так новичек куда пишет? Или к каждой команде справку по ней сразу справа писать?

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

Пред.След.

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

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

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