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

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
therian
Говорящий с текстолитом
Сообщения: 1682
Зарегистрирован: Чт окт 20, 2005 12:46:34
Контактная информация:

Сообщение therian »

во первых switch работает толко с (char, (un)signed char, (un)signed short, (un)signed int,
(un)signed long (un)signed long long) типами а PINA.0 один бит а не байт
теперь о синтаксисе
вместо switch (PINA.0==0) нужно switch (PINA.0)
вместо case PINA.0==1: PORTD.2=1; нужно case 1: PORTD.2=1; break;
и какой default: ???? PINA.0 либо 0 либо 1 где 3тий вариант ?! (1/2) !?

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

Сообщение SeregaT »

Подскажите, как разрешить прерывания? При компиляции выдаёт ошибку: Error: C:\cvavr\examples\interrupt\interrupt.c(126): undefined symbol 'interrupt'. В какой вкладке разрешаются прерывания? Мне надо на INT0 и INT1.
P.S. Вроде нашёл...
Подскажите вот еще что...
Вот код с прерываниями, тоесть основная программа прерывается, на дисплей выводится INT0 или INT1 и затем программа продолжается.
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
lcd_clear();
lcd_putsf ("INT0");
delay_ms (5);

}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
lcd_clear();
lcd_putsf ("INT1");
delay_ms (5);
}

Но почему-то надписи INT0 и INT1 высвечиваются слишком долго (2 - 3 секунды), хотя должны (или всётаки не должны?) гаснуть практически сразу.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Пример с датчиками:
допустим стоят три датчика - один подсоединен к PINA.0, другой к PINA.1, а третий к PINA.2.
если есть сигнал с какогото го датчика, индикатор это фиксирует (индикатор светодиодный, подключены к выходам порта D).
если индикатор фиксирует датчик задымления (PINA.2), то включаются двигатели продувки помещения.
Так можно?

// сигналы с датчиков

while (1)
{
if (PINA.0)
{
PORTD.0=1; //
delay_ms(100); //
PORTD.0=0; //
delay_ms(100); //
}
if (PINA.1)
{
PORTD.1=1; //
delay_ms(100); //
PORTD.1=0; //
delay_ms(100); //
}
if (PINA.2)
{
PORTD.2=1; //
delay_ms(100); //
PORTD.2=0; //
delay_ms(100); //
}

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

Сообщение SeregaT »

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

Сообщение Arlleex »

int x
for (x=2; x<5>5, затем, если это выражение истинно, то выполняется "какой то код программы", и это код программы выполняется столько раз, пока x<5, т.е. пока это выражение истинно!
когда выражение х<5 становится ложно, из за выражениея х++, все прекращается и программа перепрыгивает на следующий оператор, стоящий после for.

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

Сообщение Arlleex »

SeregaT писал(а):А сам что, не попробовал?


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

Сообщение SeregaT »

Stalker46 писал(а):int x
for (x=2; x<5>5,
........
правильно?

:shock:
Может так:
for (x=2; x<5; x++); ?
Если так, то 3 раза.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение SeregaT »

Stalker46 писал(а):просто у меня щас протеуса нет, он намхнулся... :(

А, понятно. Ну прога вроде правильно написана.
А что, в железе собирать желание пока не возникало?

P.S. А вот интересно, сколько перезаписей выдержит МК? Пишут вроде 10000, но это наверное типа как гарантированное количество перезаписей, а реально наверное и больше выдержит?
И как считается, 10000 полных перезаписей, или без разницы, на сколько я память заполняю? (просто слышал, что некоторая флеш память не записывает маленькие объёмы информации в одно и то-же место, типа чтобы на дольше хватило). Просто я иногда перезаписываю раз по 20 - 30 в день (а может и больше), вот и стало интересно, на сколько мне хватит одной микросхемы (у меня их конечно не одна, но шью в основном одну)..
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

SeregaT писал(а):А, понятно. Ну прога вроде правильно написана.
А что, в железе собирать желание пока не возникало?



возникло, вот только пока что СТК200/300 собираю, не могу пока что найти разъем Папа на LPT, и шдейф на 10 проводов.
так бы все уже готово, вроди бы...

Народ, я вот не в тему, :oops: Но:

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

Сообщение SeregaT »

Stalker46 писал(а):Какие МК поддерживает STK200/300 ?

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

Сообщение SeregaT »

Подскажите такую штуку:
Переменная на LCD отображается например в таком виде (по порядку):
8, 9, 10, 11...
Можно ли сделать чтобы отображалась так:
08, 09, 10, 11?
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

SeregaT писал(а):LCD - Можно ли сделать чтобы отображалась так:
08, 09, 10, 11?

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

Сообщение SeregaT »

ikarab писал(а):Очевидно ДА !

А как? Я уже всяко пробовал. Единственно, что смог придумать, это проверять условие, и если переменная меньше 10, то писать впереди ноль (или назначать отдельные переменные для десятков и единиц,. Но это уже вообще изврат). Наверняка можно как-то получше сделать.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

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

Stalker46 писал(а):...сколько раз тело цикла повторится в данном случае? 3 раза?

Stalker46 писал(а):...просто у меня щас протеуса нет...

И почему вы все так боитесь использовать отладчик AVR Studio ? Который, кстати, бесплатный, в отличие от "Протеуса".
Как прикрутить отладчик AVR Studio к CodeVisionAVR, я писал выше:
http://radiokot.ru/forum/viewtopic.php?p=180475#180475
Можно будет как угодно "гулять" по тексту программы, в том числе, выполнять программу пошагово, задавать точки останова, смотреть регистры и значения переменных, и т.д. и т.п.
И свои вопросы можно задавать не в форум, а спросить у отладчика... Быстрее получится...
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

Барсик писал(а):Можно будет как угодно "гулять" по тексту программы
И сколько угодно в ожидании работы всего того что студия не симулирует.

А результат симуляции вам придется ЗАПОМНИТЬ ! Так как нету в студии таких вируальных приборов которыми и PROTEUS богат и даже маленький 4 Мб всего - VMLAB.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

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

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

Сообщение Pippeytz »

Та в нем ниче особо полезного нету, там намонго меньше возможностей чем в протерусе. И чего вы так на проерус накинулись, я сижу в нем и радуюсь, никакие буржуи денег не требуют
Полный пипеутз.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение SeregaT »

Подскажите, как сделать, чтобы задержку можно было изменять (кнопками)? Ну типа может вместо времени задержки, как-то вставить переменную?
Ответить

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