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

 
 
 
Reply to this topicStart new topic
> Глюк в новых 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
Dog Pawlowa
сообщение Jan 14 2010, 17:13
Сообщение #2


Гуру
******

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



Цитата(_Pasha @ Jan 14 2010, 20:07) *
Наблюдаю странный глюк в купленных недавно мегах 8.

"С компаратором не работал, но осуждаю " smile.gif
Смысл не подскажете - если в разряде единица, то добавить туда еще одну?

Глянул даташит, смысл стал понятнее, пардон.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 14 2010, 21:04
Сообщение #3


Гуру
******

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



Сначала выясните что происходит, а уже потом давайте оценку происходящему. "Глючит" и "плющит", как правило, программистов.
Нет никаких проблем с обнаружением "куда уходит" программа. Не составляет никакого труда вычислить переход на незадействованный вектор. Нетрудно также обнаружить точку проги, откуда производится такой переход.

Так в чём проблема?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 15 2010, 08:11
Сообщение #4


;
******

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



Цитата(SasaVitebsk @ Jan 15 2010, 01:04) *
Сначала выясните что происходит, а уже потом давайте оценку происходящему. "Глючит" и "плющит", как правило, программистов.

Если бы предположения о том, куда уходит программа, не подтвердились, я бы написАл. По поводу ACSR - это уже факт. Остается только узнать, как обстоит дело с камнями из других партий.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 16 2010, 20:22
Сообщение #5


Гуру
******

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



Цитата(_Pasha @ Jan 15 2010, 12:11) *
Если бы предположения о том, куда уходит программа, не подтвердились, я бы написАл. По поводу ACSR - это уже факт. Остается только узнать, как обстоит дело с камнями из других партий.

То есть OUT-ом всё работает, а SBI - нет? 07.gif Тогда я извиняюсь. Неразобрался.
Меги то есть, но на коленке трудно проверить, а девайса подходящего пока нет.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 17 2010, 07:34
Сообщение #6


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

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


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

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


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

Группа: Свой
Сообщений: 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
V_G
сообщение Jan 18 2010, 00:42
Сообщение #9


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

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



Но проблемы с RMW должны проявляться при записи в другие биты того же регистра. А если команда SBI единственная в обработке инфо от даннго регистра, то вроде как должно все работать у топикстартера.

Так что следует посмотреть, не проводятся ли с данным регистром другие операции класса RMW
Go to the top of the page
 
+Quote Post

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

 


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


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