Например TDA7294

Форум РадиоКот • Просмотр темы - Нескольно простых вопросов о программировании AVR на Си.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 29, 2025 13:19:27

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1499 ]     ... , , , 16, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: 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 07:41:25 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4899
Откуда: Минск
Рейтинг сообщения: 1
А простое чтение из порта IO не работает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт ноя 24, 2015 08:02:08 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт сен 03, 2015 15:52:10
Сообщений: 109
Откуда: Сибирский федеральный округ
Рейтинг сообщения: 0
О благодарю))) попробую) Даже как то не думал.

работает чтение.

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

"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 26, 2015 09:34:34 
Сёгун сайта
Аватар пользователя

Зарегистрирован: Сб дек 14, 2013 01:03:17
Сообщений: 524
Откуда: РБ
Рейтинг сообщения: 0
Здравствуйте, скажу сразу ничего в программировании не понимаю.
Но есть задача: разработчику требуется AVR-jtag для отладки. Использует в своих разработках вот этот камень ATmega162-16AU. Пользуется только средой программирования IAR.
Вопрос любой jtag можно приобрести для работ? например этот http://www.chipdip.ru/product/avr-jtag-usb/ (смущает, что написано для avr studio)
Кто понимает данный вопрос просьба написать в л.с. или сюда, какой jtag требуется. :shock:


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 27, 2015 19:00:43 
Сёгун сайта
Аватар пользователя

Зарегистрирован: Сб дек 14, 2013 01:03:17
Сообщений: 524
Откуда: РБ
Рейтинг сообщения: 0
Ни кто не знает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вс ноя 29, 2015 10:18:59 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
Видимо, Olimex'овские поделки здесь не так популярны. Ими торгует terraelectronica.ru; направьте разработчика на тамошний форум - если не участники, то сотрудники фирмы ответят.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 13:59:36 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт сен 03, 2015 15:52:10
Сообщений: 109
Откуда: Сибирский федеральный округ
Рейтинг сообщения: 0
Можно ли использовать битовые поля при работе с регистрами?

просто есть разница например настройка таймера с шим через регистры

Код:
TCCR0A = (0<<COM0A1)|(0<<OM0A0)|(1<<COM0B1)(0<<COM0B0)(1<<WGM01)(1<<WGM00);
TCCR0B = (0<<FOC0A)|(0<<FOC0B)|(1<<WGM02)|(CS02)|(1<<CS01)|(0<<CS00);
TCNT0 = 0;
OCR0A = 220;
OCR0B = 110;


или через битовые поля

Код:
#define Disconnected 0
#define Toggle_on_Compare_Match 1
#define Clear_on_Compare_Match 2
#define Set_on_Compare_Match 3

typedef struct{
       char Compare_Match_A_Mode:2;
       char Compare_Match_B_Mode:2;
       char res0:2;
       char Waveform_Generation_Mode0:2;
       char FC_Compare_A:1;
       char FC_Compare_B:1;
       char res1:2;
       char Waveform_Generation_Mode1:1;
       char Clock_Select:3;
       char Timer_Counter_Register:8;
       char Compare_Register_A:8;
       char Compare_Register_B:8;
}Timer0_Setup;

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 схавает и код работать будет только какие то сомнения что не все так гладко)

Зы разница в том что кода больше становиться но он проктически не нуждается в комментировании а вот регистры требуют тонны комментариев описывающих, что происходит и устаревают тут же после правки кода! А битовые поля можно так сказать само-документирование! (осмысленные имена)

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

"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 14:13:43 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
в чем сомнения-то?
если не брать в расчет некоторую тормознутость такого подхода (во всяком случае WinAVR генерирует не самый идеально оптимальный код) все будет нормально работать.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 14:24:34 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт сен 03, 2015 15:52:10
Сообщений: 109
Откуда: Сибирский федеральный округ
Рейтинг сообщения: 0
На сайте атмела есть описание всех вкусностей к avr а это не описано ни где. А как правильно сбрасывать флаги типа OCF0B в регистре TIFR0. (хочу все в кучу собрать в одну структуру) просто мне кажется что они при любой правке структуры будут сброшены (вот что мне покоя не давало допер наконец))))

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

"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 14:36:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18448
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
флаги запросов прерываний сбрасываются записью единицы. а когда вы работаете с битовыми полями, на место "неиспользуемых" битов пишется прежнее их состояние, т.е. флаг запроса будет сброшен, если он стоял.
тут, конечно, нюансик...

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 14:48:39 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Чт фев 28, 2013 14:16:10
Сообщений: 227
Рейтинг сообщения: 0
DronVolk писал(а):
Код:
typedef struct{
       char Compare_Match_A_Mode:2;
       char Compare_Match_B_Mode:2;
...




А где в стандарте языка сказано в каком порядке идут биты и идут ли они непрерывно друг за другом?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 14:57:55 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пн сен 26, 2011 13:48:25
Сообщений: 202
Откуда: Харьков
Рейтинг сообщения: 0
ks0 писал(а):
DronVolk писал(а):
Код:
typedef struct{
       char Compare_Match_A_Mode:2;
       char Compare_Match_B_Mode:2;
...




А где в стандарте языка сказано в каком порядке идут биты и идут ли они непрерывно друг за другом?


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

_________________
Осилит дорогу идущий
----------
Пишу на Си за еду


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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:40:54 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Чт фев 28, 2013 14:16:10
Сообщений: 227
Рейтинг сообщения: 0
Так а если компилятор другой будет? То ку-ку? Никакой гарантии.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн ноя 30, 2015 15:44:18 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт сен 03, 2015 15:52:10
Сообщений: 109
Откуда: Сибирский федеральный округ
Рейтинг сообщения: 0
Ага :))
Это как заголовочные файлы - оно обрастают кучей строк пред-процессора и половина это проверка какой компилятор используется))) (я задавая вопрос не предпологал что потребуется переносить этот код)
В стандарте где то есть описание, но оно такое же противоречивое как для обычных структур типа выравнивания (степень двойки или кратность размера переменных)

Я все таки откопал информацию
Работа с регистрами внешних устройств в языке C
часть 1 http://habrahabr.ru/post/220717/
часть 2 http://habrahabr.ru/post/221459/
часть 3 http://geektimes.ru/post/254734/

И в статье не затрагивается вопрос о сбросе флага (это остается на совести програмиста )

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

"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт дек 01, 2015 09:42:33 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
DronVolk писал(а):
Можно ли использовать битовые поля при работе с регистрами?
Можно, если есть уверенность, что структура точно ляжет на регистры. Если очень надо выпендриться и накрыть одной структурой несколько регистров, то необходимо в заголовочном файле переключать выравнивание и перед выходом возвращать его в исходное значение.
Предпочтительнее оставаться в рамках одного регистра, так как сущностно в этом подходе главное - возможность именовать битовые поля, а остальное - рюшечки.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт дек 01, 2015 11:07:16 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт сен 03, 2015 15:52:10
Сообщений: 109
Откуда: Сибирский федеральный округ
Рейтинг сообщения: 0
я бы еще добавил что теряется атоморность, скорость и итоговый размер растет в разы :))

Проблема в переносимости между компиляторами является причиной отсутствия апноута на сайте атмела.

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

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

"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт дек 01, 2015 11:46:38 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
DronVolk писал(а):
теряется атоморность
Ничего не теряется.
DronVolk писал(а):
теряется ... скорость и итоговый размер растет в разы
Это неправда.
DronVolk писал(а):
разрыв некоторых полей в регистрах мешает ...
Разрывов не так и много, не стоит драматизировать.
DronVolk писал(а):
Получается много сущностей ... а причина использования битовых полей в сокращении (числа) этих сущностей
Число сущностей сокращается, цель достигнута (настолько, насколько позволяет железо).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт дек 01, 2015 14:16:12 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Пример - настройка режима таймера, биты WGMx3:WGMx0, разнесенные по TCCRxA и TCCRxB. Атомарность теряется (разве что блокировать прерывания, что бред), скорость доступа - хз. Если записывается только тот регистр, который нужно изменить, все нормально, но я пока плохо представляю, как это может быть реализовано. Если же перезаписываются оба регистра - теряется скорость. Размер кода опять-таки неизвестно, зависит от реализации.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт дек 01, 2015 18:57:44 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт сен 03, 2015 15:52:10
Сообщений: 109
Откуда: Сибирский федеральный округ
Рейтинг сообщения: 0
Блин если бы да кабы. :))
в регистре TCCR0B параметр WGM02 находится в центре :( хотел применить финт ушами и выравнивание старший младший в центре структуры запихать. Не канает :cry:

В общем пример от руки для битовых полей выше лежит, а атоморность и так теряется из за разрыва WGM00:02.
COKPOWEHEU писал(а):
разве что блокировать прерывания, что бред
не бред! Любые манипуляции с регистрами желательно защищать если нет уверенности в атоморности и тут нужно смотреть высер компилятора!

попробую накидать структуру для 0 таймера может быть будет вкусно и минусы не так страшны. (падение скорости, увеличение размера кода )

зы если брать 8-ми битный avr то выравнивание получается в 1 байт и код
Код:
#pragma pack(push, 1)
...
#pragma pack(pop)


не меняет поведения (хотя думаю что лучше подстраховаться)

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

"Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного." Альберт Эйнштейн.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1499 ]     ... , , , 16, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y