Страница 39 из 115

Добавлено: Чт апр 02, 2009 00:01:11
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 тут ?

Добавлено: Чт апр 02, 2009 16:57:04
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 секунды), хотя должны (или всётаки не должны?) гаснуть практически сразу.

Добавлено: Пт апр 03, 2009 18:36:00
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)
{
// код управления двигателями
}
}

Добавлено: Пт апр 03, 2009 19:16:19
SeregaT
А сам что, не попробовал?

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

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

Добавлено: Пт апр 03, 2009 19:22:43
Arlleex
SeregaT писал(а):А сам что, не попробовал?
просто у меня щас протеуса нет, он намхнулся... :(

Добавлено: Пт апр 03, 2009 19:22:58
SeregaT
Stalker46 писал(а):int x
for (x=2; x<5>5,
........
правильно?
:shock:
Может так:
for (x=2; x<5; x++); ?
Если так, то 3 раза.

Добавлено: Пт апр 03, 2009 19:26:11
Arlleex
ой, опечатался... :oops:
сорри

Добавлено: Пт апр 03, 2009 19:31:01
SeregaT
Stalker46 писал(а): просто у меня щас протеуса нет, он намхнулся... :(
А, понятно. Ну прога вроде правильно написана.
А что, в железе собирать желание пока не возникало?

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

Добавлено: Пт апр 03, 2009 20:28:50
Arlleex
SeregaT писал(а):А, понятно. Ну прога вроде правильно написана.
А что, в железе собирать желание пока не возникало?
возникло, вот только пока что СТК200/300 собираю, не могу пока что найти разъем Папа на LPT, и шдейф на 10 проводов.
так бы все уже готово, вроди бы...

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

Какие МК поддерживает STK200/300 ?

Добавлено: Пт апр 03, 2009 20:33:55
SeregaT
Stalker46 писал(а): Какие МК поддерживает STK200/300 ?
Все AVR (Ну может и есть такие, которые не поддерживает, но я про такие пока не слышал).

Добавлено: Вт апр 07, 2009 09:14:59
SeregaT
Подскажите такую штуку:
Переменная на LCD отображается например в таком виде (по порядку):
8, 9, 10, 11...
Можно ли сделать чтобы отображалась так:
08, 09, 10, 11?

Добавлено: Вт апр 07, 2009 09:55:31
ikarab
SeregaT писал(а):LCD - Можно ли сделать чтобы отображалась так:
08, 09, 10, 11?
Очевидно ДА !

Добавлено: Вт апр 07, 2009 10:29:16
SeregaT
ikarab писал(а):Очевидно ДА !
А как? Я уже всяко пробовал. Единственно, что смог придумать, это проверять условие, и если переменная меньше 10, то писать впереди ноль (или назначать отдельные переменные для десятков и единиц,. Но это уже вообще изврат). Наверняка можно как-то получше сделать.

Добавлено: Ср апр 08, 2009 13:48:49
Барсик
Stalker46 писал(а):...сколько раз тело цикла повторится в данном случае? 3 раза?
Stalker46 писал(а):...просто у меня щас протеуса нет...
И почему вы все так боитесь использовать отладчик AVR Studio ? Который, кстати, бесплатный, в отличие от "Протеуса".
Как прикрутить отладчик AVR Studio к CodeVisionAVR, я писал выше:
http://radiokot.ru/forum/viewtopic.php?p=180475#180475
Можно будет как угодно "гулять" по тексту программы, в том числе, выполнять программу пошагово, задавать точки останова, смотреть регистры и значения переменных, и т.д. и т.п.
И свои вопросы можно задавать не в форум, а спросить у отладчика... Быстрее получится...

Добавлено: Ср апр 08, 2009 14:39:18
ikarab
Барсик писал(а):Можно будет как угодно "гулять" по тексту программы
И сколько угодно в ожидании работы всего того что студия не симулирует.

А результат симуляции вам придется ЗАПОМНИТЬ ! Так как нету в студии таких вируальных приборов которыми и PROTEUS богат и даже маленький 4 Мб всего - VMLAB.

Добавлено: Ср апр 08, 2009 21:37:31
Барсик
Забыл спросить. А VMLAB такой же бесплатный как и "Протеус"? Или подешевле?

Добавлено: Ср апр 08, 2009 22:10:53
Pippeytz
Та в нем ниче особо полезного нету, там намонго меньше возможностей чем в протерусе. И чего вы так на проерус накинулись, я сижу в нем и радуюсь, никакие буржуи денег не требуют

Добавлено: Ср апр 08, 2009 22:17:10
Arlleex
ага! я тоже не понял про деньги, за то что он платный...

Добавлено: Чт апр 09, 2009 03:59:29
SeregaT
Подскажите, как сделать, чтобы задержку можно было изменять (кнопками)? Ну типа может вместо времени задержки, как-то вставить переменную?