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

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

Сообщение SeregaT »

Это было прописано. Вот сейчас USART настроил, на sprintf вроде перестало ругаться, но вот на lcd_buffer всёравно ругается.
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

глянь в c:\cvavr\examples\ проекты DS18B20 и DS1820

а мне на поезд пора бежать, в Москву в коммадировку еду
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Ага, вроде работает :) надо было прописать char lcd_buffer[33]; Спасибо за советы...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение SeregaT »

Для того, чтобы на LCD выводить кириллицу, надо прошивать в контроллер дисплея соответствующие шрифты, или можно как-то программно сделать?
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

char i; //
for (i=5;i<10;++i;) {
PORTD.0=1; //
delay_ms(100); //
PORTD.0=0; //
delay_ms(100); //

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

Сообщение SeregaT »

Stalker46 писал(а):char i; //
for (i=5;i<10;++i;) {
PORTD.0=1; //
delay_ms(100); //
PORTD.0=0; //
delay_ms(100); //

а какая директива нужна? :oops:

А зачем в цикле for точка с запятой после 5, 10, i...? Там просто запятую надо. Ну и закрывающую фигурную скобку.
Аватара пользователя
Pippeytz
Потрогал лапой паяльник
Сообщения: 396
Зарегистрирован: Ср май 28, 2008 19:30:31
Откуда: Донецк
Контактная информация:

Сообщение Pippeytz »

А нахрена тибе юсарт для работы с лсд?
Полный пипеутз.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение SeregaT »

Stalker46 писал(а):все равно указывает на ошибки for,char.

А зачем char? Объяви переменную Int i;
Pippeytz писал(а):А нахрена тибе юсарт для работы с лсд?

Хз. Я пока не разобрался, что это такое. Как я понял, это что-то для передачи данных на комп? А с LCD вроде и без этого работает.
P.S. Фигасе... :shock: Только сейчас заметил. Даже простенькая прога с LCD места занимает дофига и больше... (больше 5 кб). Это нормально, или я так криво прогу состряпал?
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

я хочу попользоваться директивой #define

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

Вот фрагмент программы:

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд

надо так сделать?

#define A PORTD.0=1;\ // зажигаем 1 светодиод
delay_ms(100);\ // ждем 100 миллисекунд
PORTD.0=0;\ // гасим 1 светодиод
delay_ms(100);\ // ждем 100 миллисекунд

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

Сообщение SeregaT »

Я пока с #define не разбирался, но тут полюбому фрагмент надо взять в скобки (фигурные).
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

вот некоторый код:
я делаю проект.
При нажатии на кнопку на входе но порта А, выходы потра D задействованы на светодиоды.

дело такое:
нажимаем на кнопку, работает режим 1, нажимаем на кнопку - работает режим 2.

вот код:

// основной код первого режима

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=0; // гасим 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.6=1; // зажигаем 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD. 6=0; // гасим 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.7=1; // зажигаем 8 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.7=0; // гасим 8 светодиод
delay_ms(100); // ждем 100 миллисекунд

// основной код второго режима

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=0; // гасим 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.6=1; // зажигаем 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD. 6=0; // гасим 7 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.7=1; // зажигаем 8 светодиод
delay_ms(100); // ждем 100 миллисекунд

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=0; // гасим 6 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.6=1; // зажигаем 7 светодиод
delay_ms(100); // ждем 100 миллисекунд

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=0; // гасим 5 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.5=1; // зажигаем 6 светодиод
delay_ms(100); // ждем 100 миллисекунд

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=0; // гасим 4 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.4=1; // зажигаем 5 светодиод
delay_ms(100); // ждем 100 миллисекунд

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=0; // гасим 3 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.3=1; // зажигаем 4 светодиод
delay_ms(100); // ждем 100 миллисекунд

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=0; // гасим 2 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.2=1; // зажигаем 3 светодиод
delay_ms(100); // ждем 100 миллисекунд

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.0=0; // гасим 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
PORTD.1=1; // зажигаем 2 светодиод

PORTD.0=1; // зажигаем 1 светодиод
delay_ms(100); // ждем 100 миллисекунд
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Делать такую кучу не в виде массива - полный изврат :)
С массивом можно наверное вдвое больше наворотить, при втрое меньших размерах.
А по поводу режимов.... Наверное надо использовать функцию Switch
Вот пример: http://radiokot.ru/forum/viewtopic.php?p=180124#180124
Последний раз редактировалось SeregaT Пн мар 30, 2009 15:39:00, всего редактировалось 1 раз.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

ну я массивами не знаком пока что... :roll:
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

у меня есть небольшие проблемы с пониманием языка Си :oops: .

Вот в книгах дается описание, что и как, но я не понимаю, что вписывать сюда, например:

#if A=15
[группа операторов 1]
#else
[группа операторов 2]
#endif
что вписывать в группу операторов....
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Stalker46 писал(а):что вписывать в группу операторов....

Как что? Действия, которые выделывает программа :)
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение SeregaT »

Да
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

interrupt [прерывание] void adc_isr(void)
{
код выполняемый при возникновении разрешенного локально и глобально прерывания
}

а что вписывать в "прерывание"? в квадратные скобки всегда?
всегда ли adc_isr?
Не умеешь - не берись, но не взявшись не научишься...
Ответить

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