реклама на сайте
подробности

 
 
> ATMEL рекомендует ATmega32A и ATmega16A
elecelec
сообщение Jul 1 2008, 16:49
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 30-06-08
Пользователь №: 38 665



ATMEL рекомендует ATmega32A и ATmega16A

ATmega16A при питании 2.7-5.5V частоты 0-16 MHz
http://www.atmel.com/dyn/products/product_...sp?part_id=2010

ATmega16A Datasheet полный - http://www.atmel.com/dyn/resources/prod_do...nts/doc8154.pdf

ATmega16A коротко - http://www.atmel.com/dyn/resources/prod_documents/8154S.pdf

Отличия ATmega16 и ATmega16A - апноут:
AVR522 Migrating from ATmega16 to ATmega16A Application Note
http://www.atmel.com/dyn/resources/prod_do...nts/doc8163.pdf
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ArtemKAD
сообщение Jul 4 2008, 17:41
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Вот отсутствие хотя бы двух уровней приоритета прерывания (хотя бы как в MCS51) - это бяка.

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

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

Где там у старых AVR "одинаковая периферия" кроме портов? Вот когда сделали в новых кристаллах по 5 UART-ов wink.gif , вот тогда и начали "исправлять"...

Цитата
Кто не дал сделать запрет прерываний на одну следующую команду при обращении к SPH (для время загрузки SPL),

А кто SPL вообще трогает?! Кто мешает, если уж сильно охота, запретить прерывания?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 4 2008, 18:47
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(ArtemKAD @ Jul 4 2008, 20:41) *
Не знал, что гибкая настройка системы прерываний (какие хошь прерывания, такие в данном месте и разрешай) это хуже фиксированных 2-х..
А кто мешает у MCS51 точно так же "какие хочешь, такие в данном месте и"?
Рукопашное "какие хошь прерывания, такие в данном месте и разрешай" точно так же можно и у 51-го дёргать. Никаких плюсов у АВР тут нет, ни капли не "гибче".
Вы хоть поняли, о чём я? Вы хоть знаете/помните, как оно у 51-го сделано?
Объясняю медленно:
Вошли, например, в прерывание по INT0. Но у нас ещё UART, из которого побыстрее выбрать надо, и какой-нибуть АЦП, который может и подождать.
У 51-го можно просто поднять приоритет UART выше приоритета INT0 и тогда без никаких беганий по регистрам других устройств в обработчике INT0 (а часто преріваний гораздо больше, чем три) - сохранение состояния разрешения прерывания от АЦП и его запрет на входе и восстановление состояния при выходе - UART сможет прервать INT0, а АЦП - нет.
И два уровня - это только в начальных 51-ых, массово вообще 4 уровня было.

Цитата(ArtemKAD @ Jul 4 2008, 20:41) *
А кто SPL вообще трогает?!
GCC в прологах/эпилогах трогает. Любой переключатель задач трогает. Кроме SPL я ещё и словные SFR припомнил - очень весело при каждом обращении к 16-битным таймерным регистрам запрет прерывания дёргать.

Цитата(ArtemKAD @ Jul 4 2008, 20:41) *
Кто мешает, если уж сильно охота, запретить прерывания?
Ну да. Вместо поднятия приоритета важных прерываний "если уж сильно охота" дёргать биты по разным регистрам, вместо аппаратного запрета прерывания на одну команду (почему-то у i86-го не поленились такое при записи в SS для атомарного изменения пары SS:SP сделать) тоже вручную дёргаться.
Так можно вообще договориться до того, что команда умножения - фигня, "не знал, что гибкая система сложений и сдвигов - это хуже двух команд умножения". Никто не мешает.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 6 2008, 13:19
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата(ReAl @ Jul 4 2008, 21:47) *
А кто мешает у MCS51 точно так же "какие хочешь, такие в данном месте и"?
Рукопашное "какие хошь прерывания, такие в данном месте и разрешай" точно так же можно и у 51-го дёргать.
Сильно теоретически можно. Мешает та самая приоритетная система прерываний с правилом "прервать текущее прерывание может только более приоритетное". Нельзя прервать даже прерыванием того-же уровня. Теоретически можно поднять приоритет "соседа", но тогда в этом "соседе" надо анализировать собственный приоритет, что-бы не наделать глупостей.
Как ни странно, но простота системы прерываний AVR часто и есть его преимущество. smile.gif

А плюс заключается в том, что иногда в прерывании можно разрешить прерывания еще до сохранения контекста. Хотя стоит сперва исключить возможность повторного попадания в текущее прерывание. Т.е. прерывания наинизшего уровня как в x51 эмулируются в AVR одной командой разрешения прерывания в начале обработчика (можно даже еще в таблице векторов).
А вообще - в любом длинном прерывании чаще всего есть критическая секция которую надо сделать "как можно шустрей" и "все остальное", которое уже можно обрабатывать при разрешенных прерываниях.
Цитата(ReAl @ Jul 4 2008, 21:47) *
GCC в прологах/эпилогах трогает.

Ну, это к создателям GCC... Если им лень было учитывать особенности платформы и они предпочли сделать "как в х86", то кто им лекарь. А особенность заключается в том, что X и Y позволяют сделать честный стеки данных, а не играться со стековым кадром на стеке возвратов.
Цитата(ReAl @ Jul 4 2008, 21:47) *
Любой переключатель задач трогает.

Обычно переключателю задач не атомарность SP до лампочки. Переключение задач обычно делают уже в прерывании т.е. при запрещенных операциях со стеком.
Цитата(ReAl @ Jul 4 2008, 21:47) *
Кроме SPL я ещё и словные SFR припомнил - очень весело при каждом обращении к 16-битным таймерным регистрам запрет прерывания дёргать.

Не работай с регистрами таймеров в основном цикле программы (не самое удачное решение), не будет тебе этой "проблемы". wink.gif


Цитата(ReAl @ Jul 5 2008, 18:06) *
Если же уже начал работать обработчик, к примеру, SPI, то не имеет никакого значения факт "наиприоритетности" INT0 - оно не прервёт "менее приоритетный" обработчик SPI до тех пор, пока в том не будет выполнена команда SEI. Но сразу после неё резко так обработчик EE_RDY тоже сможет прервать обработчик SPI - т.е. коту под хвост пошло теперь уже то, что обработчик SPI якобы приоритетнее EE_RDY.

Если в обработчике появилась SEI, то все, что требовало "приоритетности" там уже выполнено. Остальной код по важности ниже необходимости обработки того-же EE_RDY....
Цитата(ReAl @ Jul 5 2008, 18:06) *
Конечно, можно поизвращаться и при входе в обработчик SPI сохранить состояние разрешения прерывания EE_RDY, запретить его, потом сделать SEI, порабтать, (по вкусу - выполнить CLI) и восстановить состояние разрешения EE_RDY. Именно о таком спочобе эмуляции приоритетной системы прерываний писал ArtemKAD.

И о таком в т.ч.. Хотя именно так я никогда не делаю. Разве, что тогда, когда меня интересует не само прерывание, а только его флаг. Обычно обработчик делится на приоритетную часть(которую прерывать нельзя) и остальную (после SEI)
Цитата
Но это только программная эмуляция того, что у других бывает аппаратно.
В том же MCS51 имеется две или четыре таких цепочки, которая у AVR одна.

Не совсем такие. У MCS51 разрулить выполнение прерываний с равными приоритетами - только последовательное исполнение. Поэтому там длинным обработчикам ПРИХОДИТСЯ ставить наинизший приоритет независимо от их важности т.к. разрешить выполнение ВСЕХ остальных прерываний посреди обработчика весьма непросто
Цитата
В этом случае, например, можно прерывание от аналогового компаратора переместить в самую приоритетную цепочку и сработка компаратора сразу же вызовет его обработчик - без ожидания, пока работающий уже в данный момент обработчик какого-нибудь таймера расщедрится на сохранение контекста,

Ага... Если только это прерывание "какого-нибудь таймера" само не вызвано таким-же способом из другого прерывания wink.gif . Тогда вызвать прерывание "от аналогового компаратора" повышением его приоритета будет не суждено.

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

Зачем? Просто ставь пораньше SEI если не нужна дальше непрерывность кода. А "наименее приоритетные" вообще начинай с этой команды...
Цитата
Да, в свежих AVR это дело потихоньку поправили, но изначально был такой ляп...

Не думаю, что это был совсем уж ляп. Скорее всего в погоне за ценой кристалла делали регистры "так как получилось". С переходом на более мелкую норму ресурсы по "устаканиванию" порядка регистров стали более незаметны вот в новых и поправляют.
ЗЫ. Как по мне - наиболее неудобное расположение регистров у Mega48(88/168), но у них и наилучшее соотношение цена/возможности.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 7 2008, 11:27
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Не совсем такие. У MCS51 разрулить выполнение прерываний с равными приоритетами - только последовательное исполнение. Поэтому там длинным обработчикам ПРИХОДИТСЯ ставить наинизший приоритет независимо от их важности т.к. разрешить выполнение ВСЕХ остальных прерываний посреди обработчика весьма непросто

Простите конечно, но что-то вы либо недопонимаете либо бред пишете либо выссказываетесь неточно.

МК это не лошадь. Его руками и головой делали. Здесь нет полутеней и всё предельно чётко. А посему:
1) Прерывания в AVR - аналог одного уровня прерываний в x51. Пускай вас не вводит в заблуждение описание порядка обработки прерываний в AVR при одновременном поступлении прерываний. На самом деле данный порядок не имеет никакого значения и ничем не поможет разработчику. С другой стороны x51 также имеет какой-то порядок обработки, - это ежу понятно. Просто разработчики на нём не заморачивались (и абсолютно правильно так как это один уровень)
2) В x51 введён аппаратный контроллер уровней прерывания, что очень удобно и постоянно используется (в AVR, к сожалению это приходится делать вручную. Точно также это можно делать и в x51 - никто не мешает). Более того введение банков регистров (с переключением) это тоже сделано для поддержки работы с прерываниями. Что, в свою очередь, говорит об обдуманном подходе разработчиков к решению этого вопроса. Таким образом при входе в прерывание необходимо было лишь сохранить PSW и выбрать банк, а при выходе - восстановить PSW и выйти.
3) В одной из первых статей разработчики AVR писали что работают на расширенном контроллером прерываний с поддержкой приоритетов и что данный вопрос "очень сложный" (Хотя несколько непонятно почему). Это было ещё на заре появления семейства megaAVR. Очевидно что их разработка воплощена в семействе xmega, где введено 4 уровня и есть "карусельный" вариант внутри уровня. Совершенно очевидно, что это серьёзный шаг вперёд и по сравнению с AVR и по сравнению с x51. Указано также что появилась возможность "программного вызова", отсутствие которого тоже была крайне неприятным моментом.

Всё это говорит что разработчики также воспринимали эти моменты, как отрицательные и работали над их исправлением.

PS: Вот вам в догонку раскладка прерываний х51 внутри уровня (аналог уровней)

1. IE0 (highest)
2. TF0
3. IE1
4. TF1
5. RI + TI
6. TF2 + EXF2 (lowest)
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jul 7 2008, 12:17
Сообщение #6


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(SasaVitebsk @ Jul 7 2008, 15:27) *
В одной из первых статей разработчики AVR писали что работают на расширенном контроллером прерываний с поддержкой приоритетов и что данный вопрос "очень сложный" (Хотя несколько непонятно почему).

В AVR уже этого не будет. При большом количестве регистров (а здесь именно такой случай) затраты памяти и времени на "вход-выход" значительны. Даже выигрыш времени, получаемый от неожидания события, будет "скомпенсирован". biggrin.gif
А в основном (за редким исключением), проблемы приоритетов разрешимы, если не напрягать uC непомерными задачами.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- elecelec   ATMEL рекомендует ATmega32A и ATmega16A   Jul 1 2008, 16:49
- - Дон Амброзио   А в чём проблема-то? Озвучьте   Jul 1 2008, 18:02
- - Kuzmi4   2 elecelec - так а чего кипиш подымать ? Я что-то...   Jul 2 2008, 13:35
|- - defunct   Цитата(Kuzmi4 @ Jul 2 2008, 16:35) 2 elec...   Jul 2 2008, 15:28
|- - Дон Амброзио   Цитата(defunct @ Jul 2 2008, 19:28) А где...   Jul 2 2008, 15:54
- - IgorKossak   Сообщаю для непонятлвых. На форуме публикуются не ...   Jul 2 2008, 17:03
|- - Дон Амброзио   Цитата(IgorKossak @ Jul 2 2008, 21:03) Со...   Jul 2 2008, 17:09
|- - defunct   Цитата(Дон Амброзио @ Jul 2 2008, 20:09) ...   Jul 2 2008, 22:45
- - proba   кажется атмел переводит самые популярные аврки с 0...   Jul 2 2008, 20:21
- - Александр Куличок   ЦитатаЖаль частоту не подняли, хотя б до 20mHz... ...   Jul 2 2008, 22:57
|- - haker_fox   Цитата(Александр Куличок @ Jul 3 2008, 07...   Jul 3 2008, 07:51
|- - aaarrr   Цитата(haker_fox @ Jul 3 2008, 11:51) цел...   Jul 3 2008, 08:29
|- - ReAl   Цитата(haker_fox @ Jul 3 2008, 10:51) Все...   Jul 4 2008, 09:55
|- - Dog Pawlowa   Цитата(ReAl @ Jul 4 2008, 12:55) Это как ...   Jul 4 2008, 10:51
||- - defunct   Цитата(Dog Pawlowa @ Jul 4 2008, 13:51) У...   Jul 4 2008, 19:49
||- - ReAl   Цитата(defunct @ Jul 4 2008, 22:49) Справ...   Jul 5 2008, 07:02
|- - Andrew O. Shadoura   Цитата(ReAl @ Jul 4 2008, 12:55) Вот отсу...   Jul 5 2008, 13:49
|- - ReAl   Цитата(Andrew O. Shadoura @ Jul 5 2008, 16...   Jul 5 2008, 15:06
- - Kuzmi4   2 haker_fox - объясните пожалуста что вы имели вви...   Jul 3 2008, 08:27
|- - haker_fox   Цитата(Kuzmi4 @ Jul 3 2008, 17:27) 2 hake...   Jul 4 2008, 23:51
- - Александр Куличок   ЦитатаВсе таки кривизна в архитектуре есть... целы...   Jul 3 2008, 08:43
- - sensor_ua   похоже, старые JTAG ICE не подойдут - все на драко...   Jul 3 2008, 08:46
|- - MrYuran   Цитата(sensor_ua @ Jul 3 2008, 11:46) уси...   Jul 3 2008, 08:49
|- - defunct   Цитата(sensor_ua @ Jul 3 2008, 11:46) пох...   Jul 3 2008, 09:54
- - sensor_ua   ЦитатаА вроде бы всегда был.. разве нет? точно. н...   Jul 3 2008, 09:02
- - Александр Куличок   Цитатапохоже, старые JTAG ICE не подойдут - все на...   Jul 3 2008, 10:49
- - sensor_ua   ЦитатаА откуда такая информация? нехорошие предчу...   Jul 3 2008, 11:05
- - SasaVitebsk   Соглашусь полностью с последними двумя авторами. Н...   Jul 4 2008, 12:12
|- - ReAl   Цитата(ArtemKAD @ Jul 6 2008, 16:19) Силь...   Jul 6 2008, 19:27
||- - ArtemKAD   Цитата(ReAl @ Jul 6 2008, 22:27) "ес...   Jul 6 2008, 23:16
- - Rst7   На самом деле у вариантов исполнения стека данных ...   Jul 7 2008, 05:53
- - ArtemKAD   Цитата1) Прерывания в AVR - аналог одного уровня п...   Jul 8 2008, 07:53
- - SasaVitebsk   И что? Я что-то не пойму? Если оставить все прерыв...   Jul 8 2008, 17:51
- - ArtemKAD   ЦитатаЕсли делать полный аналог системы прерываний...   Jul 8 2008, 19:46
|- - SasaVitebsk   Цитата(ArtemKAD @ Jul 8 2008, 22:46) А ес...   Jul 9 2008, 20:00
|- - mse   Цитата(SasaVitebsk @ Jul 10 2008, 00:00) ...   Jul 10 2008, 13:09
|- - zltigo   Цитата(mse @ Jul 10 2008, 15:09) Можно по...   Jul 10 2008, 13:26
|- - SasaVitebsk   Цитата(mse @ Jul 10 2008, 16:09) Арифмети...   Jul 10 2008, 19:33
- - Rst7   ЦитатаТак что все отнюдь не однозначно Так давайт...   Jul 10 2008, 13:45
- - ArtemKAD   ЦитатаЯ надеюсь, вы не считаете что разработчики I...   Jul 10 2008, 19:39
- - SasaVitebsk   Цитата(ArtemKAD @ Jul 10 2008, 22:35) Так...   Jul 10 2008, 19:43
- - defunct   Цитата(ArtemKAD @ Jul 10 2008, 22:39) Цит...   Jul 10 2008, 20:21


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016