Реально. Можно и в мегу48 уложиться. Но не знаю позволит ли это сделать кодвижинская либа.clawham писал(а):хочу заделать логгер температуры по датам/даччикам в файлы и папкиэт реально для 8-й меги?
CodeVision AVR в вопросах и ответах
- Реклама
не ну я ж именно об этом и спрашиваю...там есть и создание файлов и папок и дата/время и атрибуты и запись блоков...но ну куда ни тыкни надо буффера...всякие структуры и так дале.е..это всё временные вещи и они же будут жить в стеке а сколько оперативки у той же меги? да кот наплакал...а там все примеры на меге 128 да ещё и с подключенной доп рамой 
Ну и вопрос о скорости работы с ФС и с карточкой в режиме чтения вообще!
Если взять тот же экран семена s65 смогу ли я хоть 15 кадров в секунду получить?
или например какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?
я не думаю что в данном случае от карточки чтото зависит.... любая карточка может с гораздо большими частотами работать чем АВРка...хочется же значть оптимальность и безглючность этой либы ихней
Или ещё никто не работал с этой фигнёй и мне прийдёться самому потыкаться?
Ну и вопрос о скорости работы с ФС и с карточкой в режиме чтения вообще!
Если взять тот же экран семена s65 смогу ли я хоть 15 кадров в секунду получить?
или например какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?
я не думаю что в данном случае от карточки чтото зависит.... любая карточка может с гораздо большими частотами работать чем АВРка...хочется же значть оптимальность и безглючность этой либы ихней
Или ещё никто не работал с этой фигнёй и мне прийдёться самому потыкаться?
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Не доверяйте русским лужам - это может быть вход в метро.
не сможете.clawham писал(а):Если взять тот же экран семена s65 смогу ли я хоть 15 кадров в секунду получить?
или например какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?
однако логгер температуры сможете - вы об этом спрашивали? на счет буфферов и прочего - советую посмотреть библиотечки Чена - он и на тини25 (если не ошибаюсь) аудио-плейер сделал
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
дак смотрел....тот ещё аццкой сотона 
очень сложночитабельные у него коды...хотя общие принципы почерпнуть можно....пасиб...буду значиться пробывать....а там и о скорости Вам расскажу и о глюках
очень сложночитабельные у него коды...хотя общие принципы почерпнуть можно....пасиб...буду значиться пробывать....а там и о скорости Вам расскажу и о глюках
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Не доверяйте русским лужам - это может быть вход в метро.
Так в CVAVR и есть портированная библиотека Чана, так что читайте хелп к компилятору, вперемешку с Чаном.clawham писал(а):дак смотрел....тот ещё аццкой сотона
очень сложночитабельные у него коды...хотя общие принципы почерпнуть можно....пасиб...буду значиться пробывать....а там и о скорости Вам расскажу и о глюках
В поиске гугла задать SD AVR, очень много проектов выдаст. Что то общее найдете.где вообще кроме примеров на меге 128 можно это применять
У того же Чана на сайте есть пример, а выше 8 бит без внешнего ЦАП вряд ли возможно.какие-то звуки более менее качественные(типа 8-мибитного wav 16 килогерц?
- Реклама
- Сообщения: 392
- Зарегистрирован: Сб дек 12, 2009 02:15:45
котятки, а как лучше в С получить модуль числа??? есть например переменная kor, она может принимать как положительные, так и отрицательные значения. нужен модуль этой переменной. я придумал вот такую конструкцию, но как то громоздко...
long int kor;
...............
kor=kor*(1-(((kor & 0x80000000)>>31)*2));
long int kor;
...............
kor=kor*(1-(((kor & 0x80000000)>>31)*2));
а традиционные способы не катят? по какой причине?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, но кошернееесли рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 392
- Зарегистрирован: Сб дек 12, 2009 02:15:45
Большое спасибо. использовал первый способ. только на этом сэкономил 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
Можно ли это делать красивее?
зы. люблю красивые решения.
По причине их не знания. Те книги что я читаю вопрос модуля не затрагивают, вот и пришлось изобрести свою конструкцию. а спросить кроме как здесь - не у кого.а традиционные способы не катят? по какой причине?
Еще 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
Можно ли это делать красивее?
зы. люблю красивые решения.
а вы читайте не самоучители для чайников, а классику жанра - про язык Си, про алгоритмизацию и т.п. книг немало хороших, особенно иностранных авторов 
по вашим вопросам:
1. анализ вашего решения: сдвиг на много разрядов - есть операция весьма ресурсоемкая. умножение тоже не страдает минимализмом. да еще арифметическое действие впридачу... вопрос: зачем так сложно? вдумайтесь: "если kor меньше нуля, то x = -1, иначе x = 1" - это же классическое описание работы оператора if!
тупо:более элегантно (и как раз как в ранее приведенном мною примере 2):раз уж интересуетесь языком - внимательно смотрите, что вам подсказывают.
2. даже и анализировать нечего - см. предыдущий случай - в чем разница?
кстати, ваше решение, не смотря на вашу любовь к красивым решениям, следует признать плохим, причем не потому, что слишком долго выполняется и жрет много памяти программ! оно плохое потому, что без нужды аннулирует основное преимущество языка высокого уровня - абстрагирование от содержимого данных. поясню. сдвиги и т.п. действия подразумевают, что вы знаете внутреннюю структуру числа со знаком, но ведь это задача компилятора - знать это! а вы должны работать только с переменными, а не с тем, что в них! допустим, ваша программа скомпилирована для платформы, в которой по каким-либо причинам знак хранится не в старшем бите (это абстрактный пример) - будет ли она работать верно? конечно же нет! а предложенный мною код - будет, т.к. он не использует тайных знаний о внутреннем устройстве чисел. где бы знак ни хранился, но если компилятор сумеет определить, что число меньше нуля - это будет всегда иметь одинаковый результат
ранее приводимый пример макроса ABS сработает и для числа типа int, и для числа типа long, и даже для float - а ваш подход потребует изменения программы, причем для случая float весьма непростого.
по вашим вопросам:
1. анализ вашего решения: сдвиг на много разрядов - есть операция весьма ресурсоемкая. умножение тоже не страдает минимализмом. да еще арифметическое действие впридачу... вопрос: зачем так сложно? вдумайтесь: "если kor меньше нуля, то x = -1, иначе x = 1" - это же классическое описание работы оператора if!
тупо:
Код: Выделить всё
if(kor < 0)
x = -1;
else
x = 1;Код: Выделить всё
x = kor < 0 ? -1 : 1;2. даже и анализировать нечего - см. предыдущий случай - в чем разница?
кстати, ваше решение, не смотря на вашу любовь к красивым решениям, следует признать плохим, причем не потому, что слишком долго выполняется и жрет много памяти программ! оно плохое потому, что без нужды аннулирует основное преимущество языка высокого уровня - абстрагирование от содержимого данных. поясню. сдвиги и т.п. действия подразумевают, что вы знаете внутреннюю структуру числа со знаком, но ведь это задача компилятора - знать это! а вы должны работать только с переменными, а не с тем, что в них! допустим, ваша программа скомпилирована для платформы, в которой по каким-либо причинам знак хранится не в старшем бите (это абстрактный пример) - будет ли она работать верно? конечно же нет! а предложенный мною код - будет, т.к. он не использует тайных знаний о внутреннем устройстве чисел. где бы знак ни хранился, но если компилятор сумеет определить, что число меньше нуля - это будет всегда иметь одинаковый результат
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 392
- Зарегистрирован: Сб дек 12, 2009 02:15:45
Спасибо. самое главное что я понял из сегодняшнего общения это то, что результат не всегда обязательно ВЫЧИСЛЯТЬ, иногда его проще ПОЛУЧИТЬ.....
любовь то есть
а вот опыта реализации нет..... я электронщик (вернее был им 15 лет назад. потом ударился в зарабатывание денег и про хобби пришлось забыть. сейчас процес зарабатывания перестал "вставлять" и я вспомнил старое любимое занятие) в программировании только вышел на уровень "0" поэтому для меня оказалось проще сдвигать число, чем применить приемы языка.
кстати, ваше решение, не смотря на вашу любовь к красивым решениям, следует признать плохим,
любовь то есть
а вот тут не соглашусь. классику читать надо имея хотяб небольшой опыт, иначе будете смотреть на эту классику как на китайскую грамоту. я сужу по себе. многие книги мне были не понятны начиная с первой буквы, и какие бы хорошие они небыли, для меня они были бесполезны. Сдвинуться с мертвой точки в изучении С и микроконтроллеров, я смог только когда начал читать "Создаем устройства на микроконтроллерах (Белов)(2007)"а вы читайте не самоучители для чайников, а классику жанра - про язык Си, про алгоритмизацию и т.п. книг немало хороших, особенно иностранных авторов
дело ваше. но мое мнение, основанное на знакомстве со многими начинающими программистами, следующее: если вы учитесь по книге, которая учит, как мигать светодиодом, вы научитесь писать программы, мигающие светодиодами. и все. не более. а вот если вы изучите язык программирования и архитектуру МК - вам больше не придется ничему учиться, т.к., надеюсь, с логическим мышлением у вас все в порядке - а больше ничего и не потребуется!neon-f писал(а):Сдвинуться с мертвой точки в изучении С и микроконтроллеров, я смог только когда начал читать "Создаем устройства на микроконтроллерах (Белов)(2007)"
вы считаете, что прочтя разговорник англо-китайский вы научитесь сразу и по-китайски и по-английски разговаривать?! нет, вы научитесь просить подать чай в ресторане на этих языках, но вот понять, что у вас спросят в ответ (вам зеленый жасминовый или розовый императорский) вы не поймете, хоть вам и повторят на обоих языках. чтобы понимать - придется выучить язык, а не разговорник. самоучители всяких Беловых и других "наставников чайников" - это разговорник, а классика по языку Си - это библия, талмуд и коран для программиста в одном флаконе.
остальное за вами. Беловы и Ко учат вас двигать биты, а я говорю: надо учиться думать над тем, что делать. именно думать - делать будет МК. но думать он не сможет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 26671
- Зарегистрирован: Пт май 18, 2007 22:56:58
Подскажите в чем может быть проблема?
Использую в цикле задержку delay_ms(10) кое где, и все замечательно работает (проверяю в Proteus).
Но мне ее надо изменять по ходу дела, по этому вместо цифры ставлю название переменной (delay_ms(time))в которой записана эта-же цифра (пробовал переменные разных типов). При этом при эмуляции в Proteus задержка оказывается в сотни или даже тысячи раз дольше, все ужасно тормозит.
Из-за чего это может быть?
Использую в цикле задержку delay_ms(10) кое где, и все замечательно работает (проверяю в Proteus).
Но мне ее надо изменять по ходу дела, по этому вместо цифры ставлю название переменной (delay_ms(time))в которой записана эта-же цифра (пробовал переменные разных типов). При этом при эмуляции в Proteus задержка оказывается в сотни или даже тысячи раз дольше, все ужасно тормозит.
Не променяю медь на ржавую несгорайку!
программные задержки сделаны так, что если в качестве значения используется константа, компилятор генерирует ассемблерный код сразу на нужное число тактов исполнения. а когда в качестве значения выступает переменная, то генерируется универсальный код, который значительно сложнее, и, как правило, не позволяет делать точные задержки. поэтому, если нет возможности избежать программных задержек, задействовав таймер, можно с приемлемой точностью поступить так:
Код: Выделить всё
// функция задержек с шагом в 1 мс
void delay_MS(unsigned char ms){
for(;ms;ms--)
delay_ms(1);
}если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Обращаю внимание: функция sqrt() иногда выдает не верный результат, пользуйтесь pow().
- Сообщения: 6
- Зарегистрирован: Вс май 02, 2010 11:32:13
Всем привет!
Скачал CVAVR 2.04 а установить не могу - требует пароль для установки. Поделитесь, плз, у кого есть - очень нужно!
Скачал CVAVR 2.04 а установить не могу - требует пароль для установки. Поделитесь, плз, у кого есть - очень нужно!
- Сообщения: 1
- Зарегистрирован: Вт май 25, 2010 10:05:45
помогите настроить АЦП в тиньке13 /// пишу в CVAVR в проекте нада обрабатывать несколько кнопок.
какое опорное напряжение у тиньки или как его источник выбрать , в конфигураторе кодевижена выбирать низя .... в даташите написано 1,1В но при пересчёте из результатов преобразования по формуле adc=(Vin*1024)/Vref (кстати из даташита) нифига не сходится =(
какое опорное напряжение у тиньки или как его источник выбрать , в конфигураторе кодевижена выбирать низя .... в даташите написано 1,1В но при пересчёте из результатов преобразования по формуле adc=(Vin*1024)/Vref (кстати из даташита) нифига не сходится =(
А насколько не сходится? Может различного рода погрешности, да и сам АЦП не идеален.
Если совсем не сходится, то источник опорного напряжения у тини13 выбирается с помощью бита REFS0, регистра ADMUX. По дефолту в нём 0, то есть ИОН берётся с Vcc. Чтобы включить внутренний ИОН, нужно записать в него единицу:
ADMUX|=(1<<REFS0);
Если совсем не сходится, то источник опорного напряжения у тини13 выбирается с помощью бита REFS0, регистра ADMUX. По дефолту в нём 0, то есть ИОН берётся с Vcc. Чтобы включить внутренний ИОН, нужно записать в него единицу:
ADMUX|=(1<<REFS0);
- Сообщения: 11
- Зарегистрирован: Сб май 29, 2010 12:23:25
Здравствуйте.
Помогите Новичку освоить использование кнопок .
Вот например:
подключаю я кнопку к PINB.1 (кнопка без фиксации,срабатывает при замыкании на ноль и использую подтяжку к плюсу в МК.)
а к PORTC.1 (подключил светодиод,катод к минусу а анод через резистор к ножке МК.)
так вот я не могу написать код, чтобы при нажатии на кнопку - светодиод загорелся а при отпускании не потух.
Только когда я повторно нажму на кнопку он должен потухнуть и так по кругу.
Большая просьба напишите мне код для этой программы в CVAVR или объясните так чтоб понятно было новичку.
ЗАРАНЕЕ ВАМ БЛАГОДАРЕН.
Помогите Новичку освоить использование кнопок .
Вот например:
подключаю я кнопку к PINB.1 (кнопка без фиксации,срабатывает при замыкании на ноль и использую подтяжку к плюсу в МК.)
а к PORTC.1 (подключил светодиод,катод к минусу а анод через резистор к ножке МК.)
так вот я не могу написать код, чтобы при нажатии на кнопку - светодиод загорелся а при отпускании не потух.
Только когда я повторно нажму на кнопку он должен потухнуть и так по кругу.
Большая просьба напишите мне код для этой программы в CVAVR или объясните так чтоб понятно было новичку.
ЗАРАНЕЕ ВАМ БЛАГОДАРЕН.
Код: Выделить всё
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; //Иначе гасим (кнопка отпущена)
}
}


