Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт ноя 24, 2015 07:00:02
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
Как определить фазу шим? Завожу таймер с делителем на 8 и нужно узнать в мк какое состояние сейчас на ножке лог 1 или 0. Не могу найти где флаг какой есть. Можно конечно определять по тому сколько натикал таймер и какое число заведено в шим но это как я понял тормозит схему сравнения таймера на 1 такт.
Pnjom-Penb писал(а):
DronVolk писал(а):
введешь человека в заблуждение
Любезный, во-первых - я с Вами на брудершафт не пил, да и не выпью никогда, а потому - оставьте этот тон для соседей по двору. А во-вторых, вводить в заблуждение - это скорее ляпнуть что-то категоричное, из серии:
DronVolk писал(а):
Прерывание не может быть прервано ...
, не давая никаких пояснений, как будто это истина на все случаи жизни.
извиняюсь если обидел. Когда мк входит в прерывание он запрещает их устанавливая (сбрасывая) флаг в регистре SREG по выходу из прерывания он вернет флаг командой reti. Если в обработчике не разрешается прерывание то он выполнится до конца и войдет в следующее прерывание если оно есть. Если установить флаг глобального прерывания в обработчике то он может быть прерван другим прерыванием и продолжить свое исполнение до другого прерывания (но это не есть гуд так как можно попортить стек).
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт ноя 24, 2015 08:02:08
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
О благодарю))) попробую) Даже как то не думал.
работает чтение.
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
Здравствуйте, скажу сразу ничего в программировании не понимаю. Но есть задача: разработчику требуется AVR-jtag для отладки. Использует в своих разработках вот этот камень ATmega162-16AU. Пользуется только средой программирования IAR. Вопрос любой jtag можно приобрести для работ? например этот http://www.chipdip.ru/product/avr-jtag-usb/ (смущает, что написано для avr studio) Кто понимает данный вопрос просьба написать в л.с. или сюда, какой jtag требуется.
Видимо, Olimex'овские поделки здесь не так популярны. Ими торгует terraelectronica.ru; направьте разработчика на тамошний форум - если не участники, то сотрудники фирмы ответят.
Timer0_Setup *setup = (Timer0_Setup*)&TCCR0A;//они друг за другом идут поэтому сразу 5 захватим setup->Compare_Match_A_Mode = Disconnected; setup->Compare_Match_B_Mode = Set_on_Compare_Match; setup->Waveform_Generation_Mode0 = FAST_PWM_0; setup->Waveform_Generation_Mode1 = FAST_PWM_1; setup->FC_Compare_A = Disconnected; setup->FC_Compare_B = Disconnected; setup->Clock_Select = Clock_Divisor_x8; setup->Timer_Counter_Register = 0; setup->Compare_Register_A = 220; setup->Compare_Register_B = 110;
что то типа того! Не нашел в интернете не запрета не разрешения их использования. Вот и вопрос можно ли так делать или нет? (WinAvr схавает и код работать будет только какие то сомнения что не все так гладко)
Зы разница в том что кода больше становиться но он проктически не нуждается в комментировании а вот регистры требуют тонны комментариев описывающих, что происходит и устаревают тут же после правки кода! А битовые поля можно так сказать само-документирование! (осмысленные имена)
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
в чем сомнения-то? если не брать в расчет некоторую тормознутость такого подхода (во всяком случае WinAVR генерирует не самый идеально оптимальный код) все будет нормально работать.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн ноя 30, 2015 14:24:34
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
На сайте атмела есть описание всех вкусностей к avr а это не описано ни где. А как правильно сбрасывать флаги типа OCF0B в регистре TIFR0. (хочу все в кучу собрать в одну структуру) просто мне кажется что они при любой правке структуры будут сброшены (вот что мне покоя не давало допер наконец))))
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
флаги запросов прерываний сбрасываются записью единицы. а когда вы работаете с битовыми полями, на место "неиспользуемых" битов пишется прежнее их состояние, т.е. флаг запроса будет сброшен, если он стоял. тут, конечно, нюансик...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
А где в стандарте языка сказано в каком порядке идут биты и идут ли они непрерывно друг за другом?
на сколько я знаю, битовые поля считаются не особо переносимыми штуками. внутри своего устройства - используйте пожалуйста. но если нужно их передавать между десятком разношерстных архитектур, то лучше битовые маски)
_________________ Осилит дорогу идущий ---------- Пишу на Си за еду
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн ноя 30, 2015 15:23:58
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
ks0 писал(а):
А где в стандарте языка сказано в каком порядке идут биты и идут ли они непрерывно друг за другом?
Я не знаю где в стандарте описано! Это зависит от компилятора (нужно проверять и использовать пред-процессор)! Со всеми нюансами я разберусь))) Вопрос был в камнях в лотке при использовании битовых полей)))) Они идут непрерывно в пределах байта а дальше уже по выравниванию структуры что пренудительно ставиться предпроцесором в 1 байт (#pragma pack(push,1) и следование тоже таким макаром)
slavokhire5 писал(а):
на сколько я знаю, битовые поля считаются не особо переносимыми штуками. внутри своего устройства - используйте пожалуйста. но если нужно их передавать между десятком разношерстных архитектур, то лучше битовые маски)
Предполагается их использовать для регистров мк а они строго индивидуальны и переносить тет нечего! (эт если ко мне послание)
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн ноя 30, 2015 15:44:18
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
Ага Это как заголовочные файлы - оно обрастают кучей строк пред-процессора и половина это проверка какой компилятор используется))) (я задавая вопрос не предпологал что потребуется переносить этот код) В стандарте где то есть описание, но оно такое же противоречивое как для обычных структур типа выравнивания (степень двойки или кратность размера переменных)
И в статье не затрагивается вопрос о сбросе флага (это остается на совести програмиста )
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
Можно ли использовать битовые поля при работе с регистрами?
Можно, если есть уверенность, что структура точно ляжет на регистры. Если очень надо выпендриться и накрыть одной структурой несколько регистров, то необходимо в заголовочном файле переключать выравнивание и перед выходом возвращать его в исходное значение. Предпочтительнее оставаться в рамках одного регистра, так как сущностно в этом подходе главное - возможность именовать битовые поля, а остальное - рюшечки.
PS Если бы еще не эта чертова обратная совместимость, из-за которой некоторые битовые поля разорваны между регистрами, смотрелось бы миленько...
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт дек 01, 2015 11:07:16
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
я бы еще добавил что теряется атоморность, скорость и итоговый размер растет в разы
Проблема в переносимости между компиляторами является причиной отсутствия апноута на сайте атмела.
именно разрыв некоторых полей в регистрах мешает оставаться в пределах одного регистра. Получается много сущностей с одинаковыми полями, а причина использования битовых полей в сокращении этих сущностей (несколько регистров с ужасными именами становятся одной структурой с осмысленными именами и параметрами)
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
Пример - настройка режима таймера, биты WGMx3:WGMx0, разнесенные по TCCRxA и TCCRxB. Атомарность теряется (разве что блокировать прерывания, что бред), скорость доступа - хз. Если записывается только тот регистр, который нужно изменить, все нормально, но я пока плохо представляю, как это может быть реализовано. Если же перезаписываются оба регистра - теряется скорость. Размер кода опять-таки неизвестно, зависит от реализации.
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт дек 01, 2015 18:57:44
Встал на лапы
Зарегистрирован: Чт сен 03, 2015 15:52:10 Сообщений: 109 Откуда: Сибирский федеральный округ
Рейтинг сообщения:0
Блин если бы да кабы. в регистре TCCR0B параметр WGM02 находится в центре хотел применить финт ушами и выравнивание старший младший в центре структуры запихать. Не канает
В общем пример от руки для битовых полей выше лежит, а атоморность и так теряется из за разрыва WGM00:02.
COKPOWEHEU писал(а):
разве что блокировать прерывания, что бред
не бред! Любые манипуляции с регистрами желательно защищать если нет уверенности в атоморности и тут нужно смотреть высер компилятора!
попробую накидать структуру для 0 таймера может быть будет вкусно и минусы не так страшны. (падение скорости, увеличение размера кода )
зы если брать 8-ми битный avr то выравнивание получается в 1 байт и код
Код:
#pragma pack(push, 1) ... #pragma pack(pop)
не меняет поведения (хотя думаю что лучше подстраховаться)
_________________ я повелитель электронов! Но иногда появляются электроны бунтари и делают, что им вздумается, например, прокладывают новые пути движения...
"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения