Страница 11 из 421

Добавлено: Пт май 30, 2008 09:30:34
tych
физтеховиц писал(а):нужно получить ШИМ с частотой 100 кГц, ОБЪЯСНИТЕ ПОЖАЛУЙСТА КАК НАСТРАИВАТЬ ЧАСТОТУ ШИМ У AVR
"ШИМ в AVR" - это задача 8 под кнопкой Изображение ниже. Там и пример для симуляции.

100 кГц * 256 (это 8 бит) = 25.6 МГц

ATmega48 можно попробовать, а ATtiny261 наверняка сможет ШИМ 100 кГц выдавать.

Добавлено: Пт май 30, 2008 16:57:29
физтеховиц
Ясно, и где такой кварц взять? и работают ли AVR НА ТАКОЙ ЧАСТОТЕ?
Если ATMega48/ATMega88/ATMega168 работают на частотах от 0 до 16 МГц у ATMega48/ATMega88/ATMega168
Друг, мы наверно не поняли друг друга
частота ШИМ =тактовая частота таймера/510,
где 510 для 8-битного счетчика
Итого, для 100КгЦ шим имеем 100КгЦ*510=51 МГЦ МНОГОВАТО БУДЕТ!!!! :shock:
Спрашивается и как быть??? как оптимально подобрать кварц?

Добавлено: Пт май 30, 2008 17:57:01
tych
физтеховиц писал(а):ATMega48/ATMega88/ATMega168 работают на частотах от 0 до 16 МГц
До 20 МГц по ДШ. потому я и говорю попробуйте на 25 МГц.
физтеховиц писал(а):и как быть??? как оптимально подобрать кварц?
ВНИМАТЕЛЬНО читать ответы !!!

тини261 внутри увеличивает частоту до 64 МГц и таймер с такой частотой тикать может.

Пример исходников ШИМ на Тини261 есть на стр. 7 в курсе по AVR - см. AVR449

Добавлено: Пт май 30, 2008 18:52:07
ARV
если использовать "укороченный" ШИМ - можно получить 100 кГц и на обычных мегах и тиньках... только разрядность ШИМ будет не 8, а 7 или менее бит...

Добавлено: Пт май 30, 2008 18:54:13
физтеховиц
Хорош рекламировать этот сайт, по делу бы сказал хоть как реализовать 100 кгц ШИМ на каком кварце и т. д.

Добавлено: Пт май 30, 2008 19:12:59
tych
ARV, хорош сайт рекламировать !!! :lol: :lol: :lol:

Добавлено: Пт май 30, 2008 19:22:03
ARV
tych писал(а):ARV, хорош сайт рекламировать !!! :lol: :lol: :lol:
я больше не буду...

Добавлено: Пт май 30, 2008 19:41:08
физтеховиц
tych писал(а): Пример исходников ШИМ на Тини261 есть на стр. 7 в курсе по AVR - см. AVR449
ДА,ДА-ЭТО Я ВАМ ГОВОРЮ (Шутька :)) )
Спасибо за дельный совет ARV,и tych тоже спасибо решено использовать 6-разрядный счетчик. тогда(без предделения частоты) получается частота 12,6 МГц, но вот проблемка, таких кварцев я не нашел, самый ближайший на 12,613 МГц, как быть? Посоветуйте пожалуйста

Добавлено: Пт май 30, 2008 20:06:39
физтеховиц
Решено:
взять кварц на 12 МГц;
предделения частоты не используем;
используем 6-битный таймер-счетчик;
считать счетчик будет от 0...60 (61 импульс) и обратно 59...1 (59 импульс) (кол-во импульсов счета за период=120);
тогда частота ШИМ=12 МГц/120=100 кГц

Респект и уважуха всем кто помог!!!

Добавлено: Сб май 31, 2008 14:21:41
физтеховиц
Уважаемые, подскажите как организовать таймер-счетчик так, чтобы он считал не до $FF и обратно, а , скажем, до 61 и обратно????
Возможно ли это???

Добавлено: Сб май 31, 2008 14:56:20
tych
физтеховиц писал(а):Уважаемые, подскажите как организовать таймер-счетчик так, чтобы он считал не до $FF и обратно, а , скажем, до 61 и обратно???? Возможно ли это???
Возможно ! Примеры в задачах 6 и 13.

Добавлено: Чт июн 05, 2008 09:41:47
sgarris
Контроллерами занимаюсь совсем недавно и есть такой вопрос к гуру программирования. Сначала выбрал Bascom-basic, как наиболее простой в освоении, тем более, что есть небольшой опыт в VB. Но из различных источников приходилось читать, что Си выдает один из самых компактных кодов, среди существующих языков высокого уровня.
Вот решил освоить Си в CodeVision, т.к. планируется использовать довольно сложные алгоритмы, и размер кода желательно минимизировать.
Была собрана простая схема на Атмега8535, к которой прикручен датчик
темп. DS18B20 и таймер DS1307. Для проверки были написаны две пр-ммы, одна в CV, другая в Баскоме. Обе программы используют собственные встроенные функции для работы с переферией, и реализуют одну задачу - вывод на LCD показаний датчика и таймера в форматированном виде.
Размер НЕХ-файла в Баскоме - 11423 байта, в CV - 11419 (в CV была включена максимальная оптимизация по размеру) . То-есть практически никакой разницы. При этом ИМХО программирование в бейсике намного проще. Читал так-же что код скомпилированный в Си выполняется быстрее, но это не принципиально, т.к. критичные ко времени участки все равно оформляются вставками на асме.
Так где-же истина? Или может в консерватории чего подправить :)

Добавлено: Чт июн 05, 2008 12:13:53
Aheir
Истина в том, что нужно писать на том языке и в той среде, которая в данном конкретном случае обеспечивает оптимальные параметры решения Вашей текущей задачи. На это также можно спроецировать Ваши привычки, удобство, общественное мнение и т.д. Поэтому, что бы Вы не выбрали, всегда найдется кто-то, кто предпочтет Вашему варианту другой. Идеала нет даже в каждом отдельно взятом случае, не говоря уж о программировании вообще. Поэтому давайте остановимся на этой пессимистичной ноте, поскольку в противном случае здесь разразится очередной холивар на тему ASM vs C vs Basic и т.д. Таких тем у нас хватает, если интересно - найдете.
Надеюсь, вопрос закрыт.

Добавлено: Чт июн 05, 2008 12:28:59
tych
sgarris писал(а):Так где-же истина? :)
истина в вине, а программировать советую на СИ. Если нужен компактный код то в компиляторах WinAVR и IAR. CVAVR прост и удобен ИМХО.

CodeVisionAVR: функция sprintf

Добавлено: Пн июн 09, 2008 11:17:58
MiD
CodeVisionAVR: функция sprintf - не выводит формат float

писал тут вопрос с такой темой, но меня справедливо направили в эту ветку...
Разобрался сам - Float в этой функции не работала, т.к. в настройках компилятора не стояла нужная галочка

Добавлено: Пн июн 09, 2008 11:49:27
ARV
sgarris писал(а):Так где-же истина? Или может в консерватории чего подправить :)
во-первых, сравнение оптимизаторов на "встроенных" функциях - смешное занятие: разумеется, все встроенные функции разработчиками оптимизированы так, чтобы быть лучше всех! :) скорее всего, они на асме вручную написаны... а вот вы полностью решите свою задачу на одном и другом языке, и тогда сравните, как они отреагируют на ваши "неоптимальные" функции - тогда истина, возможно, откроется.

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

Добавлено: Ср июн 11, 2008 12:16:46
intel4ever
Подскажите пожалуйста, как вывести переменную типа integer на HD44780 совместимых ЖКИ?

Добавлено: Ср июн 11, 2008 13:19:46
Aheir
Думаю, самое простое - разбить на два char'a

Добавлено: Ср июн 11, 2008 13:54:51
tych
intel4ever писал(а):Подскажите пожалуйста, как вывести переменную типа integer на HD44780 совместимый LCD ЖКИ ?
Наверно itoa() вначале использовать. Смотрите "Си для МК" стр. 5 часть 2 под кнопкой Изображение ниже.
Aheir писал(а):Думаю, самое простое - разбить на два char'a
Ну например int 28534 - разбиваем на два чара 111 и 118 и как их выводить ???

Добавлено: Ср июн 11, 2008 18:08:16
ARV
а чем sprintf не устраивает?!