CodeVision AVR в вопросах и ответах
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: CodeVision AVR в вопросах и ответах
никто не сталкивался с такой особенностью: на сайте CodeVision заявлено, что для фри-версии ограничение кода в 3 кб, но у меня при попытке собрать что-либо > 1 кб- выдает ошибку "достигнуто ограничение триальной версии"
Re: CodeVision AVR в вопросах и ответах
Всем привет! Господа помогите разобраться с АЦП в Atmega8.
Мне нужно при помощи АЦП измерить звуковой сигнал. Вот что я делаю:
Скажите правильно ли я произвёл настройку?
Расскажите как выбрать коэффициент деление, точнее как его рассчитать?
Я смогу измерить звуковой сигнал при помощи встроенного АЦП в Atmega8?
Как настроить АЦП на 10-ти битный режим?
Мне нужно при помощи АЦП измерить звуковой сигнал. Вот что я делаю:
Код: Выделить всё
Void main(void)
{
// для начала я делаю инициализацию АЦП
//АЦП- Вкл.
//Прерывание – Вкл.
//Коэффициент деления – 1
ADCSRA= 0x90 // 0x90 = 0b1001000
// Потом я выбираю опорное напряжение и канал
// Опорное напряжение как напряжение питания (AVcc)
// Выбранный канал АЦП – PC0 (ADC0)
ADMUX = 0x40 // 0x40 = 0b01000000
// Далее просто запускаем АЦП
ADCSRA = 0x40 // 0x40 = 0b01000000
}
Скажите правильно ли я произвёл настройку?
Расскажите как выбрать коэффициент деление, точнее как его рассчитать?
Я смогу измерить звуковой сигнал при помощи встроенного АЦП в Atmega8?
Как настроить АЦП на 10-ти битный режим?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
даSounds писал(а):Скажите правильно ли я произвёл настройку?
по желаемой скорости работы АЦП: для сохранения заявленных производителем параметров АЦП следует работать на скоростях АЦП до 200 килогерц, отсюда и выбираете компромиссное значение делителя тактовой частоты АЦП. Если устроит некоторое ухудшение параметров АЦП, можно работать на частотах до 1 МГц.Sounds писал(а):Расскажите как выбрать коэффициент деление, точнее как его рассчитать?
c учетом только что озвученных ограничений по частоте (не забывайте, что цикл АЦП длится 13 тактов частоты АЦП) - сможетеSounds писал(а):Я смогу измерить звуковой сигнал при помощи встроенного АЦП в Atmega8?
АЦП в вашем микроконтроллере всегда работает в 10-битном режимеSounds писал(а):Как настроить АЦП на 10-ти битный режим?
какое отношение все эти вопросы имеют к CodeVision ?! народ, ну будьте же точны в вопросах!!! это типичные вопросы по архитектуре AVR, причем вопросы того, кто не желает прочесть даташит или его многочисленные переводы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Спасибо за ответ!
Скажи пожалуйста, вот у меня коэффициент деления стоит 1, и МК тактируется от внешнего кварца на 8МГц. Какова скорость работы АЦП в данном случаи? Если можно с формулой!
P.S. Не серчайте, я только учусь и много не понимаю, плюс ко всему слабо знаю английский.
Скажи пожалуйста, вот у меня коэффициент деления стоит 1, и МК тактируется от внешнего кварца на 8МГц. Какова скорость работы АЦП в данном случаи? Если можно с формулой!
P.S. Не серчайте, я только учусь и много не понимаю, плюс ко всему слабо знаю английский.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
говоря "скорость" я немного исказил правду: имелась ввиду тактовая частота АЦП. если делитель 1, то в вашем случае тактовая частота АЦП так же будет 8 МГц - только откуда вы взяли такой делитель?! в АЦП меги8 минимальный делитель тактовой АЦП равен (блин, забыл, а даташита нет под рукой) по-моему 2 или даже 4...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Да, вы совершенно правы делитель равен 2, я просто очень сильно тупанул.
Тогда получается так.
Если МК тактируется от 8 МГц, то:
8 МГц / 64 (коэффициент деления) = 8000000/64=125000 Гц=125кГц
Если МК тактируется от 16МГц, то:
16 МГц / 64 (коэффициент деления) = 16000000/64=250000 Гц=250кГц
Это правильные подсчёты?
Мне подходит коэффициент деления 64? (Вывод сделал из: для сохранения заявленных производителем параметров АЦП следует работать на скоростях АЦП до 200 килогерц)
Проверьте пожалуйста настройку делителя со значением 64, ADCSRA= 0x9C // 0x9C = 0b1001110. Это правильно?
Тогда получается так.
Если МК тактируется от 8 МГц, то:
8 МГц / 64 (коэффициент деления) = 8000000/64=125000 Гц=125кГц
Если МК тактируется от 16МГц, то:
16 МГц / 64 (коэффициент деления) = 16000000/64=250000 Гц=250кГц
Это правильные подсчёты?
Мне подходит коэффициент деления 64? (Вывод сделал из: для сохранения заявленных производителем параметров АЦП следует работать на скоростях АЦП до 200 килогерц)
Проверьте пожалуйста настройку делителя со значением 64, ADCSRA= 0x9C // 0x9C = 0b1001110. Это правильно?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
расчеты верные, а вот установку битов в регистре управления для задания коэффициента деления я проверить не смогу, так как лишен возможности заглянуть в даташит.
хочу вам еще предложить кое-какие расчеты - для сведения.
вы хотите анализировать звуковой сигнал - какую частоту семплов АЦП надо обеспечить? и какой частотой при этом надо будет тактировать АЦП?
звуковым называют сигнал до 20 кГц. чтобы адекватно анализировать сигнал, надо обеспечить частоту семплирования минимум в 2 раза выше максимальной частоты сигнала - в нашем случае 40 кГц. раз АЦП на один семпл тратит 13 тактов своей рабочей частоты, то легко вычислить, на какой частоте должен работать АЦП: 40000*13=520000 или 520 кГц. теперь прикиньте делитель
другая постановка задачи: вы имеете АЦП с тактовой частотой 250 кГц. какую максимальную частоту сигнала при этом удастся проанализировать?
вычисляем частоту семплов: 250000/13=19231 Гц, или просто 19,2 кГц. входной сигнал должен иметь минимум в 2 раза меньшую частоту, т.е. не более 9,6 кГц
кроме всего учтите, что "потолок" входной частоты (20 ли килогерц это будет или 9,6) вам надо обеспечить внешним аналоговым фильтром, иначе могут быть большие искажения....
хочу вам еще предложить кое-какие расчеты - для сведения.
вы хотите анализировать звуковой сигнал - какую частоту семплов АЦП надо обеспечить? и какой частотой при этом надо будет тактировать АЦП?
звуковым называют сигнал до 20 кГц. чтобы адекватно анализировать сигнал, надо обеспечить частоту семплирования минимум в 2 раза выше максимальной частоты сигнала - в нашем случае 40 кГц. раз АЦП на один семпл тратит 13 тактов своей рабочей частоты, то легко вычислить, на какой частоте должен работать АЦП: 40000*13=520000 или 520 кГц. теперь прикиньте делитель
другая постановка задачи: вы имеете АЦП с тактовой частотой 250 кГц. какую максимальную частоту сигнала при этом удастся проанализировать?
вычисляем частоту семплов: 250000/13=19231 Гц, или просто 19,2 кГц. входной сигнал должен иметь минимум в 2 раза меньшую частоту, т.е. не более 9,6 кГц
кроме всего учтите, что "потолок" входной частоты (20 ли килогерц это будет или 9,6) вам надо обеспечить внешним аналоговым фильтром, иначе могут быть большие искажения....
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Спасибо за разъяснения!
Если делать по первому варианту: 40000*13=520000, то получается ближайшие делители это 16 и 8. При делители 16 результат равен 500000 (500кГц), а при 8 соответственно 1000000 (1000 кГц). Какое значение правильней выбрать? Ведь в МК AVR Atmega8 существует всего 7 делителей, это 2,4,8,16,32,64,128. И как правильно поступить в этой ситуации?
Если делать по первому варианту: 40000*13=520000, то получается ближайшие делители это 16 и 8. При делители 16 результат равен 500000 (500кГц), а при 8 соответственно 1000000 (1000 кГц). Какое значение правильней выбрать? Ведь в МК AVR Atmega8 существует всего 7 делителей, это 2,4,8,16,32,64,128. И как правильно поступить в этой ситуации?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
что такое "правильней"? вы же понимаете, что правильность решения зависит от исходных условий...
вы скажите - вам действительно надо 20 кГц обрабатывать? как именно вы собрались их обрабатывать?
если все-таки необходимо - то учтите, что 520 кГц для АЦП - это вне рекомендованных пределов, т.е. АЦП будет давать погрешность на такой частоте... значит, придется не 10 бит использовать, а меньше...
так что определитесь с исходными данными. ну а по делителю надо выбирать ближайший подходящий, а потом перерассчитывать все прочее уже по реальной частоте семплов и т.п.
вы скажите - вам действительно надо 20 кГц обрабатывать? как именно вы собрались их обрабатывать?
если все-таки необходимо - то учтите, что 520 кГц для АЦП - это вне рекомендованных пределов, т.е. АЦП будет давать погрешность на такой частоте... значит, придется не 10 бит использовать, а меньше...
так что определитесь с исходными данными. ну а по делителю надо выбирать ближайший подходящий, а потом перерассчитывать все прочее уже по реальной частоте семплов и т.п.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
С моими возможностями получается только до 9.6кГц максимум.
Как можно увеличить максимальный порог частоты?
Может спасёт внешний АЦП?
В профессиональной аппаратуре до какой частоты в основном обрабатываются данные перед выводом на индикацию?
Как можно увеличить максимальный порог частоты?
Может спасёт внешний АЦП?
В профессиональной аппаратуре до какой частоты в основном обрабатываются данные перед выводом на индикацию?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
какая задача у вас? конкретно и открыто
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Сделать индикацию как на микшерных пультах, на усилителях.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Sounds писал(а):Сделать индикацию как на микшерных пультах, на усилителях.
ваши предки были партизанами и сгинули в застенках СС, не иначе? вы можете рассказать конкретно, что хотите? индикация бывает стрелочными индикаторами, бывает 2 полоски уровней, бывает спектроанализатор... и что вам посоветовать из этого?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
В итоги должна получится индикация линейная, только не на светодиодах, а на графическом LCD.
В общем получается так на графическом дисплее будет 4 канала индикации будет рисоваться шкалы в зависимости от входного сигнала, а рядом будет писаться сколько децибел.
В общем задумка такова, но а сейчас хочу разобраться хотя бы с одним каналом.
В общем получается так на графическом дисплее будет 4 канала индикации будет рисоваться шкалы в зависимости от входного сигнала, а рядом будет писаться сколько децибел.
В общем задумка такова, но а сейчас хочу разобраться хотя бы с одним каналом.
Re: CodeVision AVR в вопросах и ответах
Подскажите ..существует ли бутлоадер (COm или USB) после прошивки которого можно будет работать встроенным в CV
программатором ?
программатором ?
ух ты.... показывает
Re: CodeVision AVR в вопросах и ответах
подскажите как правильно объявить
typedef struct {
unsigned char itemstr[20];
ITEM_STRUCT * nextitem;
} ITEM_STRUCT;
то есть нужно сделать ссылку на объявляемый тип...
это делается только через void * nextitem ?
мне нужно объявить эту структуру и потом создать константы по ее формату
typedef struct {
unsigned char itemstr[20];
ITEM_STRUCT * nextitem;
} ITEM_STRUCT;
то есть нужно сделать ссылку на объявляемый тип...
это делается только через void * nextitem ?
мне нужно объявить эту структуру и потом создать константы по ее формату
-
Saadov
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Вт авг 19, 2008 23:39:59
- Откуда: г.Смоленск
Re: CodeVision AVR в вопросах и ответах
12val12 писал(а):Подскажите ..существует ли бутлоадер (COm или USB) после прошивки которого можно будет работать встроенным в CV
программатором ?
Поиск...
http://www.cmeter.org/CVmegaload/index.html
http://www.microsyl.com/index.php/category/software/
ВитГо писал(а):подскажите как правильно объявить
typedef struct {
unsigned char itemstr[20];
ITEM_STRUCT * nextitem;
} ITEM_STRUCT;
то есть нужно сделать ссылку на объявляемый тип...
это делается только через void * nextitem ?
мне нужно объявить эту структуру и потом создать константы по ее формату
Код: Выделить всё
typedef struct {
unsigned char* itemstr;
void* nextitem;
} ITEM_STRUCT;
struct ITEM_STRUCT str[] =
{
{ "NAME1",
&peremen1},
{ "NAME2",
&peremen2}
};
Если я вас правильно понял....
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
думаю, вы поняли немного неверно. все гораздо элегантнее, без пустых указателей:Saadov писал(а):Код: Выделить всё
typedef struct {
unsigned char* itemstr;
void* nextitem;
} ITEM_STRUCT;
struct ITEM_STRUCT str[] =
{
{ "NAME1",
&peremen1},
{ "NAME2",
&peremen2}
};
Если я вас правильно понял....
Код: Выделить всё
typedef struct tag {
char *itemstr;
struct tag *nextitem; // указатель на структуру этого же самого типа
} ITEM_STRUCT;если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
гм..
в строчке struct tag * nextitem;
ругается на tag
говорит что error и undefinited tag "tag"
struct ITEM_STRUCT * nextitem; тоже пробовал...
не известный таг ITEM_STRUCT
в строчке struct tag * nextitem;
ругается на tag
говорит что error и undefinited tag "tag"
struct ITEM_STRUCT * nextitem; тоже пробовал...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
avr-gcc не ругается, на сколько я понял, такая запись укладывается в стандарт Си.ВитГо писал(а):в строчке struct tag * nextitem;
ругается на tag
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!