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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

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

Сообщение AI_Disable »

clawham писал(а):хочу заделать логгер температуры по датам/даччикам в файлы и папки :) эт реально для 8-й меги?

Реально. Можно и в мегу48 уложиться. Но не знаю позволит ли это сделать кодвижинская либа.
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

не ну я ж именно об этом и спрашиваю...там есть и создание файлов и папок и дата/время и атрибуты и запись блоков...но ну куда ни тыкни надо буффера...всякие структуры и так дале.е..это всё временные вещи и они же будут жить в стеке а сколько оперативки у той же меги? да кот наплакал...а там все примеры на меге 128 да ещё и с подключенной доп рамой :)
Ну и вопрос о скорости работы с ФС и с карточкой в режиме чтения вообще!
Если взять тот же экран семена s65 смогу ли я хоть 15 кадров в секунду получить?
или например какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?
я не думаю что в данном случае от карточки чтото зависит.... любая карточка может с гораздо большими частотами работать чем АВРка...хочется же значть оптимальность и безглючность этой либы ихней :)
Или ещё никто не работал с этой фигнёй и мне прийдёться самому потыкаться?
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

clawham писал(а):Если взять тот же экран семена s65 смогу ли я хоть 15 кадров в секунду получить?
или например какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?
не сможете.

однако логгер температуры сможете - вы об этом спрашивали? на счет буфферов и прочего - советую посмотреть библиотечки Чена - он и на тини25 (если не ошибаюсь) аудио-плейер сделал :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

дак смотрел....тот ещё аццкой сотона :)
очень сложночитабельные у него коды...хотя общие принципы почерпнуть можно....пасиб...буду значиться пробывать....а там и о скорости Вам расскажу и о глюках :)
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Saadov
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вт авг 19, 2008 23:39:59
Откуда: г.Смоленск

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

Сообщение Saadov »

clawham писал(а):дак смотрел....тот ещё аццкой сотона :)
очень сложночитабельные у него коды...хотя общие принципы почерпнуть можно....пасиб...буду значиться пробывать....а там и о скорости Вам расскажу и о глюках :)

Так в CVAVR и есть портированная библиотека Чана, так что читайте хелп к компилятору, вперемешку с Чаном.

где вообще кроме примеров на меге 128 можно это применять

В поиске гугла задать SD AVR, очень много проектов выдаст. Что то общее найдете.

какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?

У того же Чана на сайте есть пример, а выше 8 бит без внешнего ЦАП вряд ли возможно.
neon-f
Потрогал лапой паяльник
Сообщения: 392
Зарегистрирован: Сб дек 12, 2009 02:15:45

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

Сообщение neon-f »

котятки, а как лучше в С получить модуль числа??? есть например переменная kor, она может принимать как положительные, так и отрицательные значения. нужен модуль этой переменной. я придумал вот такую конструкцию, но как то громоздко...

long int kor;
...............
kor=kor*(1-(((kor & 0x80000000)>>31)*2));
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

neon-f писал(а):котятки, а как лучше в С получить модуль числа??? есть например переменная kor, она может принимать как положительные, так и отрицательные значения. нужен модуль этой переменной. я придумал вот такую конструкцию, но как то громоздко...

long int kor;
...............
kor=kor*(1-(((kor & 0x80000000)>>31)*2));

а традиционные способы не катят? по какой причине?

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

1) x = abs(kor); // подключить math.h
2) x = kor < 0 ? -kor : kor; // ничего подключать не надо
3) #define ABS(x) ((x) < 0 ? -(x) : (x))
x = ABS(kor); // то же самое, что и 2, но кошернее
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
neon-f
Потрогал лапой паяльник
Сообщения: 392
Зарегистрирован: Сб дек 12, 2009 02:15:45

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

Сообщение neon-f »

Большое спасибо. использовал первый способ. только на этом сэкономил 2(!) процента памяти 8меги.
а традиционные способы не катят? по какой причине?

По причине их не знания. Те книги что я читаю вопрос модуля не затрагивают, вот и пришлось изобрести свою конструкцию. а спросить кроме как здесь - не у кого.
Еще 2 вопроса на похожую тему.
1)нужно переменной x присвоить значение (-1) если переменная kor отрицательое число, и (1) если kor положительное.
я сразу cделал так:
(1-(((kor & 0x80000000)>>31)*2))
после вашего ответа исправил на :
abs(kor)/kor
2)нужно переменной x присвоить значение (1) если переменная kor отрицательое число, и (0) если kor положительное.
я делал так:
(kor & 0x80000000)>>31
Можно ли это делать красивее?
зы. люблю красивые решения.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

а вы читайте не самоучители для чайников, а классику жанра - про язык Си, про алгоритмизацию и т.п. книг немало хороших, особенно иностранных авторов :)))

по вашим вопросам:
1. анализ вашего решения: сдвиг на много разрядов - есть операция весьма ресурсоемкая. умножение тоже не страдает минимализмом. да еще арифметическое действие впридачу... вопрос: зачем так сложно? вдумайтесь: "если kor меньше нуля, то x = -1, иначе x = 1" - это же классическое описание работы оператора if!
тупо:

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

if(kor < 0)
   x = -1;
else
   x = 1;
более элегантно (и как раз как в ранее приведенном мною примере 2):

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

x = kor < 0 ? -1 : 1;
раз уж интересуетесь языком - внимательно смотрите, что вам подсказывают.

2. даже и анализировать нечего - см. предыдущий случай - в чем разница?

кстати, ваше решение, не смотря на вашу любовь к красивым решениям, следует признать плохим, причем не потому, что слишком долго выполняется и жрет много памяти программ! оно плохое потому, что без нужды аннулирует основное преимущество языка высокого уровня - абстрагирование от содержимого данных. поясню. сдвиги и т.п. действия подразумевают, что вы знаете внутреннюю структуру числа со знаком, но ведь это задача компилятора - знать это! а вы должны работать только с переменными, а не с тем, что в них! допустим, ваша программа скомпилирована для платформы, в которой по каким-либо причинам знак хранится не в старшем бите (это абстрактный пример) - будет ли она работать верно? конечно же нет! а предложенный мною код - будет, т.к. он не использует тайных знаний о внутреннем устройстве чисел. где бы знак ни хранился, но если компилятор сумеет определить, что число меньше нуля - это будет всегда иметь одинаковый результат :) ранее приводимый пример макроса ABS сработает и для числа типа int, и для числа типа long, и даже для float - а ваш подход потребует изменения программы, причем для случая float весьма непростого.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
neon-f
Потрогал лапой паяльник
Сообщения: 392
Зарегистрирован: Сб дек 12, 2009 02:15:45

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

Сообщение neon-f »

Спасибо. самое главное что я понял из сегодняшнего общения это то, что результат не всегда обязательно ВЫЧИСЛЯТЬ, иногда его проще ПОЛУЧИТЬ.....
кстати, ваше решение, не смотря на вашу любовь к красивым решениям, следует признать плохим,

любовь то есть :) а вот опыта реализации нет..... я электронщик (вернее был им 15 лет назад. потом ударился в зарабатывание денег и про хобби пришлось забыть. сейчас процес зарабатывания перестал "вставлять" и я вспомнил старое любимое занятие) в программировании только вышел на уровень "0" поэтому для меня оказалось проще сдвигать число, чем применить приемы языка.
а вы читайте не самоучители для чайников, а классику жанра - про язык Си, про алгоритмизацию и т.п. книг немало хороших, особенно иностранных авторов

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

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

Сообщение ARV »

neon-f писал(а):Сдвинуться с мертвой точки в изучении С и микроконтроллеров, я смог только когда начал читать "Создаем устройства на микроконтроллерах (Белов)(2007)"

дело ваше. но мое мнение, основанное на знакомстве со многими начинающими программистами, следующее: если вы учитесь по книге, которая учит, как мигать светодиодом, вы научитесь писать программы, мигающие светодиодами. и все. не более. а вот если вы изучите язык программирования и архитектуру МК - вам больше не придется ничему учиться, т.к., надеюсь, с логическим мышлением у вас все в порядке - а больше ничего и не потребуется!

вы считаете, что прочтя разговорник англо-китайский вы научитесь сразу и по-китайски и по-английски разговаривать?! нет, вы научитесь просить подать чай в ресторане на этих языках, но вот понять, что у вас спросят в ответ (вам зеленый жасминовый или розовый императорский) вы не поймете, хоть вам и повторят на обоих языках. чтобы понимать - придется выучить язык, а не разговорник. самоучители всяких Беловых и других "наставников чайников" - это разговорник, а классика по языку Си - это библия, талмуд и коран для программиста в одном флаконе.

остальное за вами. Беловы и Ко учат вас двигать биты, а я говорю: надо учиться думать над тем, что делать. именно думать - делать будет МК. но думать он не сможет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Upgrader
Друг Кота
Сообщения: 26671
Зарегистрирован: Пт май 18, 2007 22:56:58

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

Сообщение Upgrader »

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

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

Сообщение ARV »

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

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

// функция задержек с шагом в 1 мс
void delay_MS(unsigned char ms){
   for(;ms;ms--)
      delay_ms(1);
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
makser
Открыл глаза
Сообщения: 71
Зарегистрирован: Пт апр 24, 2009 11:25:34
Откуда: Rus

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

Сообщение makser »

Обращаю внимание: функция sqrt() иногда выдает не верный результат, пользуйтесь pow().
V-T
Родился
Сообщения: 6
Зарегистрирован: Вс май 02, 2010 11:32:13

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

Сообщение V-T »

Всем привет!
Скачал CVAVR 2.04 а установить не могу - требует пароль для установки. Поделитесь, плз, у кого есть - очень нужно!
Vov77
Родился
Сообщения: 1
Зарегистрирован: Вт май 25, 2010 10:05:45

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

Сообщение Vov77 »

xjmkywpop9$kkqwu0%jqapfgr
Аватара пользователя
papadigger
Родился
Сообщения: 17
Зарегистрирован: Ср ноя 04, 2009 19:56:17
Откуда: Йошкар-Ола
Контактная информация:

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

Сообщение papadigger »

помогите настроить АЦП в тиньке13 /// пишу в CVAVR в проекте нада обрабатывать несколько кнопок.
какое опорное напряжение у тиньки или как его источник выбрать , в конфигураторе кодевижена выбирать низя .... в даташите написано 1,1В но при пересчёте из результатов преобразования по формуле adc=(Vin*1024)/Vref (кстати из даташита) нифига не сходится =(
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

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

Сообщение AI_Disable »

А насколько не сходится? Может различного рода погрешности, да и сам АЦП не идеален.
Если совсем не сходится, то источник опорного напряжения у тини13 выбирается с помощью бита REFS0, регистра ADMUX. По дефолту в нём 0, то есть ИОН берётся с Vcc. Чтобы включить внутренний ИОН, нужно записать в него единицу:
ADMUX|=(1<<REFS0);
ion11
Родился
Сообщения: 11
Зарегистрирован: Сб май 29, 2010 12:23:25

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

Сообщение ion11 »

Здравствуйте.
Помогите Новичку освоить использование кнопок .
Вот например:
подключаю я кнопку к PINB.1 (кнопка без фиксации,срабатывает при замыкании на ноль и использую подтяжку к плюсу в МК.)
а к PORTC.1 (подключил светодиод,катод к минусу а анод через резистор к ножке МК.)
так вот я не могу написать код, чтобы при нажатии на кнопку - светодиод загорелся а при отпускании не потух.
Только когда я повторно нажму на кнопку он должен потухнуть и так по кругу.
Большая просьба напишите мне код для этой программы в CVAVR или объясните так чтоб понятно было новичку.
ЗАРАНЕЕ ВАМ БЛАГОДАРЕН.
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

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

Сообщение AI_Disable »

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

void main (void)
{
PORTB.1=1; //включаем внутреннюю подтяжку
DDRC.1=1; //делаем выходом PC.1
while(1)
{
if(!PINB.1) PORTC.1=1; //Если на PB.1 НЕ единица (кнопка нажата), то зажигаем светодиод
else PORTC.1=0; //Иначе гасим (кнопка отпущена)
}
}
Ответить

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