С чего начать программировать микроконтроллеры?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Барсик писал(а):А с какой это радости у Вас массив migalka[i] определятся внутри главного цикла? И определяется как то странно

А как нужно? Разве массив не должен быть внутри главного цикла? Просто кроме него ничего и нет.
P.S. Вроде понял, что к чему, переделал, но теперь почему-то светодиоды еле светят.
Походу запарка вот с этими строчками:
//PORTD=0x00;
//DDRD=0xFF;

Пришлось их закоменнтировать, иначе выдаёт ошибку и что-то не пойму, чего надо.
P.P.S
Всё, сделал. Надо было эти строчки после массива написать.
Буду пробовать, чтобы цикл прерывать и выполнять программу дальше.
Вложения
001.c
(2.84 КБ) 377 скачиваний
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

SeregaT писал(а):...Разве массив не должен быть внутри главного цикла?

Объявление переменной и присвоение ей значения - это разные вещи. Но при объявлении переменной можно заоодно присвоить ей значение.

unsigned char i; // это объявление
т.е. Вы говорите компилятору, что собираетесь использовать переменную размером в один байт, и что он должен воспринимать как беззнаковую.

unsigned char i = 123; // это тоже объявление, но с присвоением значения.

i = 234; // а вот это присвоение значения и ничего больше.

Очевидно, что объявить переменную можно только один раз. Поэтому объявление массива в цикле - это порнография.

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

void main(void)
{
...
}

Могут быть программные модули - функции:

void myFunction(void)
{
.....
}

Могут быть обработчики прерываний:

// обработчик прерывания по переполнению таймера
interrupt [4] void timer_overflow(void)
{
.....
}

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

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

SeregaT писал(а):...Походу запарка вот с этими строчками:
//PORTD=0x00;
//DDRD=0xFF;


Ну ещё бы. Вы пытаетесь что-то делать - присваивать значения ВНЕ программного модуля. Надо сунуть эти строчки внутрь void main(void) и будет Вам счастье...
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Барсик писал(а):В ней должен быть главный программный модуль:

void main(void)
{
...
}

Но ведь массив должен находится в пределах главного программного модуля?
Ну вот так правильно?
Вложения
001.c
(2.85 КБ) 328 скачиваний
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

Вообще-то массив должен находиться в памяти контроллера :) В ОЗУ, ПЗУ или EEPROM. А вот объявляться может в разных местах. Тот большой кусок в Вашей программе с единицами и нулями это ОБЪЯВЛЕНИЕ массива с присвоением значений. Объявление может быть где угодно. Объявили внутри main - будет локальным. Объявили вне - будет глобальным. Видели строчку в Вашей программе:
// Declare your global variables here
?
Если сразу после неё сунете текст с объявлением массива, Ваш массив будет глобальным.
А в цикле идет РАБОТА с массивом. В цикле Вы извлекаете значение из очередного элемента массива и выпихиваете его через порт контроллера. А сам массив как сидит где-то в памяти, так и сидит себе...
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Изображение
Изображение
Скелет колобка состоит из черепа.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Аксель
А как вот ЭТО сделать? Как оно определяет угол поворота или типа того? Это на Си? Не могли-бы Вы показать исходник? :roll: Ну или в личку ;)
Вот так и совмещают микроконтроллер и швейную машинку :)))
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

:)) Ерундень. Хорошо, подробности в личку напишу.

Здесь на сайте где-то были подобные примеры индикации.
Это динамическая светодиодная индикация с механической разверткой.
Скелет колобка состоит из черепа.
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Сделал USB-программатор из датакабеля (подробней в разделе о МК).
Мелочь, а приятно! :)))
Скелет колобка состоит из черепа.
biolog
Родился
Сообщения: 3
Зарегистрирован: Вс мар 01, 2009 20:04:18
Откуда: Узбекистан,Ташкент

Сообщение biolog »

1:Подойдет ли ATmega128 для первого знакомства с МК?
2:Сколько стоит этот МК?
3:Какой лучше брать ATmega128;128L;-16AC;-16AL?
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Аксель писал(а):Сделал USB-программатор

Я сейчас то-же сварганил USB программатор. Даже работает!!! :)
Кстати, прошивает в 3,5 раза быстрее чем на COM (правда на COM у меня UniProf работала только в режиме "тормоз")
Осталось только выпилить по размеру и вставить в корпус (возьму от электронного транса для ламп). Ну еще шлейф поменять надо, был только широкий, его и поставил пока).
Изображение
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Подскажите пжалста такую штуку. Вот хочу сделать переходник для программатора, чтобы прошивать МК отдельно от всего (тоесть просто панелька с зажимом). Но хочу туда-же припаять кварц, чтобы прошивать МК, которые запрограммированы на внешний резонатор. Я с фьюзами пока толком не разбирался, но как я понял, достаточно выставить фьюзы на работу с внешним резонатором, и МК будет работать на частоте кварца? Или эту частоту то-же надо где-то выставить? Надо ли отключать внешний кварц, когда МК запрограммирован на работу с внутренним RC резонатором?
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

...да, МК будет работать на частоте кварца.
Кварц убирать необязательно при работе МК от внутреннего тактового генератора.
Скелет колобка состоит из черепа.
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Сделал usb-to-lpt переходник из раздела "Интеграция с ПК". И понял я, что это хорошо. :))
Он у меня теперь опционально может быть lpt или программатором stk200/300.
Вложения
lpt_und_stk200.jpg
(32.17 КБ) 413 скачиваний
Скелет колобка состоит из черепа.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

О! Кажись это то, что мне надо :) А где там про это?
Не это случайно?
http://www-user.tu-chemnitz.de/~heha/ba ... -15.htm.en
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Владимир К. писал(а):Переходник USB - LPT с сайта www.cncfiles.ru , файл 67.
Как заявлено, обеспечивает почти 100% совместимость с реальным LPT. Очень удобно в использовании.


Вот там точно с описанием на понятном языке. ;)

Скачал оттуда.
(Собрал не совсем придерживаясь схемы: кондёр другой вместо с4,резистора на ресет нет :), подтягивающий резистор на 2.2 К И перемычки для себя: опционально первый пин / питание, и 2-12 3-11 (для определения как stk200/300 когда надо)) :)
Вложения
USB-to-LPT ATmega8.jpg
(78.88 КБ) 438 скачиваний
Скелет колобка состоит из черепа.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Тот программатор, который я сделал, то-же отлично работает, но (как я понял) он поддерживается только одной прогой. Хотя это не так важно, главное что он от USB работает. Хочу туда еще и USB флешку впаять (чтобы там держать нужный софт, прошивки и драйвера), если найду USB разветвитель с платой достаточно маленького размера.
Но идея с LPT USB мне понравилась :)
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

А какой Вы собрали программатор?

Можно проще, чем искать usb-hub (или делать самому) - чуть менее функционально, но быстро и практично: три переключателя. На питание, на D+, на D- . Или вариации на эту тему.
Скелет колобка состоит из черепа.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Аксель писал(а):А какой Вы собрали программатор?

Вот этот: http://easyelectronics.ru/usb-programma ... sbasp.html
Можно проще, чем искать usb-hub (или делать самому) - чуть менее функционально, но быстро и практично: три переключателя. На питание, на D+, на D- . Или вариации на эту тему.

Ну вообще-то можно и так, но это неудобно, да и каждый раз разбирать корпус или выводить переключатели наружу... Проще флешку отдельно таскать ;)
Аватара пользователя
Pippeytz
Потрогал лапой паяльник
Сообщения: 396
Зарегистрирован: Ср май 28, 2008 19:30:31
Откуда: Донецк
Контактная информация:

Сообщение Pippeytz »

Лутьше собрать одну паралельку - сразу и оживлять и прошивать. Она все умеет.Хотя у меня и ЮСБИ програматор, и паралелька.. Так удобнее
Полный пипеутз.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18852
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

А что из себя представляет параллельный прграмматор?
Ответить

Вернуться в «Теория»