Страница 67 из 628

Добавлено: Пн сен 28, 2009 18:32:19
ARV
SarCity писал(а):т.е. у тини861 в регистре TIMSK битом 1 является TOIE0, а у меги8 в этом регистре в бите1 ничего нет, прочерк (по даташиту). Такая же ситуация и с остальными двумя регистрами.
не понятно, с чего вы взяли, что в этих командах идет работа с 1-ым битом регистров? приведенная запись почти аппаратно-независима, поэтому не сомневайтесь: будет работать на обоих МК :)

Добавлено: Чт окт 01, 2009 19:35:20
Vergilium
Подскажите пожалуста как фиксировать нажатие клавиши на С в WinAVR. Мне нужно в цикле сканировать не нажата ли какая либо клавиша и если нажата выполнять соответствующие действия. Подкинте какой либо примерчик.


ЗЫ. МК мега16

Добавлено: Чт окт 01, 2009 19:46:14
Arlleex
а как можно сделать, чтобы светодиод на любом канале порта мигал все время с определенной частотой? например, 1Гц? это нужно для показателя того, что программа выполняется. НУжны специальные выводы микроконтроллера, или на любой можно вывод светодоид повесить? :?

Добавлено: Чт окт 01, 2009 21:27:08
ibiza11
в прерывании таймера считать кол-во прерываний, при совпадении числа с заранее установленным - менять значение вывода порта на противоположное.

Добавлено: Пт окт 02, 2009 06:32:51
Arlleex
т.е. собсна можно на любой канал в порту? :)

Добавлено: Пт окт 02, 2009 12:03:07
SII
На любой, не занятый под какие-нибудь специальные функции.

Добавлено: Пт окт 02, 2009 17:28:03
BAD1
Можно узнать, какие фьюзы лучше не менять, и на какие ноги лучше ничего не цеплять, чтобы не потерять возможность перепрограммирования? Мега8.

я думаю что нельзя менять SPIEN, RSTDISBL...

и соответствено не использовать ногу RESET и все.
прав ли я?)

Добавлено: Пн окт 05, 2009 22:37:59
Vergilium
Прошу извенения за глупый вопрос но сколько должен весить hex фаил для заполнения всей памяти ATmega16. Я думал 16кбайт но видел и до 28кбайт. Как опредилить сколько места осталось чтоб вместится? Может какоето определенное количество строк должно быть?

Добавлено: Пн окт 05, 2009 22:57:06
ibiza11
вы сразу hex пишете??? по-любому в компиляторе есть "указатель запоненной памяти", там и смотрите сколько байт занимает код)))) по другому не могу сформулировать, голова не варит что то))))

Добавлено: Пн окт 05, 2009 23:01:34
smac
Vergilium писал(а):Прошу извенения за глупый вопрос но сколько должен весить hex фаил для заполнения всей памяти ATmega16. ... Как опредилить сколько места осталось чтоб вместится? Может какоето определенное количество строк должно быть?
В обшем случае размер hex файла не говорит о размере прошивки ничего, например возможны случаи когда hex весит 1 кБайт, но прошивка в контроллер не влезет. Дело в том, что этот формат предполагает указание начального адреса и смещения прошиваемой строки. (Т. е. можно указать что начинать прошивку надо с адреса близкого к концу флеш памяти). Если прошивка ведется с нулевого ардеса, то приблизительно прикинуть занимаемое место во флеш можно разделив размер хекса на 2-3. Точный способ - перевести hex в bin формат.
Самый правильный ответ - про указатель занимаемой памяти - в предыдущем посте.

Добавлено: Пн окт 05, 2009 23:40:23
Vergilium
Я так понимаю сдесь говорится что занято 3.182 кбайта т.е. 19,4%. А что за второе значение 60 байт?

AVR Memory Usage
----------------
Device: atmega16

Program: 3182 bytes (19.4% Full)
(.text + .data + .bootloader)

Data: 60 bytes (5.9% Full)
(.data + .bss + .noinit)

-------- end --------

Добавлено: Пн окт 05, 2009 23:45:20
ibiza11
в микроконтроллере есть несколько видов памяти. FLASH,SRAM,EEPROM. так вот программный код записывается во FLASH. второе число, как я понимаю это SRAM (ОЗУ).

Добавлено: Вт окт 06, 2009 13:31:04
Vergilium
Еще один вопросик. Как расчитать тайменги для вывода на светодиодную матрицу динамического изображения. Ну допустем у меня 6 матриц 8х8 светодиодов, получается 48 столбиков. Вот какая должна быть длительность свечения одного столбика чтобы изображение не мерцало и яркость была нормальная. Может какието рекомендации или методики есть.

Добавлено: Вт окт 06, 2009 14:54:32
ibiza11
человеческий глаз не замечает мерцания частотой 25Гц (слышали, что такое 25ый кадр?). я бы посоветовал больше, порядка 50-60Гц, для верности.если такое широкое изображение, то желательно индикацию делать не по строчно, а через строку (т.е. сначала четные строки, потом нечетные), что тоже положительно влияет на реалистичность картинки.

Добавлено: Ср окт 07, 2009 17:33:35
sachok
У меня есть переменная в 1 байт (8 бит) можно както менять значение конкретного бита??? например мне нужно что бы 4-ый бит стал единицей, а все остальные остались так как были до этого.

Добавлено: Ср окт 07, 2009 17:35:37
МитяРа
Логическое ИЛИ с маской..
Например для твоего случая маска 0001000..
Если надо ноль выставить, то логическое И и маску инвертировать..
..
Если битов несколько, то единичек и нулей в масках тоже будет несколько....

Добавлено: Ср окт 07, 2009 18:27:25
Yellow Tiger
А ещё, в целях манипуляции отдельными битами и группами битов, можно воспользоваться битовыми полями, тогда становятся простыми разные арифметические операции, операции сравнения, использование группы битов в качестае счетчиков циклов и т.д.

Добавлено: Ср окт 07, 2009 21:01:28
sachok
Спасибо!!! Мне не нужно делать никаких арифметических операций, мне просто при определёных условиях нужно установить нужные биты в "1" и "отправить" их на сдвиговый регистр 74hc164 :)

Добавлено: Ср окт 07, 2009 21:11:45
Arlleex
для этого есть команды SBI и CBI.

Добавлено: Ср окт 07, 2009 23:12:12
Yellow Tiger
sachok писал(а):Спасибо!!! Мне не нужно делать ...
Как ни странно, оба способа подходят и к такой постановке задачи. Выбирай сам. :)))
Stalker46 писал(а):для этого есть команды SBI и CBI.
Ему биты выставлять нужно - в переменной, а не на выходах порта; ты описание этих инструкций-то прочёл, перед тем, как советовать? Изображение