roboforum.ru

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

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

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

=DeaD= » 30 июл 2008, 10:36

EdGull писал(а):специально будем порты брать не те которые в миниботе на ту или инную перефирию выведенные.

Да-да-да, и если ты короче следующего минибота под наши порты подгонишь - мы порты перепишем в курсе! :ROFL: :ROFL: :ROFL:

Добавлено спустя 1 минуту 45 секунд:
blindman писал(а):Мне например удобно запускать примеры на тех платах, что у меня есть, и не факт, что там свободны ноги, которые в миниботе выведены на ту или иную перефирию. А читающему будет полезно подумать, как адаптировать код к своему железу :wink:

Зашибись, автору курса чтобы удобно значит было, а читающему полезно подумать и адаптировать, может как-то всё с головы на ноги вернуть? Курс не для автора пишется, а для читателя.

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

blindman » 30 июл 2008, 10:44

=DeaD= писал(а):Зашибись, автору курса чтобы удобно значит было, а читающему полезно подумать и адаптировать, может как-то всё с головы на ноги вернуть? Курс не для автора пишется, а для читателя.

И как узнать, какое железо у этого самого читателя?

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

EdGull » 30 июл 2008, 10:48

И как узнать, какое железо у этого самого читателя?

Воооот!!! Наконец-то!!!
Вот для этого я и пытаюсь хоть как-то стандартизировать
Минибот на сегодняшний день какой-никакой, а стандарт :oops:

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

=DeaD= » 30 июл 2008, 10:56

blindman писал(а):Какой еще хекс? :shock: Конечно, исходник, от хекса какая польза? А работать он будет на любом контроллере, где будут свободны те ноги, которые прописаны. И на любом другом, если чуть потрудиться и изменить порты.

Повторюсь:
=DeaD= писал(а):PS: К каждой задачке должен быть исходник для скачки, прошивка, файл для протеуса под этот урок в котором можно всё покрутить без реального МК. Ну и надо как-то будет вводную для протеуса написать тоже. Хотя я там с ходу вроде разобрался...


blindman писал(а):А что, уже достоверно известен тот факт, что у большинства есть минибот или планируется его приобретение?!! Или все-таки большинство будет использовать свою конструкцию? Почему надо ориентироваться на небольшое число тех, кто имеет минибота? Если цель создания такого курса - популяризация минибота - значит надо прямо об этом говорить и не морочить голову.

Я пока согласен с EdGull'ом - у нас никакого железа нет, у него есть, одна из моих задач, которые я решаю в своих загадочных целях - перевод минибота на си, поэтому я не вижу никаких проблем с тем, чтобы адаптировать свои примеры под минибота. Однако вам действительно прямо религия не позволяет участвовать в создании курса совместимого с конкретной платформой разошедшейся уже тиражом 36 экземпляров.

Добавлено спустя 1 минуту 46 секунд:
blindman писал(а):И как узнать, какое железо у этого самого читателя?

Смею предположить, что будет 2 варианта покрывающие 95% случаев:
1. Минибот (возможно в дальнейшем МиниботПро);
2. Solderless плата с воткнутым туда контроллером и прочими детальками по той схеме, которую мы скажем сделать в курсе;

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

EdGull » 30 июл 2008, 11:01

конкретной платформой разошедшейся уже тиражом 36 экземпляров.

уже больше, просто сейчас напрямую чере инет-магазин покупают.
на днях наведу порядок и обновлю карту ареала обитания миниботов
кстати, миниботы уже есть и в Украине :P

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

blindman » 30 июл 2008, 11:16

=DeaD= писал(а):Смею предположить, что будет 2 варианта покрывающие 95% случаев:
1. Минибот (возможно в дальнейшем МиниботПро);
2. Solderless плата с воткнутым туда контроллером и прочими детальками по той схеме, которую мы скажем сделать в курсе;

Я не имею ничего против собственно минибота. Но для учебных целей готовая платформа не очень удобна, если не завязываться конкретно на нее. Простой пример: в варианте 2 можно без проблем показать использование внешних прерываний. Как это сделать с миниботом? Выпаивать тсопы? Я потому и говорю, что или делать общий курс, ориентируясь на голый МК, или конкретно под минибота, но тогда уже называть вещи своими именами. И давайте вопросы религии оставим в стороне. Если я чего-то не хочу просто потому что не хочу - я об этом прямо говорю. Здесь же есть объективные причины.

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

=DeaD= » 30 июл 2008, 11:26

blindman писал(а):Я не имею ничего против собственно минибота. Но для учебных целей готовая платформа не очень удобна, если не завязываться конкретно на нее.

Почему же неудобна? Массу вещей на ней можно сделать. Кому-то самому контроллер на solderless плате собирать неудобно будет. И что теперь?

blindman писал(а):Простой пример: в варианте 2 можно без проблем показать использование внешних прерываний. Как это сделать с миниботом? Выпаивать тсопы? Я потому и говорю, что или делать общий курс, ориентируясь на голый МК, или конкретно под минибота, но тогда уже называть вещи своими именами.

Есть такая поговорка "исключения только подтверждают правила", поэтому никто нам не мешает делать исключения и часть примеров сделать несовместимыми с миниботом, если это на миниботе показать невозможно.

blindman писал(а):Если я чего-то не хочу просто потому что не хочу - я об этом прямо говорю. Здесь же есть объективные причины.

Вот первую причину я услышал только что, до этого со стороны это выглядело просто как нежелание подстраиваться под минибота. Однако как я указал выше - не вижу почему мы не можем делать исключения и где-то реализовывать несовместимые с миниботом вещи.

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

blindman » 30 июл 2008, 11:51

Давай посмотрим на минимальный план:
1. Мигаем светодиодом вкл\выкл тупо в цикле делая паузы;
2. В цикле получаем с входа состояние (скажем с кнопки) и показываем обратное состояние на светодиоде (на выходе);
3. Мигаем светодиодом по таймеру;
4. Мигаем светодиодом плавно (учим ШИМ) тупо в цикле;
5. Работаем с UART'ом (зажигаем светодиоды по команде с UART'а);
6. Показываем уровень напряжения на АЦП через UART, если он поменялся больше чем на 5% с предыдущего показа;
7. Считаем количество импульсов по внешнему и выводим их в UART при каждом импульсе;
8. Работаем с I2C (пишем в какую-нибудь память, например);
9. Ну внешнюю память еще можно погонять;

1. +
2. + подключаемся к разъему расширения
3. +
4. - выходы ШИМ заняты
5. +
6. - как к АЦП цепляться?
7. +/- смотря как считать. Программно - да, аппаратно - нет, заняты тактовые входы таймеров
8. +
9. -
и 10. - (внешние прерывания).

Не многовато исключений?

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

=DeaD= » 30 июл 2008, 12:05

blindman писал(а):Давай посмотрим на минимальный план:
1. Мигаем светодиодом вкл\выкл тупо в цикле делая паузы;
2. В цикле получаем с входа состояние (скажем с кнопки) и показываем обратное состояние на светодиоде (на выходе);
3. Мигаем светодиодом по таймеру;
4. Мигаем светодиодом плавно (учим ШИМ) тупо в цикле;
5. Работаем с UART'ом (зажигаем светодиоды по команде с UART'а);
6. Показываем уровень напряжения на АЦП через UART, если он поменялся больше чем на 5% с предыдущего показа;
7. Считаем количество импульсов по внешнему и выводим их в UART при каждом импульсе;
8. Работаем с I2C (пишем в какую-нибудь память, например);
9. Ну внешнюю память еще можно погонять;

1. +
2. + подключаемся к разъему расширения
3. +
4. - выходы ШИМ заняты
5. +
6. - как к АЦП цепляться?
7. +/- смотря как считать. Программно - да, аппаратно - нет, заняты тактовые входы таймеров
8. +
9. -
и 10. - (внешние прерывания).

Ну наконец-то нормальный аргументированный разговор пошел :)

2EdGull и владельцы миниботов: А есть где-то нормальный расклад по ногам контроллера минибота - на какую что подвешено? А то общую схему смотреть в плохом разрешении выложенную где все проводки в шину объединяются - как то глаз плющит, или у меня одного такие проблемы?

4. Выходы шим заняты - какая разница что будет - или моторчик будет плавно стартовать и завершать вращение или светодиод мигать?

7. Считать можно вращение колеса или что там заведено на внешнее прерывание?

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

EdGull » 30 июл 2008, 12:08

4. - выходы ШИМ заняты

ципляемся паралельно движкам или вместо динамика
6. - как к АЦП цепляться?

вместо фототранзисторов или сразу меряем напругу своего акб
10. - (внешние прерывания).

ТСОП чем тебе не внешнее прерывание или кнопка вместо него?

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

blindman » 30 июл 2008, 12:24

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

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

EdGull » 30 июл 2008, 12:27

вот вам светодиоды для первого урока
PortC.4
PortC.5
PortC.6
PortC.7

Добавлено спустя 1 минуту 53 секунды:
blindman писал(а):То есть вооружаемся паяльником и начинаем что-то выпаивать и запаивать. Предварительно изучив схему и рисунок платы, чтобы понять, где расположен фототранзистор, подключенный к нужной ноге.

нинадо ничего выпаивать, минибот поставляется с незапаянными
ИК-фототранзисторами
ИК-светодиодами
ТСОПы ващеидут отдельной позицией

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

Myp » 30 июл 2008, 13:02

какова вероятность что у человека дома нету пульта ДУ чтобы он не смог направит его в миниботовский тсоп и не вызвать этим действием прерывание ?:)


во вторых
почему сразу в первом вводном уроке не объяснить про дефайны
и уже потом в следующих уроках использовать ноги минибота
у кого нет минибота сможет изменив всего пару символов передэфайнить прогу на любую другую ногу...

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

=DeaD= » 30 июл 2008, 13:06

Чего-то параллельно цеплять или запаивать в минибот - как-то незачетно получается, с ходу барьер не берется, поэтому пожалуй будем действовать последовательно.

Предлагаю так - сделать пока просто курс по Си, после написания посмотреть какие вещи можно сделать под минибота и адаптировать их под минибота. Возможно сделать 2 разных курса придется, чтобы удобнее было, пока не знаю.

Добавлено спустя 55 секунд:
Myp писал(а):какова вероятность что у человека дома нету пульта ДУ чтобы он не смог направит его в миниботовский тсоп и не вызвать этим действием прерывание ?:)

Ты еще скажи что нужные TSOPы на углу валяются.


Myp писал(а):во вторых
почему сразу в первом вводном уроке не объяснить про дефайны
и уже потом в следующих уроках использовать ноги минибота
у кого нет минибота сможет изменив всего пару символов передэфайнить прогу на любую другую ногу...

Потому что нефиг мутить перед новичками, им бы разобраться в основах, а вы сразу им дефайны и подмену ног...

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

EdGull » 30 июл 2008, 13:20

Ты еще скажи что нужные TSOPы на углу валяются.

у меня их мешок лежит, специально для вас покупал


Rambler\'s Top100 Mail.ru counter