Собрал схему с мигающим светодиодом на контролере ATmega16L. Все работает, но возникло пару вопросов.
Первое. Задержка _delay_ms(); не совпадает по времени, у меня одна секунда получается при задержке примерно 120 !
Почему так?
Второе. Както странно ведет себя компилятор (WinAvr). Когда я попытался использовать функцию delay(); которая есть в примерах на сайте, то обнаружил что в бинарник она вообще не попадает, он не меняется даже в размерах когда я вставляю/удаляю этот кусок кода, и соответственно программа ведет себя так, как будто его просто нет.
В чем может быть проблема?
Надеюсь что написал понятно
1. Too Short - 28 Декабря, 2008 - 18:48:53 - перейти к сообщению
2. бот_м_16 - 28 Декабря, 2008 - 20:43:11 - перейти к сообщению
1)ms это милисекунда одна секунда=1000милисекунд !!! Такое возможно если вы неправильно указали компилятору частоту тактирования мк
2)А что такое бинарник , а можно сходник поглядеть?
2)А что такое бинарник , а можно сходник поглядеть?
3. darkblue - 29 Декабря, 2008 - 10:50:26 - перейти к сообщению
Я пользуюсь CodeVisionAVR ,в нём всё работает
4. Too Short - 29 Декабря, 2008 - 14:07:07 - перейти к сообщению
Первый вопрос снимаю! Почему нигде не написано, что нужно прописывать фьюзы?
Бинарником я назвал файл hex который мы прошиваем.
Исхожник сейчас такой:
Цитата:
2)А что такое бинарник , а можно сходник поглядеть?
Бинарником я назвал файл hex который мы прошиваем.
Исхожник сейчас такой:
CODE:
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL // 8 MHz
int main(void) // начало основой программы
{
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
while (1) { // Ѕесконечный цикл
//PORTD = 0xff; // установить "1" на всех лини€х порта D
PORTD |= _BV(PD0);
PORTD &= ~_BV(PD1); //Ѕит 1 погас
_delay_ms(50); // ∆дем
//PORTD = 0x00; // установить "0" на всех лини€х порта D
PORTD &= ~_BV(PD0); //Ѕит 0 погас
PORTD |= _BV(PD1); // Ѕит 1 горит
_delay_ms(15); // ∆дем
} // закрывающа€ скобка бесконечного цикла
} // закрывающа€ скобка основной программы
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL // 8 MHz
int main(void) // начало основой программы
{
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
while (1) { // Ѕесконечный цикл
//PORTD = 0xff; // установить "1" на всех лини€х порта D
PORTD |= _BV(PD0);
PORTD &= ~_BV(PD1); //Ѕит 1 погас
_delay_ms(50); // ∆дем
//PORTD = 0x00; // установить "0" на всех лини€х порта D
PORTD &= ~_BV(PD0); //Ѕит 0 погас
PORTD |= _BV(PD1); // Ѕит 1 горит
_delay_ms(15); // ∆дем
} // закрывающа€ скобка бесконечного цикла
} // закрывающа€ скобка основной программы
5. бот_м_16 - 29 Декабря, 2008 - 17:40:51 - перейти к сообщению
По томучто предполагается что вы это знаете (Проверка на лоха если не задался этим вопросом то не понимаеш что делаеш а если понимаеш то задаёшся этим вопросом МОЛОДЕЦ! )