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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> 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
Дон Амброзио
сообщение Jul 1 2008, 18:02
Сообщение #2


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



А в чём проблема-то? Озвучьте


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 2 2008, 13:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 elecelec - так а чего кипиш подымать ?

Я что-то не нашёл каких либо больших отличий в 16 и 16А кроме 30~40 % уменьшения жрачки...

К слову - вот 1281А - вроде частоту подняли до 32-х ( где то линк встречал ) - вот тут есть на что слюни попускать...
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 2 2008, 15:28
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Kuzmi4 @ Jul 2 2008, 16:35) *
2 elecelec - так а чего кипиш подымать ?

А где "кипиш"-то? Нам спокойно преподнесли инфу со ссылками на документы.
(Я например, узнал об этих новых чипах только из этой ветки).
За что большое спасибо!
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Jul 2 2008, 15:54
Сообщение #5


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(defunct @ Jul 2 2008, 19:28) *
А где "кипиш"-то? Нам спокойно преподнесли инфу со ссылками на документы.

А вопрос то где? Его автор так и не задал по-моему.

А если это реклама то зачем? Если бы меня интересовали новые чипы от Atmel, то чтобы мне помешало заглянуть на сайт производителя? Зачем здесь-то это писать?


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 2 2008, 17:03
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Сообщаю для непонятлвых.
На форуме публикуются не только вопросы, но и информация. Кому она не интересна, не обязаны реагировать.
Кстати, многие полезные новости узнаются именно здесь, избавляя пользователей от нудного, зачастую, серфинга.
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Jul 2 2008, 17:09
Сообщение #7


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(IgorKossak @ Jul 2 2008, 21:03) *
Сообщаю для непонятлвых.
На форуме публикуются не только вопросы, но и информация. Кому она не интересна, не обязаны реагировать.
Кстати, многие полезные новости узнаются именно здесь, избавляя пользователей от нудного, зачастую, серфинга.

А размещать сообщения так.. Для информации....Разрешено только избранным?

Помню когда я один раз разместил сообщение "для информации" меня сразу же забанили на месяц с формулировкой "за флуд"

Сообщение отредактировал Дон Амброзио - Jul 2 2008, 17:10


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
proba
сообщение Jul 2 2008, 20:21
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



кажется атмел переводит самые популярные аврки с 0.35um на =<0.25.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 2 2008, 22:45
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Дон Амброзио @ Jul 2 2008, 20:09) *
раз разместил сообщение "для информации"

Информация не по теме видать была?

Вообще-то запостить в спец форуме информацию о вышедшей новинке или новой тулзовине соответсвующей специфике форума это нормально и полезно, видел много таких веток и никого никогда не банили. Выходы новых версий AVR-Studio / WinAVR / IAR и проч. только по форуму и отслеживаю. Обсуждение само вокруг вырастает если появляется надобность.

Цитата(proba @ Jul 2 2008, 23:21) *
кажется атмел переводит самые популярные аврки с 0.35um на =<0.25.

Жаль частоту не подняли, хотя б до 20mHz...
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jul 2 2008, 22:57
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Жаль частоту не подняли, хотя б до 20mHz...

Жаль конечно, но по сравнению с mega16L/32L подняли-то в 2 раза!
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 3 2008, 07:51
Сообщение #11


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Александр Куличок @ Jul 3 2008, 07:57) *
Жаль конечно, но по сравнению с mega16L/32L подняли-то в 2 раза!

Все таки кривизна в архитектуре есть... целых 32 регистра, но полноценна только старшая половина...(
Хотя сейчас уже мало что изменишь, только частотой и можно выиграть, а в противном случае - потеря совместимости.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 3 2008, 08:27
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 haker_fox - объясните пожалуста что вы имели ввиду , а то я что-то не въехал...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 3 2008, 08:29
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(haker_fox @ Jul 3 2008, 11:51) *
целых 32 регистра, но полноценна только старшая половина...(

И чем Вам так невозможность работы с immediate в младших регистрах досадила, что аж архитектура кривой кажется?
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jul 3 2008, 08:43
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Все таки кривизна в архитектуре есть... целых 32 регистра, но полноценна только старшая половина...(

И ldd/std только +63, а не +/-32768 smile.gif
МНе, например, счетчика циклов микроконтроллерера не хватает(эдак, бит на 48+). но это уже периферия.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Jul 3 2008, 08:46
Сообщение #15


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



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

усилитель в АЦП впихнули...


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 3 2008, 08:49
Сообщение #16


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(sensor_ua @ Jul 3 2008, 11:46) *
усилитель в АЦП впихнули...

А вроде бы всегда был.. разве нет?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Jul 3 2008, 09:02
Сообщение #17


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
А вроде бы всегда был.. разве нет?

wink.gif точно. не заметил за столько летwink.gif


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 3 2008, 09:54
Сообщение #18


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(sensor_ua @ Jul 3 2008, 11:46) *
похоже, старые JTAG ICE не подойдут - все на дракошу - и нехорошо

Подозреваю, что это можно будет обойти. Выбрать в отладчике старый m16/32.
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jul 3 2008, 10:49
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
похоже, старые JTAG ICE не подойдут - все на дракошу - и нехорошо

А откуда такая информация?
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Jul 3 2008, 11:05
Сообщение #20


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
А откуда такая информация?


нехорошие предчувствия из отсутствия цифирек
Table 24-1. JTAG Version Numbers
ATmega16A revision TBD


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 4 2008, 09:55
Сообщение #21


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

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



Цитата(haker_fox @ Jul 3 2008, 10:51) *
Все таки кривизна в архитектуре есть... целых 32 регистра, но полноценна только старшая половина...(
Хотя сейчас уже мало что изменишь, только частотой и можно выиграть, а в противном случае - потеря совместимости.
Это как раз не самое противное.
Вот отсутствие хотя бы двух уровней приоритета прерывания (хотя бы как в MCS51) - это бяка.
Изначально плохо продуманное распределение SFR-регистров по адресам (например, TIFR & Co в битово-неадресуемой области, EEDR/ADCW/... в битово-адерсуемой) - бяка.
Неоднородное расположение регистров сходных узлов (одинаковых таймеров, UART), делающее невозможной естественную обработку одинаковой периферии через передачу указателя на начало блока регистров - начали исправлять в свежих кристаллах, но ... Ведь это не новинка, просто атмел где-то заснул. Что-то в духе horisontal windowing от MCS196 кто мешал сделать?

Кто не дал сделать запрет прерываний на одну следующую команду при обращении к SPH (для время загрузки SPL), я уже не говорю про такое для всех словных SFR? Места много не заняло бы, а удовольствия...
Причём это даже на совместимость не сильно влияет, можно было бы просто для новых кристаллов под условную компиляцию код упрощать.

На этом фоне несимметричность регистров не самое страшное.


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


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(ReAl @ Jul 4 2008, 12:55) *
Это как раз не самое противное.
...
На этом фоне несимметричность регистров не самое страшное.

У каждого свои претензии. Меня вот огорчает жесткая привязка функциональных выводов. Для того, чтобы использовать некоторые драйверы моторов с ШИМ, нужно внешнюю логику использовать, чтобы сигналы направления с ШИМ объединить.
Но это уже оффтопик, пожалуй smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 4 2008, 12:12
Сообщение #23


Гуру
******

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



Соглашусь полностью с последними двумя авторами. Но... в xmega все эти проблемы устранены уже.

Осталось только дождаться. smile.gif
Особенно радует наличие от 16 до 36 каналов ШИМ. Из стандартных камней только atmega640 подходит, но она дорога и избыточна для меня. Плюс корпус...
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 4 2008, 17:41
Сообщение #24


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

Группа: Свой
Сообщений: 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
Сообщение #25


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

Группа: Свой
Сообщений: 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
defunct
сообщение Jul 4 2008, 19:49
Сообщение #26


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Dog Pawlowa @ Jul 4 2008, 13:51) *
У каждого свои претензии.

Справедливости ради следует отметить, что все же претензий к чипам значительно меньше чем
к 51м и PIC'ам.
Балланс памяти (флеш, ОЗУ, eeprom), периферии, регистров и проч., прямая адресация всего ОЗУ, "TRUE" однотактовые порты, делает претензии к КПП, к урезанному банку регистров, к неполноценному SP мизерными. А больше претензий вроде бы как и нет.

Можно жить (хорошо жить) с одноуровневым КПП.
Можно жить без полноценного SP (на кой он нужен вообще (полноценный), если стек данных можно организовать самостоятельно.)
Можно жить и с 16-тью регистрами, можно и с 8-ю, кастрированный банк можно расценивать как бонус.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2008, 23:51
Сообщение #27


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Kuzmi4 @ Jul 3 2008, 17:27) *
2 haker_fox - объясните пожалуста что вы имели ввиду , а то я что-то не въехал...

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

Цитата(defunct @ Jul 5 2008, 04:49) *
Справедливости ради следует отметить, что все же претензий к чипам значительно меньше чем
к 51м и PIC'ам.

Что верно, то верно!
Для многих решений AVR самое то!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 5 2008, 07:02
Сообщение #28


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

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



Цитата(defunct @ Jul 4 2008, 22:49) *
Справедливости ради следует отметить, что все же претензий к чипам значительно меньше чем к 51м и PIC'ам.
Балланс памяти (флеш, ОЗУ, eeprom), периферии, регистров и проч., прямая адресация всего ОЗУ, "TRUE" однотактовые порты, делает претензии к КПП, к урезанному банку регистров, к неполноценному SP мизерными. А больше претензий вроде бы как и нет.
Несимметричные регистры меня как-то не сильно раздражают, особенно после появления lpm R,Z+. Иногда удручает "неполноценность" указательной пары X. Ну а если бы ещё и пара R25:R24 (W) указательной была, так и вообще прекрасно было бы wink.gif, причём если выбирать что-то одно, то даже тяжело так навскидку сказать - лучше было бы иметь пару W такой же "неполноценной" как X, или пусть лучше W не будет указательной, зато X получит адресацию со смещением.
Отсутствие ldi/andi/.. у младших 16 регистров - последнее, на что обратил бы внимание.
А вот хотя бы два приоритета прерываний, пусть даже хотя бы в относительно крупных кристаллах (т.е., где оно нужнее, где самих прерываний больше, ну, например, во всех мегах) - сильно кристалл не раздули бы. Как и запрет прерываний на одну команду при обращении к соответствующим половинкам словных регистров (включая "большой" SP) - опять таки, чем больше кристалл, тем это нужнее. А места заняло бы ну точно меньше, чем умножитель, который в мегах же есть.
Я не говорю, что без этого кристалл никудышним стал :-)
Но жаль, что они об этом не подумали.

Цитата(defunct @ Jul 4 2008, 22:49) *
Можно жить (хорошо жить) ....
Ну так живу же smile.gif 10 лет уже. С 51-ых как раз и перешёл. ПИК16 как-то не пропёрли. Попробовал pic16c64 (заказчик даже пикстарт какой-то покупал, я пару своих pic16c64, зашитых пикстартом в комплекте с дискеткой "что именно зашито" отдавал на Квазар-Микро на растерзание, чтобы они в свой программатор "Унипрог" добавили) и pic16f84 после чего с радостью встретил 90s8515 и 90s4433.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Andrew O. Shadou...
сообщение Jul 5 2008, 13:49
Сообщение #29


Участник
*

Группа: Свой
Сообщений: 37
Регистрация: 13-05-07
Из: Minsk, Belarus
Пользователь №: 27 694



Цитата(ReAl @ Jul 4 2008, 12:55) *
Вот отсутствие хотя бы двух уровней приоритета прерывания (хотя бы как в MCS51) - это бяка.
Как ни странно, в аврах приоритетов гораздо больше, чем 2…
Цитата
Изначально плохо продуманное распределение SFR-регистров по адресам (например, TIFR & Co в битово-неадресуемой области, EEDR/ADCW/... в битово-адерсуемой) - бяка.
Для EEPROM и ADC битовость наоборот более удобна, ибо позволяет производить проверку завершения операции одной командой.

--
WBR, Andrew
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 5 2008, 15:06
Сообщение #30


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

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



Цитата(Andrew O. Shadoura @ Jul 5 2008, 16:49) *
Как ни странно, в аврах приоритетов гораздо больше, чем 2…
Прошу прощения, а Вы хоть поняли, о чём я? Мой ответ ArtemKAD выше читали? Как вообще устроена система прерываний хотя бы у MCS51 знаете?
Ещё раз медленно:
Да, у AVR все запросы прерываний выстроены в цепочку, запрос от того устройства, которое расположено дальше от ядра, маскируется тем, которое стоит ближе. Ну без такой цепочки в той или иной форме просто нельзя, надо же как-то выбрать того, кто сейчас будет обслуживаться.
В некотором смысле это можно называть "приоритетами". Но работают такие "приоритеты" только в случае одновремённого анализа этих прерываний, т.е. при строго одновремённом их возникновении либо при их возникновении в любом порядке во время запрещённых прерываний. Если же уже начал работать обработчик, к примеру, SPI, то не имеет никакого значения факт "наиприоритетности" INT0 - оно не прервёт "менее приоритетный" обработчик SPI до тех пор, пока в том не будет выполнена команда SEI. Но сразу после неё резко так обработчик EE_RDY тоже сможет прервать обработчик SPI - т.е. коту под хвост пошло теперь уже то, что обработчик SPI якобы приоритетнее EE_RDY.
Конечно, можно поизвращаться и при входе в обработчик SPI сохранить состояние разрешения прерывания EE_RDY, запретить его, потом сделать SEI, порабтать, (по вкусу - выполнить CLI) и восстановить состояние разрешения EE_RDY. Именно о таком спочобе эмуляции приоритетной системы прерываний писал ArtemKAD. Но это только программная эмуляция того, что у других бывает аппаратно.
В том же MCS51 имеется две или четыре таких цепочки, которая у AVR одна. И битиками можно перемещать запросы между цепочками, не меняя порядка. У цепочек есть свои приоритеты. Запрос из более приоритетной цепочки может прервать уже работающий обработчик из всех менее приоритетных цепочек. Запрос из менее приоритетной цепочки будет ждать, пока не закончатся все обработчики из его и более приоритетных цепочек.
В этом случае, например, можно прерывание от аналогового компаратора переместить в самую приоритетную цепочку и сработка компаратора сразу же вызовет его обработчик - без ожидания, пока
работающий уже в данный момент обработчик какого-нибудь таймера расщедрится на сохранение контекста, для прерываний от UART да ADC сохранит состояния и запретит их, разрешит глобальные прерывания.
В ещё более продвинутом случае у процессора в статусе может быть несколько битов, задающих "приоритет процессора". Только запросы из более приоритетных цепочек могут прервать данный участок кода, остальные подождут.

Да, без этого можно жить. Можно стараться обработчики прерываний делать покороче, чторбы задержка в них не была существенной, можно, как это часто обсуждается, в нужных обработчиках запрещать "менее приоритетные" и после этого разрешать прерывания - но сама частота подобных обсуждений говорит о том, что систему прерываний AVR можно было бы поправить хотя бы в духе MCS51 - это не так дорого стоит, гораздо дешевле умножителя. Без которого тоже можно жить smile.gif

Цитата(Andrew O. Shadoura @ Jul 5 2008, 16:49) *
Для EEPROM и ADC битовость наоборот более удобна, ибо позволяет производить проверку завершения операции одной командой.
Товарищ А.Накойхер интересуется - зачем для "проверки завершения операции одной командой" в битово-адресуемой области находятся регистры EEARH, EEARL, EEDR, ADCH, ADCL ? И за компанию с ними UBRR, UDR, SPDR, TWDR, TWAR ?
Господин К.А.Кого-Фига также интересуется - а не лучше ли было бы вместо них в битово-адресуемую область опустить регистры TIFR, TIMSK, GICR, GIFR, а у кого и тот же TWCR (это вообще 5 баллов - у меги8 TWDR "внизу", TWCR "вверху" !!!).

Я где-то выше сказал хоть слово про то, надо было переместить "вверх" регистры EECR, ADCSR ?

Да, в свежих AVR это дело потихоньку поправили, но изначально был такой ляп...


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


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

Группа: Свой
Сообщений: 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
ReAl
сообщение Jul 6 2008, 19:27
Сообщение #32


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

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



Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Сильно теоретически можно. Мешает та самая приоритетная система прерываний с правилом "прервать текущее прерывание может только более приоритетное". Нельзя прервать даже прерыванием того-же уровня.
"если нельзя, но очень хочется, то можно".

Код
prog    segment    code
stack    segment    idata

    rseg  stack
    ds    10H

    cseg  at 0
    jmp start
    jmp IE0_vect
    
    org    1BH
    jmp TF1_vect

    rseg  prog
start:
    mov    SP,#stack-1
    mov    TMOD, #03H
    mov    TCON, #43H
    mov    IE, #89H
    setb    PT1
    sjmp $
    
TF1_vect:
    setb    P1.0
    setb    P3.2
    clr    P3.2; передёрнули INT0
    acall L_reti; очистка логики прерываний - теперь как после SEI у AVR
    nop
    nop
    nop
    clr    P1.0
L_reti:
    reti

IE0_vect:
    setb    P1.1
    clr    P1.1
    reti
    
    end

У меня таким образом прерывание от таймера с периодом 256 циклов процессора прерывало само себя - оно обычно быстренько всё делало, но раз в N входов работало долго, вместе с обычной работой - больше 256 циклов. Ну так входило, опять делало быструю часть и возвращалось в длинную, оттуда - в основную программу.

Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
А вообще - в любом длинном прерывании чаще всего есть критическая секция которую надо сделать "как можно шустрей" и "все остальное", которое уже можно обрабатывать при разрешенных прерываниях.
Ну так и делаю. Просто у AVR можно *только* так. А у MCS51 - не только. И я пользовался тем, что можно и так, и эдак, и смесь. Чаще всего я на "двухуровневых" MCS51 таким образом эмулировал третий уровень, на "четырёхуровневых" хватало имеющихся уровней и только несколько раз делал acall L_reti, чтобы прерывание могло прервать свою же длинную часть (ну и другие чтобы не ждали аж так долго).
Но всё равно я на AVR перешёл smile.gif, по сумме баллов.

Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Ну, это к создателям GCC... Если им лень было учитывать особенности платформы и они предпочли сделать "как в х86", то кто им лекарь. А особенность заключается в том, что X и Y позволяют сделать честный стеки данных, а не играться со стековым кадром на стеке возвратов.
Лень - не лень, но странно выходит. Разработчиков AVR Вы защищаете, а у разработчиков AVR-GCC право иметь какие-то свои соображения отбираете.
Зато в тех функциях, в которых стековый кадр не нужен - у них Y вообще свободен для использования. А основной проигрыш IAR-у в размере кода у них отнюдь не на том, что нужно модифицировать SP, если у функции есть локальные переменные на стеке.

Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Обычно переключателю задач не атомарность SP до лампочки. Переключение задач обычно делают уже в прерывании т.е. при запрещенных операциях со стеком.
Да, это я увлёкся smile.gif

Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Не работай с регистрами таймеров в основном цикле программы (не самое удачное решение), не будет тебе этой "проблемы". wink.gif
Точнее "только в обработчиках прерываний до SEI" ?
Ну, случаи бывают всякие.

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

Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Приведу пример на примере обычного декрементирующего таймера. После возникновения этого прерывания необходимо как можно скорее установить новое значение счетчика (т.е. вроде как наивысший приоритет), а затем выполнить кучу работы которая накопилась за время между срабатываниями (пару десятков мс) и эта обработка не срочная и может занять несколько мс (т.е. надо разрешить остальные прерывания). Вот и попробуй выбрать че больше не нравится при использовании х51-й системы прерываний.
Ну так не просто пробовал - отлично работало.


Цитата(ArtemKAD @ Jul 6 2008, 16:19) *
Зачем? Просто ставь пораньше SEI если не нужна дальше непрерывность кода. А "наименее приоритетные" вообще начинай с этой команды...
Да так и делаю. Просто если вообще все прерывания уже разрешены, то это как бы "уровень подпрограммы завершения", между прерываниями и основным кодом smile.gif, "обработчик как можно короче" читать как "критическую часть как можно короче, после чего перейти на уровень приоритета основной программы".


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


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

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



Цитата(ReAl @ Jul 6 2008, 22:27) *
"если нельзя, но очень хочется, то можно".

Код
    acall L_reti; очистка логики прерываний - теперь как после SEI у AVR
...........
L_reti:
    reti

smile.gif Оригинально, оценил.
Цитата
Лень - не лень, но странно выходит. Разработчиков AVR Вы защищаете, а у разработчиков AVR-GCC право иметь какие-то свои соображения отбираете.

У разработчиков компилятора возможностей максимально оптимизировать код под возможности платформы гораздо больше, чем у разработчиков камня (!)общего применения(!) оптимизировать систему фич, что-бы всех удовлетворило. Вот что-то типа твоего acall -> reti можно использовать для сброса текущего приоритета прерываний не смотря на то, что разработчиками камня такой фичи аппаратно не предусмотрено.
А тут разработчики камня выкручивались обеспечивая очень мощную фичу на спец.регистр (Y), а его используют просто как регистр общего применения.
Цитата
"обработчик как можно короче" читать как "критическую часть как можно короче, после чего перейти на уровень приоритета основной программы".

Угу...
ЗЫ. Кстати, посмотрел я реализацию контроллера прерываний в ПЛИС - не сказал бы, что он проще умножителя 8х8. А если еще поставить условие принятия решения за 1 цикл, да еще и как в х51 - он получается однозначно сложнее.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 7 2008, 05:53
Сообщение #34


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



На самом деле у вариантов исполнения стека данных в GCC и в IAR есть и положительные, и отрицательные стороны.

Решение с отдельными стеками данных и возвратов, кстати, не только на AVR применяется (и не только IAR'овское это изобретение). Для расширения кругозора рекомендую посмотреть на C166. Там тоже отдельный SP, а для указателя стека данных используется R0. И компилятор не IAR wink.gif.

А еще в C166 есть супер-полезная комманда atomic #n, которая запрещает прерывания на время выполнения следующих n инструкций. Очень и очень удобно для всяких семафоров, многословной периферии и прочего.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 7 2008, 11:27
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #36


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

Группа: Свой
Сообщений: 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
ArtemKAD
сообщение Jul 8 2008, 07:53
Сообщение #37


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

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



Цитата
1) Прерывания в AVR - аналог одного уровня прерываний в x51.

Не совсем аналог. Еще проще. AVR это аналог x51 вообще без единого уровня, но с автоматически взводимым флагом глобального запрета прерываний при вызове прерывания. С уровнями у x51 сложнее - при вызове прерывания определенного уровня МК запоминает текущий уровень и блокирует прерывания этого уровня и ниже. Т.е. для разрешения всех прерываний в прерывании надо не один такт как в AVR, а 4 цикла (на классике - почти 50 тактов).
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 8 2008, 17:51
Сообщение #38


Гуру
******

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



И что? Я что-то не пойму?
Если оставить все прерывания одним уровнем - и вот вам AVR. По этому показателю AVR как раз менее удобна. Если делать полный аналог системы прерываний x51 на AVR, то затраты будут куда как более серьёзные.

Спасает только то, что для МК как правило достаточно одного высокоприоритетного прерывания, что можно путём SEI сделать. Но так бывает отнюдь не всегда.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 8 2008, 19:46
Сообщение #39


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

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



Цитата
Если делать полный аналог системы прерываний x51 на AVR, то затраты будут куда как более серьёзные.

А если делать полный аналог системы команд x51 на AVR, то затраты будут еще больше.
ЗЫ. А зачем делать "полный аналог"?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 9 2008, 20:00
Сообщение #40


Гуру
******

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



Цитата(ArtemKAD @ Jul 8 2008, 22:46) *
А если делать полный аналог системы команд x51 на AVR, то затраты будут еще больше.

Затраты будут небольшие. Тут уже упоминалось, что я, и как оказалось, не только я выполнял такую работу при переходе с камня на камень. При этом просто тупо переписывал ASM операторы. И всё сразу заработало. Система команд AVR мощнее и удобнее чем x51.
Цитата
ЗЫ. А зачем делать "полный аналог"?

Я надеюсь, вы не считаете что разработчики Intel, просто тупы и не знали что творили? При этом архитектура x51 и по сей день (по-моему) лидирует в области восьмибитников. Что указывает на её удачность. Кроме того, косвенно, на удачность системы прерываний указывает система прерываний xmega, которая заимствует и расширяет принципы системы прерываний x51. Впрочем, это общепринятые подходы к уровням прерываний.

А, собственно, в чем прерывания AVR вы считаете лучше чем x51? Что такого можно сделать на AVR, чего нельзя на x51? Или удобнее на AVR чем на x51?
Go to the top of the page
 
+Quote Post
mse
сообщение Jul 10 2008, 13:09
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(SasaVitebsk @ Jul 10 2008, 00:00) *
...Что такого можно сделать на AVR, чего нельзя на x51? Или удобнее на AVR чем на x51?

Арифметика. ;О) Можно подобрать условия, что 51 физически не сможет чего-то посчитать в отведённое время. А АВР - лехко. ;О) Или речь о прерываниях?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 10 2008, 13:26
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(mse @ Jul 10 2008, 15:09) *
Можно подобрать условия, что 51 физически не сможет чего-то посчитать в отведённое время. А АВР - лехко. ;О)

Мускулистые 51 это 100MIPS, есть и 251. Так что все отнюдь не однозначно, даже если говорить не только "о прерываниях".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 10 2008, 13:45
Сообщение #43


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Так что все отнюдь не однозначно


Так давайте мой JPEG-кодер для 51го соберем. И поглядим smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 10 2008, 19:33
Сообщение #44


Гуру
******

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



Цитата(mse @ Jul 10 2008, 16:09) *
Арифметика. ;О) Можно подобрать условия, что 51 физически не сможет чего-то посчитать в отведённое время. А АВР - лехко. ;О) Или речь о прерываниях?

Блин. Да я только о прерываниях. Я же не в целом о камне.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 10 2008, 19:39
Сообщение #45


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

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



Цитата
Я надеюсь, вы не считаете что разработчики Intel, просто тупы и не знали что творили?

Это намек на то, что разработчики Atmel просто тупы и не знали что творили? wink.gif
Цитата
Кроме того, косвенно, на удачность системы прерываний указывает система прерываний xmega, которая заимствует и расширяет принципы системы прерываний x51.

xMega слегка крупнее остальных AVR, что предъявляет к ней новые требования (задачи становятся объемнее, прерывания усложняються). Вы же не считаете, что к примеру в 8-битнике класса AVR и х51 должны быть средства реализации вытесняющей многозадачности (а-ля Intel x386). Вы вполне понимаете, что "за удовольствие придется заплатить". AVR упростила систему прерываний, а в замен дала очень функциональные таймера - на каждый по 2-3 прерывания, а не только одно переполнение как в х51.
Так стоит ли повторять систему прерываний x51? Существующая в AVR Вам сильно не нравится (не дает работать)?
Цитата
А, собственно, в чем прерывания AVR вы считаете лучше чем x51?

Почти ничем. Но тем не менее их почти всегда хватает. Так стоит ли их для этого класса МК расширять?

Сообщение отредактировал ArtemKAD - Jul 10 2008, 19:40
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 10 2008, 19:43
Сообщение #46


Гуру
******

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



Цитата(ArtemKAD @ Jul 10 2008, 22:35) *
Так стоит ли повторять систему прерываний x51? Она Вам сильно не нравится (не дает работать)?

Если бы Атмеловцы создали в целом неудачный камень, или переферия была бы неудачна, то я бы не переходил на AVR. Поскольку я здесь, то ответ очевиден. Но это совершенно не значит, что им некуда двигаться. Я просто отметил, что система прерываний слишком уж упрощена. Это не значит, что ей невозможно пользоваться, но это значит, что с более мощной системой прерываний удобнее работать. И в целом я доволен, что в xmega устранили данный недочёт.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 10 2008, 20:21
Сообщение #47


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ArtemKAD @ Jul 10 2008, 22:39) *
Цитата
А, собственно, в чем прерывания AVR вы считаете лучше чем x51?

Почти ничем. Но тем не менее их почти всегда хватает. Так стоит ли их для этого класса МК расширять?

Все равно что на вопрос чем периферия 80C51 (напомню, из периферии там всего два таймера, один из которых используется для тактирования UART'a и собсно UART способный дать максимум 57600 на 11.0592 если тактироваться от таймера smile.gif ) лучше периферии ATMega16, сказать - почти ничем.

Надо все-таки смотреть правде в глаза, по сравнению с m16 в 80C51 вообще нет периферии.

Так и с КПП. Я конечно высказался, что доволен AVR'ом и его КПП. Но раз уж пошла такая петрушка.
КПП AVR не почти ничем не лучше КПП x51, а совсем ничем. Более того он хуже - в нем всего один уровень приоритета, это же очевидно. Но это не делает его неполноценным - им можно пользоваться и с ним можно прекрасно жить.


Самый простой и наглядный пример того когда может понадобиться 2 уровня приоритетов - это если в системе есть DRAM с программным контроллером. Регенерацию DRAM нельзя отложить иначе - капец всей системе. Вот тут второй уровень приоритета как нельзя кстати - т.к. позволяет без раздумий прервать все что можно и регенерировать память во-время.
Go to the top of the page
 
+Quote Post

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

 


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


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