CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Александр 071
Открыл глаза
Сообщения: 61
Зарегистрирован: Сб янв 24, 2009 19:00:08
Откуда: Волгоград
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 071 »

Объясните пожалуйста, как в CodeVision нужно правильно установить галочки для фьюзов&?чтобы использовать встроенный тактовый генератор на 8МГц для ATmega16!
Аватара пользователя
evgeniy66
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пт май 01, 2009 08:58:42
Откуда: г. Коломна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение evgeniy66 »

Александр 071 писал(а):Объясните пожалуйста, как в CodeVision нужно правильно установить галочки для фьюзов&?чтобы использовать встроенный тактовый генератор на 8МГц для ATmega16!

Смотрите в теме о фьюзах.
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение sachok »

Если объявить глобальную переменную так:

Код: Выделить всё

unsigned long int distance = 0;

то она хранится в flash?
С чем может быть связана проблема самообнуления так объявленной переменной? Она просто в процесе работы сама обнуляется и не могу понять почему. Если например хранить ее в еерrom :

Код: Выделить всё

eeprom unsigned long int distance = 0;

то всё работает нормально.
Я не Сашок!!!
Saadov
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вт авг 19, 2008 23:39:59
Откуда: г.Смоленск

Re: CodeVision AVR в вопросах и ответах

Сообщение Saadov »

sachok писал(а):С чем может быть связана проблема самообнуления так объявленной переменной? Она просто в процесе работы сама обнуляется и не могу понять почему..

А вы её изменяете где нибудь в программе?

Возможно стоит объявить её как static, прочитайте об этом в хелпе компилятора в разделе Variables
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение sachok »

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); //вызов метода
Я не Сашок!!!
Lavra
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт мар 23, 2010 01:24:22

Re: CodeVision AVR в вопросах и ответах

Сообщение Lavra »

volatile
Несип
Родился
Сообщения: 2
Зарегистрирован: Ср окт 14, 2009 20:33:09
Откуда: Санкт-Петербруг
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Несип »

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

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


адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.
Mr.Denis
Прорезались зубы
Сообщения: 220
Зарегистрирован: Пт авг 07, 2009 22:06:49
Откуда: Россия, Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Mr.Denis »

Народ помогите пожалуйста!
Посмотрите правильно я настроил 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 в вопросах и ответах

Сообщение sachok »

Lavra писал(а):volatile

не помогло(
Вложения
source.txt
исходник
(5.27 КБ) 392 скачивания
Я не Сашок!!!
Александр 071
Открыл глаза
Сообщения: 61
Зарегистрирован: Сб янв 24, 2009 19:00:08
Откуда: Волгоград
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 071 »

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

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


адрес порта я в XP, честно, не знаю как узнать, AVR вроде целая, тип программатора тоже, Питание - ну насколько я знаю, достаточно просто воткнуть батарейку в схему.

Была такая же проблемма. Зайдите в диспетчер устройств. Выберите порты и щёлкните "обновить конфигурацию оборудования". Это глюк винды.
Александр 071
Открыл глаза
Сообщения: 61
Зарегистрирован: Сб янв 24, 2009 19:00:08
Откуда: Волгоград
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 071 »

Подскажите, пожалуйста, что сделать чтобы удавалось задержку устанавливать в микросекунды?
Я писал вот так:
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 в вопросах и ответах

Сообщение sema »

только что попробовал, компилит без вопросов. как ругается то?
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Александр 071
Открыл глаза
Сообщения: 61
Зарегистрирован: Сб янв 24, 2009 19:00:08
Откуда: Волгоград
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 071 »

sema писал(а):только что попробовал, компилит без вопросов. как ругается то?

Дело не в ошибке. Всё компилит нормально. он не компилит если ввместо delay_ms(n) поставить delay_us(n), мне нужны задержки в микросекундах. :(
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

Re: CodeVision AVR в вопросах и ответах

Сообщение ValBag »

Александр 071 писал(а):Если писать n целое в миллисекундах то всё хорошо работает. Если так как в коде то ничего не работает. Если писать delay_us(n), то он ругается.
Функция задержки по определению предназначена для работы с целыми числами: void delay_ms(unsigned int n); А вы пытаетесь ей подсунуть значение переменной float. По поводу ругани на delay_us, посмотрите частоту тактового генератора. Она должна быть согласована с той задержкой в микросекундах, которую хотите получить. Числа, определяющие задержку тоже должны быть целыми. Еще один момент: если в программе используются прерывания, то до вызова задержки они должны быть запрещены (после окончания разрешены).
Александр 071
Открыл глаза
Сообщения: 61
Зарегистрирован: Сб янв 24, 2009 19:00:08
Откуда: Волгоград
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 071 »

Спасибо. Я это только что понял, кода справку прочитал.
Несип
Родился
Сообщения: 2
Зарегистрирован: Ср окт 14, 2009 20:33:09
Откуда: Санкт-Петербруг
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Несип »

Спасибо, заработало.
Аватара пользователя
Corporal
Прорезались зубы
Сообщения: 226
Зарегистрирован: Вт мар 03, 2009 11:37:31
Откуда: Николаевская обл.

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);

не помогло.
Мне важно именно строка а не вывод на экран...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение ARV »

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 в вопросах и ответах

Сообщение Corporal »

Хорошо, я, наверное, не правильно задал вопрос.
есть:

Код: Выделить всё

eeprom char str ;
int dsec,    //десятые секунды
     edsec,//единицы секунды
     dmin,// десятки минуты
     edmin;// еденицы минуты


допустим это все тикает и мне надо ( по нажатии на кнопку) фиксировать время и занести его в память одной строкой. Так у меня должно быть (сколько позволяет память) N значений времени.
ну, а дальше (еще не знаю как) должно определиться есть ли передача по ком порту? если есть то слить все данные.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение ARV »

Corporal писал(а):Хорошо, я, наверное, не правильно задал вопрос.
есть:

Код: Выделить всё

eeprom char str ;
int dsec,    //десятые секунды
     edsec,//единицы секунды
     dmin,// десятки минуты
     edmin;// еденицы минуты


допустим это все тикает и мне надо ( по нажатии на кнопку) фиксировать время и занести его в память одной строкой. Так у меня должно быть (сколько позволяет память) N значений времени.
ну, а дальше (еще не знаю как) должно определиться есть ли передача по ком порту? если есть то слить все данные.
уважаемый, во-первых, eeprom char str обозначает всего-навсего один разъединственный байт, а вовсе не строку. и напихать туда кучу инфы никак не выйдет.
во вторых, из ваших слов следует, что речь идет не о строке, а массиве строк - это так же меняет все дело, хоть и непринципиально.
в третьих, хранить строки в eeprom может оказаться весьма невыгодно: ее ресурс весьма ограничен и пишется туда довольно долго.

так что обдумайте сперва все, а потом задавайте конкретные вопросы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»