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

 
 
> Глюк в новых Atmega8, Это любопытно.
_Pasha
сообщение Jan 14 2010, 16:07
Сообщение #1


;
******

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



Доброго времени!
Наблюдаю странный глюк в купленных недавно мегах 8. Старых камней нету - все горелые. Пожалуйста, если кому интересно, проверьте, не боян ли.

Исходные: глючит программа при read-modify-write к регистру компаратора. прерывания компаратора запрещены. Общие разрешены.
Код
void do_ACMP(void)
{
  if(ACSR &(1<<ACI))
  {
    // ACSR |= (1<<ACI); // так не работает
    ACSR = (1<<ACI); // пришлось объяснить по-русски, куда ему пойти
    // далее по тексту - к делу не относится.
  }
}


WinAVR, конечно же ACSR |= (1<<ACI) оптимизирует до sbi ACSR,ACI - и начались пляски. Предположительно, уходит в отсутствующий вектор прерывания, видать какие-то иголки на вход ACIE наводятся. Раньше, когда писАл на асме, никогда не пользовался битовыми инструкциями применительно к ACSR, поэтому не могу знать, как давно такое безобразие имеет место быть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Jan 17 2010, 07:34
Сообщение #2


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

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



Тю, странно. Вроде бы работал с компаратором на меге 8 и вроде бы проблем не было. Сначала странное показалось, потом вспомнил, что в ACSR этот ACI - единственный флаг, сбрасываемый единичкой и проблем с RMW-шностью SBI быть не должно.

Есть ATMEGA8L даты 0237, торчит в макетке для отладки avreal, все ноги свободны - всё равно что на каких ногах.
Могу залить прислнный hex, потыкать осциллографом в "Hello World!"-ножки и сказать, что было.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
V_G
сообщение Jan 17 2010, 10:34
Сообщение #3


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(ReAl @ Jan 17 2010, 17:34) *
в ACSR этот ACI - единственный флаг, сбрасываемый единичкой и проблем с RMW-шностью SBI быть не должно.

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

Сообщение отредактировал V_G - Jan 17 2010, 10:34
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 17 2010, 15:25
Сообщение #4


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

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



Цитата(V_G @ Jan 17 2010, 12:34) *
Наверное так, если бы это была внешняя нога порта. А как схемотехнически устроены эти внутренние регистры, я допустим, не знаю. Но следуя этой логике, все разряды внутренних регистров, сбрасываемые в 0 записью единицы, будут вести себя также.
Обязательно будут. Просто обязаны. У меги 8. У 88 - нет.
Я тоже не знаю, как они устроены "внутри", но я читал документацию на их "внешнее" поведение.
atmega8/atmega8L, документ от 10.2004, то же самое в atmega8A, документ от 07.2009
Раздел AVR memories / IO memory
Цитата
Some of the Status Flags are cleared by writing a logical one to them. Note that the CBI and SBI instructions will operate on all bits in the I/O Register, writing a one back into any flag read as set, thus clearing the flag.

А вот для mega48..168
Цитата
Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most other AVRs, the CBI and SBI instructions will only operate on the specified bit, and can therefore be used on registers containing such Status Flags.


Обсуждалось уже
http://electronix.ru/forum/index.php?s=&am...st&p=576439

Ещё где-то было раньше, там я про мегу64/128 писал, и ещё кто-то отзывался, мол, "мега128 устаревший кристалл, что уже про него вспоминать, его с производства снимут скоро".
Сняли. В пользу меги128А. Так что внимательность к документации на конкретный кристалл всё равно нужна.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 7th September 2025 - 00:40
Рейтинг@Mail.ru


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