User Tag List

Страница 117 из 118 ПерваяПервая ... 113114115116117118 ПоследняяПоследняя
Показано с 1,161 по 1,170 из 1333

Тема: Самодельный компьютер на Z80 и не только

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    248
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю, наиболее просто иметь Ардуино, и подключаться 3-мя концами к схеме на CPU 8080. У меня z80/2 мгц. На 2,5 мгц тоже работает.
    Идея в том, что Ардуино по запросам от CPU выставляет данные с USB-UART. При этом CPU нет необходимости привязываться к временам UART. Скоростью UART можно играться. Думаю, 38400 вполне.
    Код Ардуино очень прост:

    Скрытый текст

    Код:
    // z80 <- Arduino serial  17:27 17.10.2023  OKF
    
    #define NAME              "z80 <- Arduino serial"
    #define VERSION           "0.3"
    #define UART_BAUDRATE     19200
    
    #define WAIT_TIME         0             //debug
    
    //                        GND
    #define	WAIT              2             //PORTD!
    #define	DATA              3
    #define	IOR               4
    
    #define in(x)             DDRD  &= ~(1<<(x))
    #define out(x)            DDRD  |= 1<<(x)
    #define on(x)             PORTD |= 1<<(x)
    #define off(x)            PORTD &= ~(1<<(x))
    #define pin(x)            (PIND & 1<<(x))
    
    #define di()              cli()
    #define BAUD_SETTING      ((F_CPU / 4 / UART_BAUDRATE - 1) / 2)
    #define con_begin()       (UBRR0H = BAUD_SETTING>>8, UBRR0L = BAUD_SETTING, \
                               UCSR0A = 1<<U2X0 | 1<<UDRE0, UCSR0B = 1<<RXEN0)
    #define con_available()   (UCSR0A & 1<<RXC0)
    #define con_read()        UDR0
    
    
    void setup() {
      on(WAIT); out(WAIT);
      con_begin();
      di();
    }
    
    
    // выставим стартовый бит по запросу от CPU
    inline void put_start() {
      while (pin(IOR));                     //ждём IOR
      off(WAIT);                            //тормозим CPU
      off(DATA);
      out(DATA);                            //выставляем старт бит
      _delay_ms(WAIT_TIME);
      on(WAIT);                             //запускаем CPU
      while (!pin(IOR));                    //ождаем снятия IOR
      in(DATA);                             //убираем старт
    }
    
    
    // биты данных по запросу от CPU
    inline void put_data(uint8_t c) {
      while (pin(IOR));
      off(WAIT);
      c & 1 ? on(DATA) : off(DATA);         //выставляем данные аналогично старт
      out(DATA);
      _delay_ms(WAIT_TIME);
      on(WAIT);
      while (!pin(IOR));
      in(DATA);
    }
    
    
    // стоповый бит
    inline void put_stop() {
      while (pin(IOR));
      off(WAIT);
      on(DATA);
      out(DATA);                            //стоп
      on(WAIT);
      while (!pin(IOR));
      in(DATA);
    }
    
    
    void loop() {
      if (con_available()) {
        uint8_t ch = con_read();
        put_start();
        for (uint8_t i = 0; i < 8; i++, ch >>= 1)
          put_data(ch);
      }
      put_stop();
    }
    [свернуть]

    Со стороны CPU:

    Скрытый текст

    Код:
    ; serial from Arduino
    
    PIN	equ	0		;RX_PORT, D7 - data
    
    
    ; wait start bit
    loop1	defl	$
    	in	a,(PIN)		;wait request
    	ld	b,4
    loop	defl	$
    	djnz	loop
    
    	rlca			;d7
    	jr	c,loop1
    
    	ld	b,8		;receive data
    loop	defl	$
    	in	a,(PIN)
    	rlca			;d7
    	rr	c
    	djnz	loop
    
    loop	defl	$
    	in	a,(PIN)		;stop
    	rlca			;d7
    	jr	nc,loop
    
    	call	ConOut
    	jr	loop1
    [свернуть]
    Последний раз редактировалось M80; 18.10.2023 в 08:23.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Значит, купил я на алишке все-таки датчик давления/влаги типа BME280. По этому случаю в интерфейсе опять появились снизу три плитки, как и было задумано с самого начального начала. Собственно, для температуры, влажности и давления:



    Теперь у меня даже есть две температуры - одна с датчика DS18B20 и вторая с BME280. Решил температуру показывать с DS18B20, так как она поточнее:



    Оказалось, что 32 килобайта EEPROM - это не так уж и много для 8080, си и картинок. В таком виде почти уперся в 30 килобайт. В целом это уже вполне рабочие часы/градусник/показометр, но на разные свисто-перделки места остается маловато. Адресное пространство щаз поделено поровну - 32кб ROM и 32кб RAM. При этом битовое представление шрифтов + иконки занимают 24469 байт, упаковываются алгоритмом типа lz (zx0) в ~13910 байт и стыкуются с кодом. Сам код занимает ~16 кб. Но к нему прибавляется упакованный битмап ~14кб и получаем 30кб которые надо писать во флеху (EEPROM). При старте платы из EEPROM весь этот статичный упакованный массив битмапов распаковывается в RAM и уже код работает с ним. Итого, помимо почти забитого 30кб EEPROM при старте еще и RAM заполняется минимум на 24 кб, без учета стека, глобальных переменных и массивов.

    Варианты развития событий конечно есть:
    1) Забить и оставить примерно все как есть на данный момент. Просто часы/дата/термометр/показометр;
    2) Прицепить сбоку SPI-флешку, куда засунуть все битмапы;
    3) Городить маппер (схему, позволяющую переключаться между различными банками памяти в одинаковом адресном пространстве), две EEPROM по 32к и переключаться между ними; То есть окутывать плату МГТФ-ом, либо разводить новую плату.

    Разумеется, выбран был первый вариант, быгыг -) Тем более начал тут убирать часики в коробку в начале месяца и кокнул экранчик (потрачено):



    Перезаказал экран на али, и вот, спустя пару недель новый экран приехал, и теперь коробка собралась и закрылась:



    Сделал еще краткосрочный предсказатель погоды по алгоритму Замбретти - рисует разные иконки в верхнем левом углу экране (солнечно/пасмурно/дождь/и тд). Особо не тестировал, но вроде чето показывает там...



    Но к этому времени уже откровенно надоело. Поэтому всё, достаточно возни с i8080, вроде наигрался сполна.

    На всякий случай выложил все по данному проекту "как есть" здесь: https://github.com/Tronix286/i8080_clock

    Но особого смысла повторять именно эту плату нет, так как она делалась исключительно под себя с имеющимися у меня прямо в ящике стола деталями. Именно отсюда на плате винегрет из SMD 0402(!), 0603, 0805, QFN, МЛТ резисторы, мосфеты в ТО220 на 180 или больше омпэр (!) и прочий лулз. BGA разве только здесь для кучи не хватает. Не знаю вообщем, это конечно нужно очень сильно кому-то захотеть, что бы такой мозговырвный набор рассыпухи специально закупать для этого проекта... Но в моем телеграм канале просили выложить - я выложил

  4. #3

    Регистрация
    13.02.2022
    Адрес
    г. Уфа
    Сообщений
    713
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    83 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопрос про буферизацию Z80 при помощи К555АПб есть какие то подводные камни? Встречал упоминания что в некоторых случаях не работает либо глючит.

  5. #4

    Регистрация
    10.07.2005
    Адрес
    Ставрополь
    Сообщений
    1,158
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    61
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первый вариант Аюши Z80 был с буферами на АП6, проблем не было.

  6. #5

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    248
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от rw6hrm Посмотреть сообщение
    Первый вариант Аюши Z80 был с буферами на АП6, проблем не было.
    Раз АП6, значит ШД? Буферы между чем и чем? Что находилось по одну и другую сторону?

  7. #6

    Регистрация
    13.02.2022
    Адрес
    г. Уфа
    Сообщений
    713
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    83 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от M80 Посмотреть сообщение
    Раз АП6, значит ШД? Буферы между чем и чем? Что находилось по одну и другую сторону?
    Z80 по одну сторону и 16мс (4 вв55, 4 вв51, 8 ram\rom)
    + возможность расширения

  8. #7

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    248
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Получается, что разгружается только z80. Но ведь и остальные тоже работают на эту же нагрузку.
    Кстати, слышалось, что z80 некоторых производителей имеют повышенную нагрузочную способность. Брехня, небось?

  9. #8

    Регистрация
    26.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    270
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MVV Посмотреть сообщение
    Мужик красавчик, нормальную штуку замутил.

    В общем не выдержал, отдал плату в производство, на следующей неделе поэкспериментирую с реальными железками.
    Ленинград-1 48К
    ЮТ-88 в минимальной конфигурации

  10. #9

    Регистрация
    26.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    270
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А тем временем работа по сборке компьютера движется. Сегодня приехала печатная плата, буду паять потихоньку.

    Возникла загвоздка с приобретением Т34ВМ1. В запасах нашел КР1858ВМ1 с меткой "ОП". Вроде как полный аналог, но читал отзывы, что в некоторых устройствах он не работает (в АОНах, например). У кого был опыт эксплуатации подобных процах поделитесь впечатлениями.
    Ленинград-1 48К
    ЮТ-88 в минимальной конфигурации

  11. #10

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,162
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    779
    Поблагодарили
    423 сообщений
    Mentioned
    24 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KeKc Посмотреть сообщение
    А тем временем работа по сборке компьютера движется. Сегодня приехала печатная плата, буду паять потихоньку.

    Возникла загвоздка с приобретением Т34ВМ1. В запасах нашел КР1858ВМ1 с меткой "ОП". Вроде как полный аналог, но читал отзывы, что в некоторых устройствах он не работает (в АОНах, например). У кого был опыт эксплуатации подобных процах поделитесь впечатлениями.
    Да ладно, его в спектрумах столько ставили. Работает без проблем. Правда , если ты сильно планируешь нагружать шину данных, адреса и управления (в смысле ноги процессора), то имеет смысл ставить CMOS буржуйский аналог. Но это надо очень сильно нагрузить его.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

Страница 117 из 118 ПерваяПервая ... 113114115116117118 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Самодельный станок для намотки ТВЗ
    от Ратмир в разделе Творчество
    Ответов: 3
    Последнее: 25.05.2017, 13:32
  2. Самодельный телевизор
    от KALDYH в разделе Творчество
    Ответов: 34
    Последнее: 18.09.2013, 13:09
  3. Самодельный kickstart под ЛУТ :D
    от fan в разделе Amiga
    Ответов: 6
    Последнее: 21.08.2010, 16:18
  4. Лучший самодельный компьютер
    от roxx в разделе Зарубежные компьютеры
    Ответов: 10
    Последнее: 08.12.2007, 22:53
  5. Самодельный принтер
    от Ewgeny7 в разделе Несортированное железо
    Ответов: 3
    Последнее: 07.08.2005, 18:11

Ваши права

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