Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Можно ли эмулировать T89C51RD2


Автор: shedon 8.1.2004, 16:04
Можно ли в PICE51 POD-51-31 эмулировать микроконтроллер T89C51RD2, в списке эмулируемых микроконтроллеров его нет ?

Автор: PILOT 13.1.2004, 16:56
В Keil можно.

СУВ.

Автор: shedon 13.1.2004, 17:21
Цитата
В Keil можно.

В Keil можно откампилировать, а мне надо эмулировать.

Автор: PILOT 15.1.2004, 22:54
Нет, в Keil можно все. Как эмулировать, так и симулировать (программно).
И вообще это ооочень удобная система, удобнее я не встречал пока для 51-ых.

СУВ.

Автор: shedon 15.1.2004, 23:08
Я имел ввиду эмуляцию внутрисхемным эмулятором Фитона с 31подом(это такой девайс).

Автор: PILOT 15.1.2004, 23:53
Мне казалось что Фитон продает эмуляторы для совместного использования с Keil'ом в том числе.

http://www.fiton.ru/usr-cgi/control/noframe.cgi?PAR1=1&PAR2=1&PAR3=3&

СУВ.

Автор: PILOT 16.1.2004, 00:02
А вообще Project 51 тебе поможет.

СУВ.

Автор: shedon 16.1.2004, 00:12
В проекте 51 нет поддержки такого процессора, по крайней мере его нет в списке, я могу выбрать другой процессор, но там не будут поддержаны все функции T89C51RD2

Автор: PILOT 16.1.2004, 01:37
А что там за особые функции?

Автор: shedon 16.1.2004, 08:20
Цитата
А что там за особые функции?

XRAM, ISP, X2 Mode, 2 DPTR.

Автор: PILOT 16.1.2004, 09:30
AT89S8252 с тем же набором (только с возможностью внутрисхемного программирования т.к. есть внутренний ФЛЭШ), +ЕЕПРОМ что вообще замечательно.
кстати наверное имелось в виду на ISP (Internet Service Provider) а SPI (Serial Perepherial Protocol) ;)
Корпус есть и DIP, т.е. можно вставлять в панельку и в случае чего не выпаивать а заменять чип.

СУВ.

Автор: shedon 16.1.2004, 09:53
Цитата
кстати наверное имелось в виду не ISP (Internet Service Provider) а SPI (Serial Perepherial Protocol) ;)

ISP- In System Programming.
Я выбрал этот микрокантроллер, т.к. у него флэш 64k, дополнительная XRAM 1024b, и частота 40 MHz.
В общем уже поздно другой контроллер выбирать т.к. он уже заказан, да по большому счёту мне не нужны все его прибамбасы кроме XRAM и двух дэпэтээров.
Думаю буду эмулировать как 55ый. Сейчас думаю может другая проблемма выйти, дело в том, что у меня есть ещё внешнее ОЗУ(КР537РУ17), оно естественно сидит на PO и P2, но мне эти порты ныжны у для других целей, так что надо будет это дело как-то смультеплексировать.

Автор: PILOT 16.1.2004, 15:30
Возьми старший адресный разряд 15-ый и им мультиплексируй, верхняя половина будет памятью например а нижняя чем-то еще...

СУВ.

Автор: shedon 16.1.2004, 15:50
Цитата
Возьми старший адресный разряд 15-ый и им мультиплексируй, верхняя половина будет памятью например а нижняя чем-то еще...

Это понятно, только у меня один знакомый писал подобную вещь на си, и ни как не мог поднять уровень на свободных, ножках. На асме может и сработает, только мне неахота на нём писать. Ведь при обращение к памяти на этих разрядах(P2.5 - P2.6) выставляются нули.

Автор: PILOT 17.1.2004, 12:43
Если серьезно, то писать на асме задумано природой контроллера.
Но тебе все равно придется мультиплексировать, возможно тебе есть смысл использовать общую шину данных, и адресовать меньшее колво устройств (чтобы не трогать P2.5 - P2.6) а считывание и запись производить согласно известным временным диаграммам. Для чего написать соответствующую процедуру:
1) На шину адреса/данных: АДРЕС (локальный для устройства)
2) Защелкиваем его в регитре
3) Ногу на чтение(RD) в 0
4) Ногу OE нужного устройства в 0 (глобальный адрес)
5) Читаем данные с шины адреса данных.
6) Ногу OE в 1
7) Ногу на чтение в 1

тоже самое на запись только WR = 0, а не RD = 0

СУВ.

Автор: shedon 17.1.2004, 16:00
Цитата
1) На шину адреса/данных: АДРЕС (локальный для устройства)
2) Защелкиваем его в регитре
3) Ногу на чтение(RD) в 0
4) Ногу OE нужного устройства в 0 (глобальный адрес)
5) Читаем данные с шины адреса данных.
6) Ногу OE в 1
7) Ногу на чтение в 1

Именно так я и сделал, проблемма в другом, но микросхеме
памяти нужны 13 адрессных линий, т.е. у меня занят порт P0(на нём же мултиплексируются данные),
плюс остаётся 5 адресных линий которые идут с порта P2, т.е. по идее на порте P2 у меня есть 3 свободные
линии, я думаю, что при писании на асме проблемм с их использованием не будет, а вот если в си,
то как я говорил у моео знакомого были проблеммы, он не как не мог поднять уровень на этих свободных линиях. Ведь в си на прямую
не работаешь с внешней микросхемой памяти, а си всёравно, сколько адрессных линий ты
используешь(он не знает объём памяти микросхемы) и использует весь порт P2, только в зависимости т адреса на свободных линиях выстовляются нули.

Автор: PILOT 18.2.2004, 10:06
Вот ей богу... когда все в руках (на асме), настолько спокойнее... smile.gif
А на Си вроде можно вставки делать на Асм'е. По другому все равно не получится наверное...

СУВ.

Автор: shedon 18.2.2004, 10:09
Да я уже схему переделал, поставил регистры на I2C, теперь портов хватает. А со вставками на асме там тоже не так всё просто.

Автор: PILOT 18.2.2004, 10:20
Может быть я на си не программирую на контроллерах... поэтому не знаю...
возможно это удабнее, но не все под контролем.

СУВ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)