Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт мар 25, 2010 00:02:11
Объясните пожалуйста, как в CodeVision нужно правильно установить галочки для фьюзов&?чтобы использовать встроенный тактовый генератор на 8МГц для ATmega16!
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Смотрите в теме о фьюзах.Александр 071 писал(а):Объясните пожалуйста, как в CodeVision нужно правильно установить галочки для фьюзов&?чтобы использовать встроенный тактовый генератор на 8МГц для ATmega16!
Код: Выделить всё
unsigned long int distance = 0;Код: Выделить всё
eeprom unsigned long int distance = 0;А вы её изменяете где нибудь в программе?sachok писал(а): С чем может быть связана проблема самообнуления так объявленной переменной? Она просто в процесе работы сама обнуляется и не могу понять почему..
Код: Выделить всё
void set_distance (int dist)
{
distance=distance+dist;
sprintf(str, "DIST: %u km",distance);
lcd_gotoxy(0,2);
lcd_putstr(str);
all_distance (dist);
}
set_distance(200); //вызов метода

адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.Ошибка соединения, проверьте следующие вещи:
_Питание программатора включено
_Тип программатора в настройках выбран верно
_Адрес порта принтера выбран верно
_AVR чип не поврежден

Код: Выделить всё
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
не помогло(Lavra писал(а):volatile
Была такая же проблемма. Зайдите в диспетчер устройств. Выберите порты и щёлкните "обновить конфигурацию оборудования". Это глюк винды.Несип писал(а):Привет, решил помучиться с микроконтроллерами - вот какая беда:
нажимаю кнопку Run the chip programmer и вываливается окошко настройки программатора. Но в нем нет закладки Chip Clock.![]()
вот как это должно выглядить. Программатор stk200 выбран (на деле - 5 проводков).
В чем может быть загвоздка? При попытке зашить он вываливает окошко примерно такого содержания:
адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.Ошибка соединения, проверьте следующие вещи:
_Питание программатора включено
_Тип программатора в настройках выбран верно
_Адрес порта принтера выбран верно
_AVR чип не поврежден
Дело не в ошибке. Всё компилит нормально. он не компилит если ввместо delay_ms(n) поставить delay_us(n), мне нужны задержки в микросекундах.sema писал(а):только что попробовал, компилит без вопросов. как ругается то?
Функция задержки по определению предназначена для работы с целыми числами: void delay_ms(unsigned int n); А вы пытаетесь ей подсунуть значение переменной float. По поводу ругани на delay_us, посмотрите частоту тактового генератора. Она должна быть согласована с той задержкой в микросекундах, которую хотите получить. Числа, определяющие задержку тоже должны быть целыми. Еще один момент: если в программе используются прерывания, то до вызова задержки они должны быть запрещены (после окончания разрешены).Александр 071 писал(а):Если писать n целое в миллисекундах то всё хорошо работает. Если так как в коде то ничего не работает. Если писать delay_us(n), то он ругается.
Код: Выделить всё
str=((char)a+(char)b+(char)c);
lcd_putchar (str);Corporal писал(а):Всем привет, не могу понять, как мне несколько интовских значений записать в строку? То есть имеется int a,b,c; соответственно равно 5,2,0. И есть char str; В результате мне нужно str="str=5,2,0";
Пробовал такне помогло.Код: Выделить всё
str=((char)a+(char)b+(char)c); lcd_putchar (str);
Мне важно именно строка а не вывод на экран...
Код: Выделить всё
char str[25];
sprintf(str,"str=%d,%d,%d",a,b,c);Код: Выделить всё
eeprom char str ;
int dsec, //десятые секунды
edsec,//единицы секунды
dmin,// десятки минуты
edmin;// еденицы минуты
уважаемый, во-первых, eeprom char str обозначает всего-навсего один разъединственный байт, а вовсе не строку. и напихать туда кучу инфы никак не выйдет.Corporal писал(а):Хорошо, я, наверное, не правильно задал вопрос.
есть:допустим это все тикает и мне надо ( по нажатии на кнопку) фиксировать время и занести его в память одной строкой. Так у меня должно быть (сколько позволяет память) N значений времени.Код: Выделить всё
eeprom char str ; int dsec, //десятые секунды edsec,//единицы секунды dmin,// десятки минуты edmin;// еденицы минуты
ну, а дальше (еще не знаю как) должно определиться есть ли передача по ком порту? если есть то слить все данные.