PDA

Просмотр полной версии : Ошибки в даташитах



Ромм
27.12.2017, 09:26
Всем добрый день!
Возможно кто-то, как и я, столкнулся с подобным.
Изучая МК Mega8 искал даташит на русском т.к. с английским проблемы.
Так вот, в даташите который нашел я, серьезная ошибка: на стр. 72 с описанием работы регистра TCCR0 таблица программирования битов абсолютно не корректна. Не соответствуют кэффициенты деления и вообще отсутсвуют варианты настройки внешнего тактирования !
Я для себя сделал вывод, что господа перевордчики почему-то взяли эту таблицу из раздела описания работы таймера Т2. Т.е. при изучении работы данного МК ОБЯЗАТЕЛЬНО нужно сверяться с АНГЛИЙСКИМ вариантом даташита.
Привожу здесь только одну страницу, т.к. весь PDF весит более 10 Мб.

Предлагаю всем кто столкнулся с подобными казусами, делиться своим опытом в данной теме.

UR5ZQV
27.12.2017, 12:40
Ромм,
1.Предпочитаю язык оригинала, неоднократно сталкивался на работе с качеством "перевода" "профессиональных переводчиков". К примеру английский сильно зависит от контекста, который лучше знает пользователь "перевода", чем "профессиональный переводчик", в довесок схемы, чертежи, коды прог., рис. и т.п.
2.Пользоваться данными из интернета, СМИ, газет, журналов, "заборов", даже из уважаемых справочников - нехороший тон (а на работе запрещенный), часто вкрадываются опечатки, за которые Авторы ответственности не несут.
3.Если иного исхода нет, надо проверять "на себе", логически, макетированием, моделированием и т.п. (что на работе Вам не позволят).

Ромм
27.12.2017, 12:52
даже из уважаемых справочников - нехороший тон
Александр, чем Вам справочники то не угодили:smile:




Если иного исхода нет, надо проверять "на себе", логически
Так и получилось в данном случае.
Правда пока я додумался что это туфта, подозревал себя в психическом нездоровье:smile:

Tadas
27.12.2017, 15:10
Не думаю, что тема получит развитие. Переводных даташитов вообще очень немного, а ещё меньше их читающих.

Genadi Zawidowski
27.12.2017, 15:42
Ещё пример миленьких очепяток - в книге редькина по мегам ошибки в описании битов реакции входов прерываний. Пара недель жизни в унитаз.

rx3apf
27.12.2017, 16:10
Александр, чем Вам справочники то не угодили:smile:


В справочниках иногда тоже встречаются изумительные ляпы. Как, например, описание работы 561КТ3 в справочнике Шило. Перефразируя классика - "не читайте перед обедом переводные даташиты и справочники"... И после обеда - тоже, разумеется...

Ромм
27.12.2017, 16:14
- Филип Филипыч, да ведь других нет!
- Вот никаких и не читайте...

Евгений240
27.12.2017, 17:09
Ошибка в цоколёвке Гу 50, гуляющая по сети. Справа - неправильно. Информация от UR7HBP (http://www.cqham.ru/forum/member.php?20699-UR7HBP)

PavelS
30.07.2020, 11:46
Здравствуйте.
Мои 5 копеек.
PIC16F628, TIMER1.
Некорректно работает прерывание от таймера 1. В симуляторе все вылизал (использую встроенный в MPLAB), а когда запрограммировал кристалл и включил питание то получилась ерунда.
Прерывание от таймера запрещено и битом TMR1IE (регистр PIE1), бит разрешения PEIE (INTCON) тоже сброшен. В обоих случаях работа таймера разрешена.
Только когда я разрешил прерывание и запретил работу таймера, все встало на места.
Даташит и симулятор друг другу не противоречат (и то, и другое брал на WWW.MICROCHIP.RU), а кристалл не слушается.

rx3apf
30.07.2020, 12:04
F628 старый и довольно популярный. Если чего нет в errata - нет и живьем. Перепроверяйте еще. Иной раз сделаешь плюху, потом долго удивляешься - какой идиот так написал ? А, это я...

vadim_d
30.07.2020, 12:07
Только когда я разрешил прерывание и запретил работу таймера, все встало на места
"И эта странная фраза: собака - друг человека" :). Получается с Ваших слов, что при запрете прерывания от таймера оно не работало - вроде так и должно быть, а вот ситуация разрешенных прерываний и запрета работы таймера более интересная, возможно состояние таймера соответствовало тому, которое должно генерировать прерывание. Чип достаточно древний, вряд ли осталось что-то невылизанное в документации, скорее что-то в симуляторе криво сделано :)
Ну и соглашусь с rx3apf - сделать ляп очень легко

PavelS
30.07.2020, 13:59
Я,наверное, не очень удачно описал проблему. Прерывание запрещено, но при переполнении таймера был переход на процедуру обработки на настоящей микросхеме, что не соответствует даташиту. А симулятор работал в полном соответствии с документацией.
В ходе работы были варианты
1. запрещено прерывание от таймера TMR1IE = 0, прерывания от периферии разрешены PEIE = 1, таймер считает.
2. запрещены прерывания от периферии PEIE = 0, разрешено прерывание от таймера TMR1IE = 1,таймер считает.
3. разрешены прерывания TMR1IE = 1 PEIE = 1, счет таймера запрещен.

Во всех трех вариантах при выполнении условия все разрешалось. Но работоспособным оказался только третий. В первом и втором вне зависимости от разрешения прерываний был переход на процедуру обработки.

UR5ZQV
30.07.2020, 14:19
PavelS, Ну так читайте внимательно, справочник (а лучше пользоваться надзираемым даташитом или ТУ). А симулятор можете засунуть сами знаете куда, никто не знает какая модель там была заведена, и насколько соответствует физического изделлия параметрам, и Вашего исполнения.
ПС:Если делаете для тиражирования, а не для себя, забудьте об "справочниках", был случай, когда в уважаемом мной справочнике Анурьева (2-е издание, в 1-м и 3-ем в этой строке ее не было, сам проверил) вкралась "опечятка", если б ребята, токари, во время мне это не подсказали, при физическом исполнении, платить бы пришлось по сей день, как алименты, по КЗОТу. :).

vadim_d
30.07.2020, 14:23
были варианты
А приведите их со значениями установленных битов и результатом, может свежий взгляд на их описание откроет что-то новое. С 628-м сталкивался в антенном анализаторе пана Тарасова, глубоко не копал, но что-то там и с таймерами было

rx3apf
30.07.2020, 14:25
Флаг TMR1IF в обработчике сбрасывался ?

А вообще такие вещи вылавливаются вдумчиво, с скопом (или анализатором), с дерганием контрольных ног в обработчиках. С уверенностью 100% - это ошибка установок, но никак не кристалла. Столь грубых плюх там не было.

PavelS
30.07.2020, 16:00
Вадим, это будет возможно не раньше сентября, я сейчас в отъезде.

rx3apf. Флаг TMR1IF в обработчике сбрасывался ?
Обижаете:-P

rx3apf
30.07.2020, 18:57
Ну, мало ли ;) У меня "дежурная" ошибка для PIC16 - перепутать банки.

Oleg 9
31.07.2020, 10:38
Я,наверное, не очень удачно описал проблему. Прерывание запрещено, но при переполнении таймера был переход на процедуру обработки на настоящей микросхеме, что не соответствует даташиту. А симулятор работал в полном соответствии с документацией.
В ходе работы были варианты
1. запрещено прерывание от таймера TMR1IE = 0, прерывания от периферии разрешены PEIE = 1, таймер считает.
2. запрещены прерывания от периферии PEIE = 0, разрешено прерывание от таймера TMR1IE = 1,таймер считает.
3. разрешены прерывания TMR1IE = 1 PEIE = 1, счет таймера запрещен.Ничего не понятно. Работа таймера разрешается битом TMR1ON (бит 0 регистра T1CON ) вне зависимости от разрешения и запрещения каких либо прерываний. Пока TMR1ON будет 1, таймер 1 будет считать. Может быть конкретный экземпляр PIC16F628 у вас дефектный, или версия компилятора подглючивает. Попробуйте другую версию компилятора, желательно STANDART а не PRO.

sharp
31.07.2020, 16:52
:offtop:
У меня "дежурная" ошибка для PIC16 - перепутать банки.Никогда не поздно перейти на C/C++.:smile:

Alcest
31.07.2020, 17:34
при изучении работы данного МК ОБЯЗАТЕЛЬНО нужно сверяться с АНГЛИЙСКИМ вариантом даташитаТам ошибок не меньше бывает. Даташит на 100 листов и еррата страниц в 200 :-P Вот с последней и нужно сверяться.

PavelS
02.08.2020, 14:11
Ничего не понятно.

1. запрещено прерывание от таймера TMR1IE = 0, прерывания от периферии разрешены PEIE = 1, TMR1ON=1.
2. запрещены прерывания от периферии PEIE = 0, разрешено прерывание от таймера TMR1IE = 1, TMR1ON=1.
3. разрешены прерывания TMR1IE = 1 PEIE = 1, TMR1ON=0.

В первых двух случаях есть переполнение таймера, но запрещен переход на процедуру обработки. В третьем случае запрещен счет, но разрешено прерывание. Во всех трех случаях для нормальной работы все три указанных бита д.б. в лог. 1.
Работоспособным оказался только третий.

vadim_d
02.08.2020, 14:51
Во всех трех случаях для нормальной работы все три указанных бита д.б. в лог. 1.
Работоспособным оказался только третий
Вы же сами себе противоречите: под номером 3 таймер запрещен:

3. разрешены прерывания TMR1IE = 1 PEIE = 1, TMR1ON=0
А так, все три в единице - по даташиту, "звучит логично" (с) дятел Вуди :)

PavelS
03.08.2020, 01:56
Ничуть. При выполнении условия во всех трех вариантах недостающий бит устанавливался в 1.

vadim_d
03.08.2020, 07:49
недостающий бит устанавливался в 1
То есть все получалось по даташиту? Вернемся к исходному вопросу - приведите набор битов, который в симуляторе и в реальном чипе ведет себя по-разному и противоречит даташиту

UN7GCE
03.08.2020, 09:31
1. запрещено прерывание от таймера TMR1IE = 0, прерывания от периферии разрешены PEIE = 1, TMR1ON=1.
2. запрещены прерывания от периферии PEIE = 0, разрешено прерывание от таймера TMR1IE = 1, TMR1ON=1.При этих установках Вы каким образом попадаете в программу обработчика? По флагу TMR1IF? Если да, то этот способ неверный. При данных установках (выделено синим) таймер будет считать всегда. И, даже если будет глобальный запрет по GIE=0, всё одно по флагу TMR1IF будете улетать в обработку.
Сколько работал с TMR1 никогда не видел ошибки в даташите по этому таймеру.

PavelS
03.08.2020, 10:00
При этих установках Вы каким образом попадаете в программу обработчика? По флагу TMR1IF? Если да, то этот способ неверный. При данных установках (выделено синим) таймер будет считать всегда. И, даже если будет глобальный запрет по GIE=0, всё одно по флагу TMR1IF будете улетать в обработку.

Переход на обработку аппаратный. При переполнении таймера переход на 0x0004

Тогда в чем смысл битов запрета/разрешения прерываний? По Вашим словам при переполнении все равно будет переход на обработку?


То есть все получалось по даташиту? Вернемся к исходному вопросу - приведите набор битов, который в симуляторе и в реальном чипе ведет себя по-разному и противоречит даташиту

Варианты 1 и 2.
Если TMR1IE = 0 или PEIE = 0, то при переполнении не должно быть перехода на обработку. В симуляторе перехода действительно нет. А на микросхеме - есть.

UN7GCE
03.08.2020, 10:19
По Вашим словам при переполнении все равно будет переход на обработку?По моим словам, что если TMR1ON=1, таймер будет считать всегда. Для него PE1IE=0 и TMR1IE=0, INTCON,GIE=0 не указ. И также будет всегда выставляться флаг TMR1IF. Проверяйте свой исходник, в частности переход по 0х04. Симулятор чаще ошибается, чем железо на столе.

vadim_d
03.08.2020, 11:03
Для него PE1IE=0 и TMR1IE=0, INTCON,GIE=0 не указ
А если глядеть на FIGURE 14-14 в http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf (стр. 109) - то PEIE и GIE должны быть указом

UN7GCE
03.08.2020, 11:58
Вадим, я не спорю, что эти биты установки регистров INTCON и PIE1 тесно связаны с работой TMR1. Речь о том, что при бите TMR1ON=1 таймер будет всегда выставлять флаг TMR1IF переполнения при любых установках регистров INTCON и PIE1. И собака, скорее всего, порылась в ПП обработчика прерываний. Скорее всего Pavels ныряет туда по флагу, а не по вызову.

vadim_d
03.08.2020, 12:21
ныряет туда по флагу, а не по вызовуТо есть по чужому незамаскированному прерыванию проверяет флаг таймера 0 и обрабатывает его? PEIE и GIE работают на все периферийные источники, тут трудно напортачить. Разве что GIE взведется в единицу по команде возврата из любого прерывания, специально ставить его в 1 надо только после явного запрета прерываний. В общем, совсем запутали :). Сейчас поглядел, у пана Тарасова в АА 819-й, правда своих исходников найти не могу, они на другом компе

PavelS
03.08.2020, 12:26
Скорее всего Pavels ныряет туда по флагу, а не по вызову.

Вы имеете в виду, что я в основном цикле написал что-то похожее на "BTFSS PIR1,TMR1IF"? Такого в программе нет.

vadim_d
03.08.2020, 12:37
в основном цикле
Нет, речь о том, что входите в начало обработчика по чужому прерыванию, а в ходе анализа флагов обрабатываете и таймерное

PavelS
03.08.2020, 13:08
Кажется понял свою ошибку. Вернусь домой - проверю.

UN7GCE
03.08.2020, 16:07
Вот мой кусочек кода по обработке прерываний по RB0, RB4, RB5, RB6, RB7. На RB0 висит кнопка записи в EEPROM, а на RB4-7 висят два валкода.
Это выжимка из исходника по "Синтезатор для Урала и не только" (http://www.cqham.ru/forum/showthread.php?39380-%D1%E8%ED%F2%E5%E7%E 0%F2%EE%F0-%E4%EB%FF-%F2%F0%E0%ED%F1%E8%E 2%E5%F0%E0-%AB%D3%D0%C0%CB-84%BB-%E8-%ED%E5-%F2%EE%EB%FC%EA%EE%8 5&p=1617763&viewfull=1#post16177 63) Немного обрезано, но суть ясна.
Посмотрите Павел, может что пригодится. Было бы легче подсказать, если бы озвучили хотя бы свой алгоритм работы TMR1.

PavelS
14.09.2020, 14:44
vadim_d и UN7GE
Спасибо, вы вправили мне мозги. Все было так, как вы описывали.
Моя ошибка была в том, что при отладке в симуляторе я для ускорения принудительно менял значения регистров TMR1L TMR1H и TMR0. Не хотел ждать.
Вот уж точно: поспешишь - людей насмешишь.

vadim_d
14.09.2020, 17:07
поспешишь - людей насмешишьЯ обычно привожу другую формулировку: широко шагаешь - штаны порвешь :). Но рад, что одним загадочным явлением стало меньше

ozforester
26.12.2020, 23:22
Всем доброй ночи. Пытаюсь заполнить пробел в понимании даташита. В характеристиках по постоянному напряжению часто указывается значение относительно питающего напряжения. ( напр. MAX Vcc+0.5 при Vcc 1.8..4.5V ) Нужно ли понимать это буквально, как "при уменьшении питающего напряжения, уменьшается и указанное максимальное значение напряжения"? Задумался, поскольку при выключении питания контроллера, на его АЦП может поступать контролируемое напряжения с делителя. Добавил токоограничивающий резистор от греха подальше, но осадочек остался. Завидую белой завистью радолюбителям, которым подобные сомнения незнакомы %-)

rx3apf
26.12.2020, 23:32
Речь, очевидно, идет о номинале входных напряжений (лог "1"). Таки да, верхнее значение лимитировано напряжением питания плюс напряжение на защитном диоде по входу. Обычно это в диапазоне +0.3...0.6V относительно Vcc.

ozforester
26.12.2020, 23:57
Например мега2560

348415

Подаем на АЦП 3 вольта при питании 1.8 вольт. В данной таблице недопустимо (ну можно так интерпетировать), а если руководствоваться таблицей предельных значений, где нет взаимосвязи с питающим напряжением, то ничего старшного не случится со входом. Читать даташит оплучается вроде бы, а делать это правильно пока нет (:

vadim_d
27.12.2020, 00:08
Подаем на АЦП 3 вольта при питании 1.8 вольт. В данной таблице недопустимоЭто таблица для входов, используемых как цифровые, она задает диапазоны напряжений, которые гарантированно распознаются как 0 и 1 (VIL и VIH) при разных питающих напряжениях. Если вход сконфигурирован как аналоговый, для него отдельные ограничения, поищите где-нибудь в разделе АЦП. А максимально допустимые - это когда при выходе за них микросхема может безвозвратно повредиться

ozforester
27.12.2020, 00:24
Спасибо. Получается, что в первом случае логика не будет работать, а во втором всё остальное. (:

rx3apf
27.12.2020, 00:31
А для случая, когда напряжение подается на вход, а питания нет, есть еще такая пакость как "тиристорный эффект" (для CMOS). Современным изделиям это не особо свойственно, но бывает, говорят... Имеет смысл вводить дополнительные внешние элементы защиты.

vadim_d
27.12.2020, 00:57
в первом случае логика не будет работать, а во втором всё остальноеПо АЦП глядите в Table 31-9 на странице 365 даташита https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega640-1280-1281-2560-2561-Datasheet-DS40002211A.pdf . Питание АЦП (AVCC) не должно сильно отличаться от цифрового (+-0.3В), опорное должно быть jn 1V до питания, а на входе от нуля до опорного (может и до питания можно, но все равно будет переполнение при оцифровке)