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

Конденсаторы Panasonic. Часть 4. Полимеры – номенклатура

В заключительной, четвертой статье из цикла «Конденсаторы Panasonic» рассматриваются основные достоинства и особенности использования конденсаторов этого японского производителя на основе полимерной технологии. Главной конструктивной особенностью таких конденсаторов является полимерный материал, используемый в качестве проводящего слоя. Полимер обеспечивает конденсаторам высокую электрическую проводимость и пониженное эквивалентное сопротивление (ESR). Номинальная емкость и ESR отличается в данном случае высокой стабильностью во всем рабочем диапазоне температур. А повышенная емкость при низком ESR идеальна для решения задач шумоподавления и ограничения токовых паразитных импульсов в широком частотном диапазоне.

Читать статью

Какое значение програмного счетчика у 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
                     

STM32G0 - средства противодействия угрозам безопасности

Результатом выполнения требований безопасности всегда является усложнение разрабатываемой системы. Особенно чувствительными эти расходы стали теперь, в процессе массового внедрения IoT. Обладая мощным набором инструментов информационной безопасности, микроконтроллеры STM32G0 производства STMicroelectronics, объединив в себе невысокую цену, энергоэффективность и расширенный арсенал встроенных аппаратных инструментов, способны обеспечить полную безопасность разрабатываемого устройства.

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

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

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

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. К сожалению, в гугле не нашел подробной инструкции, а я в электронике я дуб дубом


  • Сообщения

    • @Серж Вамп Конечно же сам буду делать. Да и запчасти к такой схеме уже почти все есть и схемка вполне понятная для меня нужно только чутка её подкорректировать. Ну и в этом собственно нужна будет помощь. А покупать готовое, да тем более через инет это уж никогда не будет. Это совершенно не моё да и никогда не пользовался и не знаю что и как там делается. Всё покупаю в наших городских магазинах.  
    • Отличные аккумуляторы, ёмкость соответствует заявленной. Уже применил несколько акб в деле. Подробности на фото. Родной акб сдох на ультрабуке(держал несколько минут), а новый аккумулятор редкий от этой модели и стоит не менее 5т на Али(Ебее). Вместо 4х 14 Ваттных банок поставил 4 10Ваттные банки. Держит не менее 4х часов. Такая переделка актуальна для батарей, которые не успели в блок уйти, после чего нужно перекалибровать батарею "колхозным" методом без применения спец оборудования и платных программ PS. С аккумуляторов родные платы защиты пришлось убрать.
    • Почему же не пойдёт, пойдёт, если работает, но платить что бы ещё это моветон, уверяю, развлечение сомнительное. И потом, С1-112 - 10МГц, С1-112А - 20МГц, есть решение для модинга на вплоть до 100МГц. Это если есть донор. Из-за микросборок.
    • С точностью до наоборот. Патент защищает именно ТЕХНИЧЕСКОЕ РЕШЕНИЕ, т.е. реализацию идеи. Триггер может быть на лампах, транзисторах (биполярных или полевых), логических элементах и т.п. Это как пример. Можете не верить дипломированному патентоведу - Ваше право. Но автору 45 изобретений можете поверить? Это я еще ничего не подавал после 1990 года - изменилось законодательство и принципиальные подходы к защите изобретений. Вот я и повторюсь, что хреновый у вас там патентовед, если не смог Вам даже это втолковать.
    • С1-65А   - легенда отечественного осциллографостроения - наилучший выбор из аналоговых  СССР или С1-93 - большой экран, 2 канала. Но хромаает надежность малость.  Ну и как упомянул  KLARUS  - С1-94 - как минимальный вариант.  Ну а с оглядкой на то, что 2019 год уже завершается - в сторону  "цифровика" стоит смотреть. Полный с экраном или USB приставку к компу. 
    • Ты сам собрался делать?просто если такие вопросы,то сам нн сделаешь,купи готовое Есть от одной точки коммутирования до бесконечности и такие же пульты,алишка в помощь
    • @Dr. West Думал уже так сделать, но это не вариант. Слишком там получается все точки освещения раскиданы. Да и кучу кабелей не хочется тянуть там и так их много. Система с пультом вещь удобная. Ну в принцепи сколько оно там будет потреблять. Это же насколько я понимаю подобно сигналки в машине тоже с пульта кстати. Я думаю всё таки сделаю, а там уже решу стоит ли оно того. Буду промерять потребления. @Серж Вамп Спасибо за пояснение. Вот одна из схемок которую удалось найти   Надеюсь эта схема мне подойдёт с какой то небольшой можернизацией. И если эта схема годится, то как её адаптировать под мою сеть.
  • Покупай!

×
×
  • Create New...