Jump to content
sluhbaryer

Flash-Картридж Dendy На Микроконтроллере

Recommended Posts

Может повторюсь... Если на картридж установить помимо FLASH еще и RAM, в который будет загружаться образы? Оперативка ведь быстрее флеша и адресация, вроди как, упрощается...

Share this post


Link to post
Share on other sites

куча китайских портативных консолей на руках имею, где именно так и реализовано всё.

т.е. сначала контроллер грузит с флешки ром с игрой в сдрам, затем цпу переключается на сдрам и оттуда уже играет игру, без проблем.

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Какое значение програмного счетчика у UA6527P после резета? Так как в приставке нет встроеного РОМа, то могу предположить, что в диапазоне $8000:$FFFF. И склонен считать, что $8000. Я прав?

Share this post


Link to post
Share on other sites

Проще всего сделать такой катридж с поддержкой мапперов AOROM и UNROM. Схемы простые две микросхема логики ЛЛ1 и ИЕ10, одна ОЗУ и одна памяти. Плюс в том что памяти всего одна микросхема, а в nrom и большинстве остальных мапперов их две.

И хороших игр под эти мапперы довольно много, десятка три наберётся, плюс есть переделки с nrom на unrom.

Держите схему UNROM. В AOROM то же самое, но ЛЛ1 не нужен.

ce3282a5c73e.gif

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

что это ты такое родил ? :))))))

в инете схемы есть готовые, чиво тут выдумывать то ))))))

Share this post


Link to post
Share on other sites

что это ты такое родил ? :))))))

Это схема самого примитивного картриджа, в который устанавливается 32кБ програмной памяти и 8кБ памяти знакогенераторов. Логика нужна для того, чтобы подавать сигнал CE только при выборе адресов в нужном диапазоне и для преобразования сигнала RW в RE.

Для програмной памяти $8000:$8FFF, а для знакогенераторов $0000:$1FFF

Share this post


Link to post
Share on other sites

самый примитивный картридж вообще без логики.

тупо 2 пзу : PGR и CHR ромы

подцеплены к шине приставки.

Edited by goodbye

Share this post


Link to post
Share on other sites

самый примитивный картридж вообще без логики.

тупо 2 пзу : PGR и CHR ромы

подцеплены к шине приставки.

Вся логика в приставке?

Блин... Просчитался... Действительно, A15 не выводится на картридж.

Share this post


Link to post
Share on other sites

А как же тогда адресуется RAM по адресам $5000:$5FFF если A15 не выведено на картридж?.

Меня все чаще посещает мысль, что легче собрать "аппаратный эмулятор" Dendy, использовав Микроконтроллер, видеопроцессор UMC UA6538, память и, может быть, некоторые регистры логики. А раз это будет эмулятор, то и работу мапперов можно сэмулировать...

Share this post


Link to post
Share on other sites

если в роме не нужны адреса, то они и не адресуются.

т.е работа с маппером в роме программируется.

это вобщем сложно, поэтому лучше читать инет, там описано всё в кратце :)

Share this post


Link to post
Share on other sites

http://dendy.migera.ru/nes/g01.html

Отсюда делаю вывод:

1. Если на картридже используется только адресное пространство $8000:$8FFF, то можно на картридж не выводить A15, аиспользовать регистры внутри приставки. Но если на картридже установлен RAM, у которого будет адрес меньше $8000, то на картридж нужно выводить всю шину.

Я понимаю, если RAM используется исключительно через мапер и будет находиться в адресном пространстве $8000:$8FFF, а если нет?

Edited by sluhbaryer

Share this post


Link to post
Share on other sites

Чем больше углубляюсь в схемотехнику Денди, тем больше замечаю ее несовершенство :(

Share this post


Link to post
Share on other sites

Если я правильно понял, то МК, который я собираюсь установить в свой картридж должен успеть прочитать адрес с шины адреса, направление данных с шины управления, выполнить выборку данных с RAM (если работаем на выход), записать/прочитать данные из/в шины данных. И все это за промежуток когда сигнал чипселекта имеет низкий уровень.

Правильно?

Share this post


Link to post
Share on other sites

Прогонять данные через МК в реальном времени (шина данных) бессмысленно.

Смысл симулировать работу маппера.

Главное, чтоб МК успевал проганять данные через себя...

Share this post


Link to post
Share on other sites

Вы отличаете шину адреса от шины данных?

Конечно же отличаю!!! Шина адреса нужна для выбора конкретного блока, к которому будет обращение. Шина адреса однонаправленная. Шина данных нужна для записи данных в блок, выбранный с помощью шины адреса. Шина данных двунаправленная.

Share this post


Link to post
Share on other sites

Про какие "блоки" идет речь?

В случае с 8-ми разрядной шиной блок имеет размер 1 байт.

Share this post


Link to post
Share on other sites

Плюньте в рожу тому человеку, который научил вас этому слову :)

Киньтесь схемой картриджа с unrom-ом. Желательно с обозначениями.

Share this post


Link to post
Share on other sites

Та что сразу в "рожу"! Может я чуть не корректно употребил это слово. Я описал все своими словами. Нужно было определение с Википедии написать? :(

Я не пытаюсь повторить схему картриджа с каким-то из существующих мапперов. Я пытаюсь углубиться в сам процесс обмена данными между приставкой и картриджем и использовать МК для симуляции этих мапперов.

Share this post


Link to post
Share on other sites

Вот режимы работы SRAM

1. CE=H - Режим ожидания

2. CE=L and OE=L and WE=H - чтение данных

3. CE=L and WE=L - запись данных

Отсюда можно вывети алгиритм работы МК:

while(1)

{

while(CE==1)

{

}

if(WE==0)

{

write(); //фунция записи данных

while(CE==0)

{

}

}

else

{

if(OE==0)

{

read(); //функция чтения данных

while(CE==0)

{

}

}

}

}

Edited by sluhbaryer

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • By Илья Юрченко
      Добрый день, уважаемые форумчане! Для научной работы хотел собрать данные о том, насколько микроконтроллеры stm32 удовлетворяют нужды и требования программистов и разработчиков продуктов на нем. Если не сложно, ответьте, пожалуйста, важны данные)
      Разумеется "очень средне" неадекватная метрика, но в рамках работы нужна именно средняя удовлетворённость, и определение существует ли необходимость в создании другой серии универсальных плат на базе МК.
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • Guest Денис
      By Guest Денис
      В общем, есть такое чудо китайской техники (фото)
      Что оно может:
      1. Заряжаться через microUSB порт
      2. Кнопка вкл/выкл, она же переключает режимы
      3. 3 режима свечения светодиода (он светит разными цветами)
      Что я хочу сделать:
      1. Пункты 1 и 2 выше
      2. Разнообразить количество режимов, переливание статичный цвет и тд...
      Вопрос: как это сделать? что купить?

      P.S. К сожалению, в гугле не нашел подробной инструкции, а я в электронике я дуб дубом


×
×
  • Create New...