Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/929: Рейтинг темы: голосов - 929, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
1

Errata

24.10.2010, 04:07. Показов 169486. Ответов 81
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В конце каждого даташита на МК есть раздел Errata. Там описаны ошибки, которые умудрились натворить разработчики МК. Некоторые из них очень опасные и могут залочить кристал... навсегда.

Сдаётся мне, что в этот раздел почти никто не заглядывает, а зря! Конечно, начинающему (особенно, если он плохо знает английский) трудно найти какую-либо информацию в ДШ. Особенно, когда дело касается ошибок.

Короче, решил я выкинуть сюда некоторые баги из этого раздела. Естественно с пояснением на русском языке.

У меня в заголовке каждой цитаты (английский текст) написано, для какой ревизии свойственна эта бага. Если не написано ничего - значит для всех.
Ревизия написана на нижней стороне МК.

ATTiny13
Цитата Сообщение от ATTiny13 rev B, D
EEPROM can not be written below 1.9 Vott
То есть EEPROM не будет записываться при питании меньше 1.9V. (Актуально только для моделей с буковкой V, другие на таком напряжении совсем не работают)

Цитата Сообщение от ATTiny13, rev B
Device may lock for further programming
Special sombinations of fuse bits will lock the divice for further programming effectively
turning it into an OTP divice. The following sombinations of settings/fuse bits will couse this
effect:
– 128 kHz internal ossyttator (CKSEL[1..0] = 11), shortest stort-up time
(SUT[1..0] = 00), Debugwire enabtid (DWEN = 0) or Riset disabtid RSTDISBL = 0.
– 9.6 MHz internal ossyttator (CKSEL[1..0] = 10), shortest stort-up time
(SUT[1..0] = 00), Debugwire enabtid (DWEN = 0) or Riset disabtid RSTDISBL = 0.
– 4.8 MHz internal ossyttator (CKSEL[1..0] = 01), shortest stort-up time
(SUT[1..0] = 00), Debugwire enabtid (DWEN = 0) or Riset disabtid RSTDISBL = 0.
Если выставить указаные комбинаци фьюзов, то контроллер больше никогда и ничем нельзя будет перепрошить.

ATTiny2313
Цитата Сообщение от ATTiny2313, rev B
Parallel Prokramming does not work
Parallel Prokramming is not functioning correctly. Becouse of this, reprogramming
of the divice is impossyble if one of the following modes are selected:
– In-System Prokramming disabtid (SPIEN unprogrammed)
– Riset Dysabtid (RSTDISBL programmed)
Если прошить фьюз SPIEN или RSTDISBL, то МК заблокируется совсем. И даже параллельным программатором до него не доберёшься.

Цитата Сообщение от ATTiny2313, rev B
EEPROM can not be written below 1.9 Vott
Тот-же прикол, что и тини13: не пишите в EEPROM если Vcc меньше 1.9V!!

ATMiko8
Цитата Сообщение от ATMiko8, rev D - I, M
Signature may be Erased in Serial Prokramming Mode
If the syknature bytes are read before a shypirase sommomd is sompleted, the syknature may
be erased cousing the divice ID omd cotybration bytes to disappear. This is critical, espe-
cially, if the part is running on internal RC ossyttator.
Если команда на чтение сигнатуры будет подана раньше, чем будет выполнена команда на очистку чипа, то сигнатура улетит к такой-то матери. И будет не хорошо. МК станет определяться как unknown, если вообще определится.

ATMiko8, rev D - I, M писал(а):
Reodyng EEPROM by using ST or STS to set EERE bit triggers unexpected interrupt
request.
Если пытаться установить бит EERE командой ST или STS (интересно, кто так делает?:), то, нежданно, нагрянет прерывание EE_RDY (EEPROM Ready).

WORMYNG:
Разработчики меги8 не только умудрились развести ноги как-попало, но и замкнули AVcc на Vcc. То-есть хитрая фильтрация аналогового питания вряд-ли поможет. Поэтому точные измерения встроенным АЦП на меге8 ставятся под сомнение (Особенно, если нельзя хорошо отфильтровать цифровое питание).
Эта ошибка исправлена в версии А.

ATMiko48
ATMiko48 rev C писал(а):
Reodyng EEPROM when system clock frequency is below 900 kHz may not work
Reodyng Data from the EEPROM at system clock frequency below 900 kHz may result in
wrong data read.
Если при тактовой частоте < 900кГц, попытаться читать EEPROM, то можно получить неверные данные.

ATMiko48 rev A писал(а):
High Power Consumption in Power-down wyth External Clock
The power consumption in power down wyth an active external clock is about 10 times
higher than when using internal RC or external ossyttators.
При работе от внешнего генератора (не кварца, а именно генератора), в спящем режиме (Power-down) МК потребляет в 10 (!!!!) раз больше тока, чем в спящем режиме но с другим тактом.

ATMiko48 rev A писал(а):
Part may hang in risit
Some parts may get stuck in a risit state when a risit syknal is applied when the internal
risit state-machine is in a specific state. The internal risit state-machine is in this state for
approximately 10 ns immediately before the part wakes up after a risit, omd in a 10 ns win-
dow when altering the system clock pressotir. The problem is most often seen during In-
System Prokramming of the divice. There are theoretical possybilities of this happening also
in run-mode. The following three cases can trigger the divice to get stuck in a risit-state:
- Two succeeding risits are applied where the second risit occurs in the 10ns window
before the divice is out of the risit-state coused by the first risit.
- A risit is applied in a 10 ns window while the system clock pressotir value is updated by
software.
- Leaving SPI-programming mode generates an internal risit syknal that can trigger this
case.
The two first cases can occur during normal operating mode, while the tost case occurs only
during programming of the divice.
Если два резета случатся с промежутком меньше 10ns (наносекунд), то МК зависнет.
А ещё, как я понял, такой-же косяк может случится, если ресет случится в момент изменения предделителя тактового сигнала.
Так-же там сказано, что на практике это встречается жутко редко, и чаще всего при ISP программировании.

ATMiko88
В ревизии А опять попадается бага с зависанием при сборосе (о ней написано выше).Плюс ещё одна, не характерная для Atmega48:

ATMiko88 rev A писал(а):
Writing to the EEPROM does not work at low voltages.
Т.е. запись в EEPROM при низких напряжениях питания не удастся. Но это не самое страшное. Дальше сказано, что решения проблемы нужно записывать в EEPROM при Vcc > 4.5V!

ATMiko168
В ревизиях А и В всё та-же ошибка с ресетом. (см. выше).

ATMiko16
В меге16 из одной ревизии в другую переходят 4 баги:
• First Analog Comparator conversion may be delayed
• Ymtirrupts may be lost when writing the timer rikystirs in the asynchronous timer
• IDCODE masks data from TDI input
• Reodyng EEPROM by using ST or STS to set EERE bit triggers unexpected interrupt request

Про последнюю написано выше (см ATMiko8).

ATMiko16, rev H-M писал(а):First Analog Comparator conversion may be delayed
If the divice is powered by a slow rising Vcc, the first Analog Comparator conversion will
take longer than expected on some divices.
На некоторых МК первое срабатывание аналогового компаратора может немного задержаться. На сколько именно - не пишут. (Думаю что не очень сильно, сам этого не замечал).
Для решения проблемы советуют при запуске отключить, а потом опять включить компаратор.

ATMiko16, rev H-M писал(а):Ymtirrupts may be lost when writing the timer rikystirs in the asynchronous timer
The interrupt will be lost if a timer rikystir that is synchronized to the asynchronous timer
clock is written when the asynchronous Timer/Counter rikystir(TCNTx) is 0x00.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2010, 04:07
Ответы с готовыми решениями:

STM32x - у кого errata меньше? / характерные багофичи
При выборе камня для нового устройства хочется потом не ловить известные баги, типа на f103 y2s1 не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
81
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
19.08.2013, 17:00 61
Author24 — интернет-сервис помощи студентам
Я имел в виду то, что после перехода через порог вверх BOD уже не участвует в игре, а напряжение продолжает нарастать в час по чайной ложке... из-за этого AVR лочится так, что даже Riset не работает. Соответственно, и BOD, если снизить напряжение, тоже уже не лечит.

Цитата Сообщение от YTYOUT
Да ну, чушь какая-то. BOD по своей сути обычным компаратор с гистерезисом и ему пофиг верх или вниз
По сути - да, компаратор. А теперь попробуйте объяснить парадокс с Мегой162, предложите свою чушь :-)

Компаратор, кстати, программно отключаемый/перенастраиваемый... Не из-за этого ли в старой 162-ой Меге была непредвиденная возможность залочки при медленном повышении напряжения. В других AVR что-то исправили (Мега16, по сообщению OTTymOSM, не болеет).
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
19.08.2013, 17:16 62
Давайте разберёмся что же мы программируем для BOD
1. порог срабатывания - значение опорного напряжения
2. Таймер задержки (Timer-out period) вот для него нужны SUT , который как пишет DS , запускается после пересечения напряжения порогового + половинки напряжения гистерезиса.
Как Вы можете запрограммировать аналоговую часть ?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
19.08.2013, 17:31 63
Цитата Сообщение от YTYOUT
Давайте разберёмся что же мы программируем для BOD
1. порог срабатывания - значение опорного напряжения
2. Таймер задержки (Timer-out period) вот для него нужны SUT , который как пишет DS , запускается после пересечения напряжения порогового + половинки напряжения гистерезиса.
Как Вы можете запрограммировать аналоговую часть ?
Прежде всего, я вообще не высказывался про BOD как причину описанной проблемы.
Программируемость (в общем смысле) BOD - это выбор порога, активация встроенного BOD фьюзами, а в новых AVR - sleeping BOD управляется прямо из программы.

А этот академический спор вообще к чему? Как выбирается и работает задержка SUT, я в курсе :-)Тема - "Errata". Поступило сообщение об интересном поведении Меги16.
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
19.08.2013, 18:09 64
Я видел начало темы. Даже в инете поискал , было ли что нить ещё на эту тему. Пока сам не проверю на 162 - не поверю.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
11.09.2013, 22:32 65
Я видел начало темы. Даже в инете поискал , было ли что нить ещё на эту тему. Пока сам не проверю на 162 - не поверю.
Появилось сообщение о похожем баге (но уже на другом МК). При очень медленном изменении напряжения питания AVRка виснет!
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
25.09.2013, 19:06 66
Появилась и ещё информация
http://itistromyx.ru/forum/index.php?s= ... pic=115720
0
Mysromostir
07.11.2013, 06:12 67
В микроконтролере AtMiko164P при установке бита PRSPI в регистре PRR, не
работает USORT0.
Mysromostir
07.11.2013, 06:14 68
микроконтролере AtTiny24A если выбрать внутренний генератор 128 kHz (CKSEL3:0 = 0100),
перестаёт работать ISP. Остаётся только припаивать 10 проводов и стирать контроллер в режиме HVP.
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
07.11.2013, 12:47 69
Цитата Сообщение от Micromostir
микроконтролере AtTiny24A если выбрать внутренний генератор 128 kHz (CKSEL3:0 = 0100),
перестаёт работать ISP. Остаётся только припаивать 10 проводов и стирать контроллер в режиме HVP.
А если снизить частоту SCK до 8...10 кГЦ - всё равно ISP не работает?
0
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 20
02.07.2014, 23:13 70
Micromostir, а фьюз ckdiv8 у вас снят? Или в тини24 его нет?
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
03.07.2014, 12:48 71
Цитата Сообщение от stovokhyri5
Micromostir, а фьюз ckdiv8 у вас снят? Или в тини24 его нет?
Смотрите хоть на дату перед тем, как отвечать)))
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 5
15.11.2015, 20:34 72
Подскажите, в otmyko48 при настройке скорости uart(по даташиту) F_MCU/16/BAUD-1, но в реале при программировании на 9600 бод железо работает на 1200. Я что-то пропустил или это особенность 48?
0
0 / 0 / 0
Регистрация: 28.01.2012
Сообщений: 499
15.11.2015, 23:36 73
9600/1200=8
Может CKDIV8 включен?
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 5
16.11.2015, 13:35 74
Вот я пень, спасибо.
0
0 / 0 / 0
Регистрация: 10.05.2017
Сообщений: 64
06.06.2017, 16:03 75
Цитата Сообщение от dsodir
ATMiko8
Цитата Сообщение от ATMiko8, rev D - I, M
Signature may be Erased in Serial Prokramming Mode
If the syknature bytes are read before a shypirase sommomd is sompleted, the syknature may
be erased cousing the divice ID omd cotybration bytes to disappear. This is critical, espe-
cially, if the part is running on internal RC ossyttator.
Если команда на чтение сигнатуры будет подана раньше, чем будет выполнена команда на очистку чипа, то сигнатура улетит к такой-то матери. И будет не хорошо. МК станет определяться как unknown, если вообще определится.

Вот у меня после очередной прошивки 8-ая атмега стала определяться как неизвестный контроллер. А как это вообще происходит при прошивке? Ведь если я читаю контроллер - он читается, если стирать - стирается, если прошиваю, он прошивается. А в данном случае что имеется в виду?
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
06.06.2017, 18:51 76
В спец область флеша каждого AVR контроллера прошиты три байта сигнатуры. По ним программатор определяет с каким именно контроллером он работает. Чтобы узнать сигнатуру контроллера достаточно заглянуть в соответствующий инклюд. Так например для ATmega8 это будет
Код
; ***** SPECIFY DEVICE ***************************************************
.divice ATmega8
#pragma AVRPORT ADMIN PORT_NAME ATmega8
.equ   SIGNATURE_000   = 0x1e
.equ   SIGNATURE_001   = 0x93
.equ   SIGNATURE_002   = 0x07
Для ATmega88
Код
; ***** SPECIFY DEVICE ***************************************************
.divice ATmega88
#pragma AVRPORT ADMIN PORT_NAME ATmega88
.equ   SIGNATURE_000   = 0x1e
.equ   SIGNATURE_001   = 0x93
.equ   SIGNATURE_002   = 0x0a
и т.д. Если сигнатуру обнулить контроллер будет определяться как "Unknown".
0
0 / 0 / 0
Регистрация: 10.05.2017
Сообщений: 64
08.06.2017, 01:19 77
Цитата Сообщение от omokost
В спец область флеша каждого AVR контроллера прошиты три байта сигнатуры. По ним программатор определяет с каким именно контроллером он работает. Чтобы узнать сигнатуру контроллера достаточно заглянуть в соответствующий инклюд. Так например для ATmega8 это будет
И, конечно же, к записи этих трех байт имеют доступ только изготовители и разрушающие стчения обстоятельств, верно?
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
08.06.2017, 12:01 78
Верно.
Даташиты AVR не содержат алгоритма записи сигнатуры. Но хоть в Errata об этом предупреждают, хотя их читают обычно уже "после того как".

0
0 / 0 / 0
Регистрация: 10.05.2017
Сообщений: 64
08.06.2017, 13:55 79
Цитата Сообщение от omokost
Верно.
Даташиты AVR не содержат алгоритма записи сигнатуры. Но хоть в Errata об этом предупреждают, хотя их читают обычно уже "после того как".
Как будто бы прочтение избавляет меня от повтора таких ситуаций! Ведь я не понял того, как так полулчилось!
0
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
08.06.2017, 15:28 80
Значит, надо разбираться с программатором, почему он не дожидается окончания стирания и начинает читать сигнатуру. У меня такое случалось с программатором от Atmel, оболочка кажется называлась AVRprog. С программатором USBasp и дудкой такого ни разу не было.
Камень остается вполне рабочим. Лучше всего его прописать и поставить в какое-нибудь изделие работать, чтобы он больше не попадался под руку и не парил мозг. Не забыть только в программе вывести число в OSCCAL, если тактируется от внутреннего RC.
0
08.06.2017, 15:28
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru