CodeVision AVR в вопросах и ответах
-
Александр 071
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Сб янв 24, 2009 19:00:08
- Откуда: Волгоград
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Объясните пожалуйста, как в CodeVision нужно правильно установить галочки для фьюзов&?чтобы использовать встроенный тактовый генератор на 8МГц для ATmega16!
- evgeniy66
- Нашел транзистор. Понюхал.
- Сообщения: 151
- Зарегистрирован: Пт май 01, 2009 08:58:42
- Откуда: г. Коломна
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Александр 071 писал(а):Объясните пожалуйста, как в CodeVision нужно правильно установить галочки для фьюзов&?чтобы использовать встроенный тактовый генератор на 8МГц для ATmega16!
Смотрите в теме о фьюзах.
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Если объявить глобальную переменную так:
то она хранится в flash?
С чем может быть связана проблема самообнуления так объявленной переменной? Она просто в процесе работы сама обнуляется и не могу понять почему. Если например хранить ее в еерrom :
то всё работает нормально.
Код: Выделить всё
unsigned long int distance = 0;то она хранится в flash?
С чем может быть связана проблема самообнуления так объявленной переменной? Она просто в процесе работы сама обнуляется и не могу понять почему. Если например хранить ее в еерrom :
Код: Выделить всё
eeprom unsigned long int distance = 0;то всё работает нормально.
Я не Сашок!!!
-
Saadov
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Вт авг 19, 2008 23:39:59
- Откуда: г.Смоленск
Re: CodeVision AVR в вопросах и ответах
sachok писал(а):С чем может быть связана проблема самообнуления так объявленной переменной? Она просто в процесе работы сама обнуляется и не могу понять почему..
А вы её изменяете где нибудь в программе?
Возможно стоит объявить её как static, прочитайте об этом в хелпе компилятора в разделе Variables
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
static не помогло.
Метод в котором происходит изменение переменной
Метод в котором происходит изменение переменной
Код: Выделить всё
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); //вызов метода
Я не Сашок!!!
-
Несип
- Родился
- Сообщения: 2
- Зарегистрирован: Ср окт 14, 2009 20:33:09
- Откуда: Санкт-Петербруг
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Привет, решил помучиться с микроконтроллерами - вот какая беда:
нажимаю кнопку Run the chip programmer и вываливается окошко настройки программатора. Но в нем нет закладки Chip Clock.

вот как это должно выглядить. Программатор stk200 выбран (на деле - 5 проводков).
В чем может быть загвоздка? При попытке зашить он вываливает окошко примерно такого содержания:
адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.
нажимаю кнопку Run the chip programmer и вываливается окошко настройки программатора. Но в нем нет закладки Chip Clock.

вот как это должно выглядить. Программатор stk200 выбран (на деле - 5 проводков).
В чем может быть загвоздка? При попытке зашить он вываливает окошко примерно такого содержания:
Ошибка соединения, проверьте следующие вещи:
_Питание программатора включено
_Тип программатора в настройках выбран верно
_Адрес порта принтера выбран верно
_AVR чип не поврежден
адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: CodeVision AVR в вопросах и ответах
Народ помогите пожалуйста!
Посмотрите правильно я настроил USART по этой спецификации.

Моя настройка
Посмотрите правильно я настроил USART по этой спецификации.

Моя настройка
Код: Выделить всё
// 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;
STM32F4 Discovery + KEIL + Windows 7
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Lavra писал(а):volatile
не помогло(
- Вложения
-
- source.txt
- исходник
- (5.27 КБ) 392 скачивания
Я не Сашок!!!
-
Александр 071
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Сб янв 24, 2009 19:00:08
- Откуда: Волгоград
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Несип писал(а):Привет, решил помучиться с микроконтроллерами - вот какая беда:
нажимаю кнопку Run the chip programmer и вываливается окошко настройки программатора. Но в нем нет закладки Chip Clock.![]()
вот как это должно выглядить. Программатор stk200 выбран (на деле - 5 проводков).
В чем может быть загвоздка? При попытке зашить он вываливает окошко примерно такого содержания:Ошибка соединения, проверьте следующие вещи:
_Питание программатора включено
_Тип программатора в настройках выбран верно
_Адрес порта принтера выбран верно
_AVR чип не поврежден
адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.
Была такая же проблемма. Зайдите в диспетчер устройств. Выберите порты и щёлкните "обновить конфигурацию оборудования". Это глюк винды.
-
Александр 071
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Сб янв 24, 2009 19:00:08
- Откуда: Волгоград
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Подскажите, пожалуйста, что сделать чтобы удавалось задержку устанавливать в микросекунды?
Я писал вот так:
while(1)
{
for (i=0;i<=63;i++)
{
if (PIND.2==0)
{
n=n+0,001;
delay_ms(200);
}
if (PIND.3==0)
{
n=n-0,001;
delay_ms(200);
}
if(n<=0)
{
n=0,01;
}
PORTD.7=M[i];
delay_ms(n);
}
}
Если писать n целое в миллисекундах то всё хорошо работает. Если так как в коде то ничего не работает.
Если писать delay_us(n), то он ругается.
Я писал вот так:
while(1)
{
for (i=0;i<=63;i++)
{
if (PIND.2==0)
{
n=n+0,001;
delay_ms(200);
}
if (PIND.3==0)
{
n=n-0,001;
delay_ms(200);
}
if(n<=0)
{
n=0,01;
}
PORTD.7=M[i];
delay_ms(n);
}
}
Если писать n целое в миллисекундах то всё хорошо работает. Если так как в коде то ничего не работает.
Если писать delay_us(n), то он ругается.
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
только что попробовал, компилит без вопросов. как ругается то?
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
-
Александр 071
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Сб янв 24, 2009 19:00:08
- Откуда: Волгоград
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
sema писал(а):только что попробовал, компилит без вопросов. как ругается то?
Дело не в ошибке. Всё компилит нормально. он не компилит если ввместо delay_ms(n) поставить delay_us(n), мне нужны задержки в микросекундах.
Re: CodeVision AVR в вопросах и ответах
Функция задержки по определению предназначена для работы с целыми числами: void delay_ms(unsigned int n); А вы пытаетесь ей подсунуть значение переменной float. По поводу ругани на delay_us, посмотрите частоту тактового генератора. Она должна быть согласована с той задержкой в микросекундах, которую хотите получить. Числа, определяющие задержку тоже должны быть целыми. Еще один момент: если в программе используются прерывания, то до вызова задержки они должны быть запрещены (после окончания разрешены).Александр 071 писал(а):Если писать n целое в миллисекундах то всё хорошо работает. Если так как в коде то ничего не работает. Если писать delay_us(n), то он ругается.
-
Александр 071
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Сб янв 24, 2009 19:00:08
- Откуда: Волгоград
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Спасибо. Я это только что понял, кода справку прочитал.
-
Несип
- Родился
- Сообщения: 2
- Зарегистрирован: Ср окт 14, 2009 20:33:09
- Откуда: Санкт-Петербруг
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Спасибо, заработало.
- Corporal
- Прорезались зубы
- Сообщения: 226
- Зарегистрирован: Вт мар 03, 2009 11:37:31
- Откуда: Николаевская обл.
Re: CodeVision AVR в вопросах и ответах
Всем привет, не могу понять, как мне несколько интовских значений записать в строку? То есть имеется int a,b,c; соответственно равно 5,2,0. И есть char str; В результате мне нужно str="str=5,2,0";
Пробовал так
не помогло.
Мне важно именно строка а не вывод на экран...
Пробовал так
Код: Выделить всё
str=((char)a+(char)b+(char)c);
lcd_putchar (str);не помогло.
Мне важно именно строка а не вывод на экран...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
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);если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Corporal
- Прорезались зубы
- Сообщения: 226
- Зарегистрирован: Вт мар 03, 2009 11:37:31
- Откуда: Николаевская обл.
Re: CodeVision AVR в вопросах и ответах
Хорошо, я, наверное, не правильно задал вопрос.
есть:
допустим это все тикает и мне надо ( по нажатии на кнопку) фиксировать время и занести его в память одной строкой. Так у меня должно быть (сколько позволяет память) N значений времени.
ну, а дальше (еще не знаю как) должно определиться есть ли передача по ком порту? если есть то слить все данные.
есть:
Код: Выделить всё
eeprom char str ;
int dsec, //десятые секунды
edsec,//единицы секунды
dmin,// десятки минуты
edmin;// еденицы минуты
допустим это все тикает и мне надо ( по нажатии на кнопку) фиксировать время и занести его в память одной строкой. Так у меня должно быть (сколько позволяет память) N значений времени.
ну, а дальше (еще не знаю как) должно определиться есть ли передача по ком порту? если есть то слить все данные.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
уважаемый, во-первых, eeprom char str обозначает всего-навсего один разъединственный байт, а вовсе не строку. и напихать туда кучу инфы никак не выйдет.Corporal писал(а):Хорошо, я, наверное, не правильно задал вопрос.
есть:Код: Выделить всё
eeprom char str ;
int dsec, //десятые секунды
edsec,//единицы секунды
dmin,// десятки минуты
edmin;// еденицы минуты
допустим это все тикает и мне надо ( по нажатии на кнопку) фиксировать время и занести его в память одной строкой. Так у меня должно быть (сколько позволяет память) N значений времени.
ну, а дальше (еще не знаю как) должно определиться есть ли передача по ком порту? если есть то слить все данные.
во вторых, из ваших слов следует, что речь идет не о строке, а массиве строк - это так же меняет все дело, хоть и непринципиально.
в третьих, хранить строки в eeprom может оказаться весьма невыгодно: ее ресурс весьма ограничен и пишется туда довольно долго.
так что обдумайте сперва все, а потом задавайте конкретные вопросы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!