quartzz188 Опубликовано 10 января, 2010 Поделиться Опубликовано 10 января, 2010 Доброго времени суток всем ! Я тут новенький. И вот возникла такая проблема. AVR Studio 4.18. МК : ATmega 8515 Задание : "Отображать последовательно через одну секунду числа от 0 до 12 в двоичном кода, с помощью светодиодов. Управление отображением воспроизводится с помощью таймера Т1" Вроде бы просто.. но столкнулся с тем, что как доходит до задержки, переходит в блок описания задержки, и там зацикливается, и не важно сколько я ставлю вместо моих 2160 циклов, хоть единицу, он всё равно зацикливается! В коде всё подробно описано что зачем делаю. Помогите разобраться с этим. П.С. просьба сильно не пинать, т.к. только начал познавать программирование МК. /* расчет времени задержки : 1с = 600мс 600мс * 3.6864 Мгц / 1024 = 2211840/1024 = 2160 */ #include <avr/io.h> void my_delay(void) //описание функции задержки { TCNT1=0; /* обнуление таймера */ while(TCNT1<2160) {} } int main (void) { DDRB = 0xFF; // настраиваем порт Б на вывод PORTB = 0xFF; TCCR1A=0x00; /* послдении 8 бит таймера не трогаем */ TCCR1B=0b00000101; /* настраиваем делитель частоты для таймера Т1, см. таблицу, в данном случае делитель 1024 */ unsigned char a = 0; /* доп. переменная */ while (1) /* бесконечный цикл */ { a = 0; /* сбрасываем значение "а" на начальное */ while (a<=12) /* выполняется от 0 до 12 */ { PORTB = a^0xFF; /* выводим значение "а", инвертируемое*/ my_delay(); /* вызываем задержку в 1с, осуществленную таймером Т1 */ a++; /* увеличиваем значение на 1 */ } PORTB = 0x00; /* сигнализируем о окончании цикла подсчета, зажиаются все светодиоды*/ } } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mazzi Опубликовано 12 января, 2010 Поделиться Опубликовано 12 января, 2010 AVR Studio 4.18. Насколько я знаю, в AVR Studio пишут на ассемблере, а у вас исходник на Си. Укажите точнее средства разработки. 0 Пока ты жив, надежда есть. Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Saneoc Опубликовано 12 января, 2010 Поделиться Опубликовано 12 января, 2010 Скорей всего это авр студио а компилятор GCC . Не могу я найти ошибку в вашем коде , но я бы написал по другому . Я бы сделал все тоже только в прерываниях . настраиваешь таймер чтоб было прерывание раз в секунду , а вобработчике напистаь чтото типа : for (i=0;i=<12;i++); PORTB=i ; 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
terminal Опубликовано 13 января, 2010 Поделиться Опубликовано 13 января, 2010 А не проще поставить дополнительный кварц на 32768, и работать по прерываниям ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Borisov_E Опубликовано 13 января, 2010 Поделиться Опубликовано 13 января, 2010 там зацикливается, и не важно сколько я ставлю вместо моих 2160 циклов, хоть единицу, он всё равно зацикливается! Прикладывайте проЖект !!!!!!!! Включите просмотр АСМ и шагайте зырьте что она делает в зацикливании. Удобней пожалуй в PROTEUS моделировать - AVR студия теперь с ним стыкуется пекрасно да и WinAVR тоже. У меня не циклится а норально паузы отрабатывает. Вот прожект в прицепе. А не проще поставить дополнительный кварц на 32768, и работать по прерываниям ? Очевидно СЛОЖНЕЙ - вы сами то подумайте над своим вопросом. test.rar 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.