Свежие обсуждения
Микроконтроллеры

TEX учится

1 5 7

Замечание с другой темы.

TEX: Контакт он не испортил. Просто своей липкой сущностью заизолировал очень важную ногу МК от контакта в панельки, с феерическими спецэффектами.

Если от потери контакта возникают феерические спецэффекты, то это указывает на изначально неправильное проектирование системы.
Правильный стиль проектирования - все критические узлы, механизмы и т.п. должны включаться низким логическим уровнем.

 

Tadas: Правильный стиль проектирования - все критические узлы, механизмы и т.п. должны включаться низким логическим уровнем.

Это булыжники в огород Intel? Не я такое управление микрухой придумал.

 

А что, интеловская микруха взорвалась ?

 

Tadas: ...Правильный стиль проектирования - все критические узлы, механизмы и т.п. должны включаться низким логическим уровнем.
В промэлектронике другой закон: Команда не может быть выдана замыканием на общий. Команды выдаются только подачей питания.

 

В тексте из даташита на SM5964C (стр. 13/28)

"To perform byte program/page erase ISP function, user need to specify flash address at first. When performing page erase
function, SM5964 will erase entire page which flash address indicated by ISPFAH & ISPFAL registers located within the page.
e.g. flash address: $XYMN"

Никак не могу догнать смысл строк в части адреса:

"page erase function will erase from $XY00 to $X(Y+1)FF (Y:even number), or
page erase function will erase from $X(Y-1) 00 to $XYFF (Y:odd number)"

Прошу помощи.

 

page erase function will erase from $XY00 to $X(Y+1)FF (Y:even number)

перевод: функция стирания страницы сотрёт с адреса 0хXY00 по адрес 0xX(Y+1)FF, если цифра Y - чётная
смысл: например, 0xXY00=0x2400, т.е. Y=4, сотрутся адреса 0x2400 - 0x25FF
.

page erase function will erase from $X(Y-1) 00 to $XYFF (Y:odd number)
функция стирания страницы сотрёт с адреса 0хX(Y-1)00 по адрес 0xXYFF, если цифра Y - нечётная
например, 0xXY00=0x2300, т.е. Y=3, сотрутся адреса 0x2300 - 0x24FF

 

GM: смысл: например,

Спасибо!

 

Немного бесовщины.
Включил я тут свою макетную платку, которая уже прежде издавала подземный стук, по причине затекания ЛТИ-120 в панель. В платке - AT89S52, залита программка которая тупо мигает по таймеру 8 светодиодами порта 1. Поменял кое что в исходнике, скомпилял, решил залить через SPI, для чего воспользовался известной китайской платкой USBASP. Залилось, работает неправильно. Макетка может питаться как от программатора (тот в свою очередь от ПК), так и просто от БП. Питалось от БП, джампер питания от ISP снят. Отключил БП, запитал от программатора, прошилось нормально. Такое прежде бывало. Опять внес изменения в исходник, перекомпилял, залил. Неправильно работает. Решил что глючит МК, он возможно подпаленный, был вставлен неправильно, сработал polyswitch на питании, сам он немного нагрелся. Взял другой МК. Тоже самое. Третий AT89S52 тоже неправильно работает...
Решил что USBASP глючит. Достал надежный параллельный программатор TL866A с которым прежде никогда не было проблем, прошил через него. Работает неправильно, так-же как через USBASP. Считал прошивку с МК, сравнил ее с исходным HEX, не нашел отличий, дизассемблировал ее, - программа без ошибок. Так-же успешно верифицируется через П/О программатора. Все нормально, кроме одного - МК работает ненормально. Снес все файлы проекта, кроме собственно, asm, переместил папку проекта на физически другой диск (мало ли что там не считалось), пересобрал проект, все повторил - все тоже самое. Перестаю понимать что происходит. Взял два контроллера SyncMOS - SM5964C40P и SM8952AC25PP. Прошиваю первый на TL866A, вставляю в макетку, подаю питание... да, SM5964С глючит так-же как 89S52. И SM8952AC тоже.
Достаю нормально собранную, без МГТФ-ных соплей и потеков флюса заводскую макетку, в ставляю по очереди контроллеры... нет, самопальная макетка не виновата.
Последнее средство - еще один программатор. Дорогой, большой, с блоком питания - TOP3000. Шьет все что может быть прошито, и даже больше. Нет, он тоже не помог.
Контроллеры - как с ума сошли. Возможно. Но ведь хоть что-то должно остаться. Достаю еще один МК - STC89C52RC. Этот МК сильно отличается от всех MCS-51, тем что что шьется через последовательный порт, встроенным нестираемым IAP bootloader-ом, который вызывается при подаче питания. В заводской макетке встроено средство его прошивки - преобразователь USB-UART PL2302. Прошиваю прогой STC-ISP v6.85i, включаю питание... ну вы понели.
Собственно, вопрос: куда идти, в церковь, или к психиатру?

 

Каждая найденная в программе ошибка является предпоследней
Почему Вы решили, что неправильно работает именно МК ?

TEX: Поменял кое что в исходнике

Вот ключевое слово

 

Tadas: Поменял кое что в исходнике

Номер порта. Было P0 стало P1.
МК правильно выполняет поcледовательность шагов программы, правильно ветвится, правильно работает машинный таймер и прерывание от него, но, работа начинается с неправильного (ненулевого) значения аккумулятора. CLR A не помогает.

Что было сделано:
1. Использована куча разных программаторов: USBASP, TL866, TOP-3000
2. Разные микроконтроллеры, разных фирм и моделей, настолько разные, что общего у некоторых из них только набор инструкций
3. Использован другой ассемблер. C51ASM (Atmel) вместо ASEM-51 (который выдает неправильные BIN, мало ли, может HEX стал тоже неправильным)
4 Использованы две разные макетки.
5. ...разные кварцы.
6. ...разные компы .

Исходник этого чуда. Может правда, блуждаю в трех соснах. Хотя до сегодня все работало.