
CodeVision AVR в вопросах и ответах
-
maxim___71rus
- Родился
- Сообщения: 9
- Зарегистрирован: Пт май 04, 2012 17:31:06
- Реклама
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
maxim___71rus
ПомОгу перевести
проверьте не является ли тактовая частота(SLK Frequency)слишком высокой
Некоторые чипы AVR поставляются с завода с фьюзами CLKSEL, установленными на внутренний 1МГц генератор
ПомОгу перевести
проверьте не является ли тактовая частота(SLK Frequency)слишком высокой
Некоторые чипы AVR поставляются с завода с фьюзами CLKSEL, установленными на внутренний 1МГц генератор
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
сеттингс/программер чуток увеличить задержку
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
Появился и у меня вопросик.
Так ли страшен чорт, как его малюют?
Кто-нибудь уже кодил эти камушки из-под CV AVR? Wizard генерит для них код? Есть ли какое-то серьёзное отличие работы с ними от работы с обычными ATmega в CV AVR (кроме разрядности ядра и регистров разумеется)? Если на РадиоКоте уже есть тема или статья по ним, дайте ссылку.
Так ли страшен чорт, как его малюют?
Кто-нибудь уже кодил эти камушки из-под CV AVR? Wizard генерит для них код? Есть ли какое-то серьёзное отличие работы с ними от работы с обычными ATmega в CV AVR (кроме разрядности ядра и регистров разумеется)? Если на РадиоКоте уже есть тема или статья по ним, дайте ссылку.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Конечно генеририт код, это должно было стать для пользователя заметным начиная с недавних версий, так как визард стал постоянно спрашивать мега или иксмега
И само представление визарда поменялось.
И само представление визарда поменялось.
- Вложения
-
- CVAVR_code_wisard_XMEGA.GIF
- (32.49 КБ) 379 скачиваний
- Реклама
Re: CodeVision AVR в вопросах и ответах
Виталий, а вы с ними уже работали?
Re: CodeVision AVR в вопросах и ответах
Добрый день! Подскажите ктото втречал бибилиотеку USB для codevision? Пол дня сегодня убил в поиске но ничего так и не нашел. Интересует программный usb(например для atmega8).
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Нет особого смысла искать только для CVAVR, это такой же компилятор для си как и некоторые другие.
Вот тут можно почитать про USB.
Вот тут можно почитать про USB.
Re: CodeVision AVR в вопросах и ответах
Подскажите, как разделить два сигнала с АЦП.
к примеру один сигнал подаётся на вход меги128 ADC0 а другой на ADC6, так вот как их записать каждый в свой массив.
с одним сигналом понятно АЦП завершило преобразование прерывание сработало и там записал в массив. А вот когда сигналов несколько то тут не совсем понятно с какого канала сработало прерывания.
к примеру один сигнал подаётся на вход меги128 ADC0 а другой на ADC6, так вот как их записать каждый в свой массив.
с одним сигналом понятно АЦП завершило преобразование прерывание сработало и там записал в массив. А вот когда сигналов несколько то тут не совсем понятно с какого канала сработало прерывания.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
C выбранного Вамине совсем понятно с какого канала сработало прерывания
Непонятно, если честно, в чём проблема... Выбираете канал, запускаете преобразование, считываете. И так для двух каналов по очереди.
Re: CodeVision AVR в вопросах и ответах
Так оно может проскочить. Я забыл написать что я таймером запускаю АЦП (задаю частоту дискретизации)
Код: Выделить всё
interrupt [ADC_INT] void adc_isr(void)
{
#asm("cli")
buffer[ADC_INDEX]=ADCW;
if(ADC_INDEX>=30){ADC_INDEX=0;}
ADC_INDEX++;
#asm("sei")
}
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
ADCSRA|=(1<<ADSC); // включения АЦП частота дискретизации 4КГц
}- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Что проскочить ? И куда ?Так оно может проскочить
Сразу видна ошибка невооруженным глазомbuffer[ADC_INDEX]=ADCW;
if(ADC_INDEX>=30){ADC_INDEX=0;}
ADC_INDEX++;
И это
Код: Выделить всё
#asm("cli")
...
#asm("sei")Re: CodeVision AVR в вопросах и ответах
Сразу видна ошибка невооруженным глазом
То что обнуляю INDEX_ADC а потом сразу инкрементирую ?
Как-то так ? Не нравится мне только, то что в прерывании много нагородил.
Код: Выделить всё
flag_ACD=0;
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
ADCSRA|=(1<<ADSC); // включения АЦП частота дискретизации 4КГц
}
interrupt [ADC_INT] void adc_isr(void)
{
#asm("cli")
switch (flag_ACD){
case 0:{
buffer[ADC_INDEX]=ADCW;
ADC_INDEX++;
break;
}
case 1:{
buffer1[ADC_INDEX1]=ADCW;
ADC_INDEX1++;
break;
}
#asm("sei")
}
while(1){
ADC_1(); // выбрали первый канал
flag_ACD=0;
ADC_6(); // выбрали шестой канал
flag_ACD=1;
}- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Конечно. Нужно сначала инкрементировать, потом проверять на переполнение. Иначе логика непонятна...То что обнуляю INDEX_ADC а потом сразу инкрементирую ?
У Вас получилось выбор канала и преобразование - два асинхронных процесса. Каша будет.
Выбирать следующий канал нужно по завершению преобразования и небольшой выдержки.
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Выбирать следующий канал нужно по завершению преобразования и небольшой выдержки.
Что-то не могу понять "по завершению преобразования" это как сделать? проверять как-нибудь флаг ?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
pokk писал(а):это как сделать? проверять как-нибудь флаг ?
Лол. А для одного канала вы как делаете?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
Код: Выделить всё
void wait_ADC()
{
while((ADCSRA & (1 << ADIF)) == 0); //wait for Flag ADIF(conversion complete)
ADCSRA |= (1 << ADIF); //Reset conversion complete flag (ADIF = 1)
}Код: Выделить всё
switch(channel)
{
case 0:
buffer[channel][ADC0_INDEX] = read_ADC(channel);
(ADC0_INDEX < 30) ? (ADC0_INDEX++) : (ADC0_INDEX = 0)
channel = 6
select_ADC(channel);
break;
case 6:
buffer[channel][ADC6_INDEX] = read_ADC(channel);
(ADC6_INDEX < 30) ? (ADC6_INDEX++) : (ADC6_INDEX = 0)
channel = 0
select_ADC(channel);
break;
}
Последний раз редактировалось unalex Ср фев 27, 2013 15:45:31, всего редактировалось 2 раза.
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Re: CodeVision AVR в вопросах и ответах
Gudd-Head писал(а):Лол. А для одного канала вы как делаете?
Код: Выделить всё
interrupt [ADC_INT] void adc_isr(void)
{
buffer[ADC_INDEX]=ADCW;
ADC_INDEX++;
if(ADC_INDEX>=30){ADC_INDEX=0;}
}
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
ADCSRA|=(1<<ADSC); // включения АЦП частота дискретизации 4КГц
}
while(1){
// основной код подсчёт среднеквадратичного значений и вывод на дисплей.
}
Код: Выделить всё
void wait_ADC()
{
while((ADCSRA & (1 << ADIF)) == 0); //wait for Flag ADIF(conversion complete)
ADCSRA |= (1 << ADIF); //Reset conversion complete flag (ADIF = 1)
}Примерно так и думал. Только не могу понять зачем ?Ведь во время прерывания нечего случится не может как выйдет из него так и закончилось преобразование =)
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Удалил свой недосмотр 
Последний раз редактировалось vitalik_1984 Ср фев 27, 2013 15:53:35, всего редактировалось 2 раза.
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
удалил свой комментарий о недосмотре пользователя vitalik_1984 
Последний раз редактировалось unalex Ср фев 27, 2013 16:19:02, всего редактировалось 1 раз.
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


