Easyelectronics.ru

Электроника для всех
Текущее время: 26 май 2018, 01:25

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 27 фев 2012, 00:39 
Здравствуйте!

Зарегистрирован: 26 фев 2012, 23:01
Сообщения: 3
Вложение:
Комментарий к файлу: Это модифицированный в среде Aspire код для ADuC842
B52.ZIP [173.73 Кб]
Скачиваний: 331
Уважаемые форумчане!

Спешу похвалить микроконверторы Analog Devices ADuC8xx с однотактовым ядром 8052.
Помимо "стандартного" ядра, правда в 12 раз более быстрого, в микросхему входит развитая периферия,
в частности быстрый и точный АЦП и 2 ЦАП. Кроме того, 2К встроенной XRAM и целых 62К EEPOM памяти программы.
Есть 4К EEPOM данных с организацией 1К страниц по 4 байта.

Пишу это не в рекламных целях, а вот почему.
Широко известен проект MCS52 BASIC, я имею в виду бейсик-интерпретатор на базе 8052.
Многочисленные модификации проекта так или иначе включают собственно 8052 (80С52, 80С32, 87С52 и т.д),
ОЗУ с минимальным объемом 1К (как правило от 2К до 32К), предусмотрено РПЗУ с объемом 8К, но в принципе бейсик работает в минимальной конфигурации: микроконтроллер 8052 с прошивкой 8К и ОЗУ 1К.
В качестве консоли используется RS232 терминал.

Естественно, хотелось бы попробовать применить ADuC841(2,3) вместо 8052 и, таким образом, построить контроллер со встроенным бейсик-интерпретатором на одной (не считая драйвера RS232, стабилизатора 5В и проч.) микросхеме.

Я отредактировал исходный ассемблерный код следующим образом:
1) по адресу 0000H записал LCALL 4300H , а там прописал регистры PLLCON CFG842 и, наконец, LCALL на стартовый адрес.
2) стер код автоматического определения скорости RS232 терминала и установил принудительно 2400БОД.
Сделал это потому, что из-за того, что ядро 842 однотактовое, определение скорости терминала происходило неправильно.

Но при попытке "приспособить" исходный код (он свободно распространяется в сети) для ADuC84x я столкнулся с непонятным поведением программы.

Вот пример, судите сами:

*MCS-51(tm) BASIC V1.1*
READY
>PRINT 2+5
7

>PRINT 2/3
.66666667

>PRINT SIN(0.785398)
.7071067

ERROR: BAD SYNTAX
READY
>10 PRINT 10
>20 PRINT 20
>LIST

READY
>for j=0 to 10:?j:next j
0

ERROR: C-STACK
READY
>
Все дальнейшие изменения исходного кода (отключение источников прерываний, переходов по "пустым" адресам") ни к чему не привели.

Буду бесконечно признателен, хотя и в пределах разумного, за ценные и бесценные мысли по поводу "лечения" интерпретатора.


Вложения:
Комментарий к файлу: Это исходный проект BASIC52 (поставляется вместе с установкой Proteus 7.2) и минимизированный проект (8032, 2К ОЗУ без внешнего ПЗУ). Оба проекта вроде бы работают одинаково в пределах команд, не обращающихся к внешнему ПЗУ программ и фирменный исходник
basic-52.zip [140.34 Кб]
Скачиваний: 256
Комментарий к файлу: Это модифицированный в среде Keil UVision код для ADuC842
KeilB52.zip [147.57 Кб]
Скачиваний: 270
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 27 фев 2012, 20:56 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 05 июл 2011, 00:43
Сообщения: 46
Чем прошиваете эти МК?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 28 фев 2012, 16:38 
Старожил
Аватара пользователя

Зарегистрирован: 11 дек 2010, 13:08
Сообщения: 642
Откуда: ... Из далекой, далекой галактики
Эти МК можно прошивать через SPI

_________________
С миру по нитке


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 28 фев 2012, 17:40 
Старожил
Аватара пользователя

Зарегистрирован: 02 апр 2010, 12:39
Сообщения: 4399
Откуда: Брянск
Лучше всего их шить через втроенный бутлоадер по COM порту. Программатор не нужен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 28 фев 2012, 23:36 
Здравствуйте!

Зарегистрирован: 26 фев 2012, 23:01
Сообщения: 3
Bomond писал(а):
Лучше всего их шить через втроенный бутлоадер по COM порту. Программатор не нужен.

Прошиваю WSD 7.05 через последовательный порт. Бутлоадер не использую - он наверняка будет мешать.


1) Железо - АДУК в чистом виде: микросхема на плате, внешний источник +5В и кабель с драйвером RS232 (из стартового комплекта 842).
Во вложении sheetpcb.ZIP схема и рисунок платы.

2) Среда: их две: Keil uVision 7.04 и Aspire 1.05.
В предыдущем вложении проект под Keil.
Две среды проектирования взял для страховки. А зря - результат компиляции одинаков.
Для моделирования (ес-но вместо АДуКа брал 8052 или 8032) - Proteus 7.2 SP6.

3) Что должно быть? Во-первых корректное выполнение инструкций Бейсика (версии 1.1 и 1.31 ведут себя одинаково).
Например:

*MCS-BASIC-52 V1.31*
READY
>10 ? 10
>20?20
>list
10 PRINT 10
20 PRINT 20

READY
>run

10
20

READY
>fori=0to5: ?i:nexti
0
1
2
3
4
5

>

(это то, что дает Протеус - aduc842.DSN).
------------------
А вот то, что я получаю реально на экране терминала (эмулятора терминала TTerm1.exe - см. вложение):

*MCS-BASIC-52 V1.31*
READY
>10 ? 10
>20 ? 20
>list

READY
>run

READY
>fori=0to5: ?i:nexti
0
0.081


ERROR: C-STACK
READY
>
Т.е. строки 10 и 20 не были сохранены в ОЗУ,
цикл выполнен 1 раз правильно, второй - неправильно, дальше типа переполнен стек.

Еще "перлы":
>?MTOP,MBOT,FREE,MTOP-FREE
2047 -0.0000084 E-58 1535 512

>?MBOT
-0.0000184 E-97

>NEW

>?MBOT
0.081

>
>?len
1

>
Т.е. "вершину" памяти нашел верно, разность - верно, LEN=1 это верно, если пусто в памяти. ФРИ - тоже верно. А вот МБОТ должен быть равен 0.
Еще пример:
*MCS-BASIC-52 V1.31*
READY
>?mbot
0

>?355/113
3.1415929

>?mbot
0

>fori=10to1step-1 : ?i :nexti
-?.400121 E-113

>?mbot
0.001 E-0

>
В общем таких примеров много. Мне они ни о чем конкретно не говорят,
и подсказки не дают.
Дело осложняется тем, что отладка возможна через УАРТ, а он используется самим Бейсиком. Поэтому как только я дохожу до обращения к последовательному порту, происходит ошибка и в дальнейшем я не могу проследить за ходом выполнения программы.
А в Протеусе нет адекватной модели АДуКа.

Ну а во-вторых по определенным адресам внутренней XRAM должны быть прописаны определенные коды. Они не соответствуют тому, что должно быть либо функция XBY(<адрес>) работает неправильно.
Например по адресу 266 (10АН) д.б. 7, а есть 50, по адресу 267 д.б. 255, есть 54.
Между прочим это ячейки, где записан МТОР, хотя МТОР = 2047 - верно.


Вложения:
Комментарий к файлу: Это эмулятор терминала. Но можно и любой другой.
TTerm1.zip [230.64 Кб]
Скачиваний: 271
Комментарий к файлу: Это работает Протеус с 8052 вместо АДуК.
Работает правильно.

aduc842.gif
aduc842.gif [ 87.23 Кб | Просмотров: 7397 ]
Комментарий к файлу: Это схема и сборочка платы
sheetpcb.ZIP [154.71 Кб]
Скачиваний: 268
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 18 ноя 2012, 14:34 
Здравствуйте!

Зарегистрирован: 26 фев 2012, 23:01
Сообщения: 3
Ну вот, господа!
Наконец у меня есть рабочий БЕЙСИК-интерпретатор для АДуК842.
Если кого-то интересует - пишите в личку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 27 апр 2013, 11:40 
Заглядывает иногда

Зарегистрирован: 10 мар 2012, 11:11
Сообщения: 31
Так что же было?!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 27 апр 2013, 14:10 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 3608
Откуда: г. Липецк
Это была попытка превратить
alexandergb писал(а):
..."стандартного" ядра, правда в 12 раз более быстрого...

в хромого инвалида на BASIC. По словам ТС операция прошла успешно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ADuC84x - MCS52 BASIC
СообщениеДобавлено: 28 апр 2013, 06:07 
Заглядывает иногда

Зарегистрирован: 10 мар 2012, 11:11
Сообщения: 31
Ну дак это кому что надо... Мне же интересно из за чего таки были проблемы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB