Сообщество - TECHNO BROTHER

TECHNO BROTHER

2 020 постов 13 454 подписчика

Популярные теги в сообществе:

13

Регулятор громкости и тембра на LC75421M (Arduino)

Ранее в http://rcl-radio.ru/?p=128799 был показан пример тестового запуска аудиопроцессора LC75421M, на этой странице будет показан пример практического применения аудиопроцессора в качестве регулятора громкости и тембра.

Регулятор громкости и тембра на LC75421M содержит следующие компоненты:

  • Аудиопроцессор LC75421M

  • Плата Arduino Nano (Atmega328)

  • Энкодер KY-040 (модуль)

  • Три тактовые кнопки

  • Модуль часов реального времени DS3231

  • ИК-датчик VS1838B

  • Пульт ДУ (NEC)

  • Дисплей LCD1602 с модулем I2C

Регулятор громкости и тембра на LC75421M обладает следующими характеристиками:

  • Регулировка громкости от -76 до 0 дБ (шаг 1 дБ)

  • Регулировка баланса ±4 дБ

  • Регулировка BASS от 0 до 14 шагов (±11.9 дБ)

  • Регулировка TREBLE от 0 до 14 шагов (±11.9 дБ)

  • Регулировка SUPER BASS от 0 до 10 шагов (0…+20 дБ)

  • 5-и канальный селектор входов с независимой регулировкой предусилителя от 0 до 18,75 дБ

  • Режим MUTE

  • Режим STANDBY

  • Часы с коррекцией времени

  • Напряжение питания от 7,5 до 10 В

  • Изменение яркости подсветки

Основное управление параметрами аудиопроцессора будет осуществляться при помощи энкодера (KY-040) и 3-х кнопок, так же будет применен ИК пульт который будет дублировать энкодер и кнопки управления. Вся информация будет выводится на дисплей LCD1602 + I2C (I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 1602 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея.)

Громкость

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

BASS

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

SUPER BASS

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

TREBLE

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Баланс

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Часы (работаю в режиме STANDBY)

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Коррекция времени часов: в режиме STANDBY нажать и удерживать кнопку энкодера, далее нажать кнопки INPUT,  MUTE для изменения времени часов, минут.

Так же предусмотрено изменение яркости дисплея в режиме STANDBY: выход D6 Arduino подключить к пину управления подсветки:

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Подсветка — убрать перемычку с модуля I2C PCF8574 и подключить вывод модуля к цифровому выходу Arduino D6. Перед подключением замерить ток подсветки который не должен превышать 20 мА (у моего модуля ток не более 15 мА, замер производить между контактами перемычки).

Максимальный выходной ток одного выхода Arduino Nano не должен превышать 40 мА.

Яркость подсветки можно настроить через скетч:

#define BRIG_L 50

#define BRIG_H 250

  • BRIG_L — яркость в режиме STANDBY (0-250)

  • BRIG_H — яркость в рабочем режиме (0-250)

Схема подключения аудиопроцессора

Схема блока управления

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

ИК пульт дублирует работу энкодера и кнопок. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define IR_2 0x2FDB24D // Кнопка menu

#define IR_4 0x2FD906F // Кнопка >

#define IR_5 0x2FDF20D // Кнопка <

#define IR_6 0x2FD6A95 // Кнопка IN

#define IR_7 0x2FDF00F // Кнопка MUTE

#define IR_8 0x2FD00FF // Кнопка STANDBY (POWER)

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

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч:

Показать полностью 9
21

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino)

Ранее в статье рассматривался пример создания на основе аудиопроцессора LC75421M регулятора громкости и тембра с использованием дисплея LCD1602 + I2C, в этой статье аналогичный пример, но с использованием дисплея 0.96′ I2C 128X64 OLED.

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

В OLED дисплее отсутствует дополнительный слой подсветки всей поверхности экрана. Каждый пиксел, формирующий изображение, испускает самостоятельное свечение. При этом картинка получается яркой и контрастной.

Управление OLED дисплеем в данном примере осуществляется при помощи шины I2C.

Параметры дисплея SSD1306:

  • Технология дисплея: OLED

  • Разрешение дисплея: 128 на 64 точки

  • Диагональ дисплея: 0,96 дюйма

  • Угол обзора: 160°

  • Напряжение питания: 2.8 В ~ 5.5 В

  • Мощность: 0,08 Вт

  • Габариты: 27.3 мм х 27.8 мм х 3.7 мм

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Регулятор громкости содержит два основных блока, первый блок микроконтроллерный (Arduino Nano) с органами управления и индикации, второй блок плата аудиопроцессора.

Регулятор громкости и тембра на LC75421M обладает следующими характеристиками:

  • Регулировка громкости от -76 до 0 дБ (шаг 1 дБ)

  • Регулировка баланса ±4 дБ

  • Регулировка BASS от 0 до 14 шагов (±11.9 дБ)

  • Регулировка TREBLE от 0 до 14 шагов (±11.9 дБ)

  • Регулировка SUPER BASS от 0 до 10 шагов (0…+20 дБ)

  • 5-и канальный селектор входов с независимой регулировкой предусилителя от 0 до 18,75 дБ

  • Режим MUTE

  • Режим STANDBY

  • Часы с коррекцией времени

  • Напряжение питания от 7,5 до 10 В

Основное управление параметрами аудиопроцессора будет осуществляться при помощи энкодера (KY-040) и 3-х кнопок, так же будет применен ИК пульт который будет дублировать энкодер и кнопки управления.

Коррекция времени часов: в режиме STANDBY нажать и удерживать кнопку энкодера, далее нажать кнопки INPUT,  MUTE для изменения времени часов, минут.

Схема подключения аудиопроцессора

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Схема блока управления

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

ИК пульт дублирует работу энкодера и кнопок. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define IR_2 0x2FDB24D // Кнопка menu

#define IR_4 0x2FD906F // Кнопка >

#define IR_5 0x2FDF20D // Кнопка <

#define IR_6 0x2FD6A95 // Кнопка IN

#define IR_7 0x2FDF00F // Кнопка MUTE

#define IR_8 0x2FD00FF // Кнопка STANDBY (POWER)

Для получения кодов кнопок Вашего пульта загрузите скетч:

#include <boarddefs.h> // входит в состав библиотеки IRremote
#include <IRremote.h> // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip

IRrecv irrecv(12); // указываем вывод модуля IR приемника
decode_results ir;

void setup(){
irrecv.enableIRIn();
Serial.begin(9600);
}

void loop(){
if ( irrecv.decode( &ir )) {Serial.print(«0x»);Serial.println( ir.value,HEX);irrecv.resume();}
}

Далее откройте монитор порта, в котором при нажатии кнопки пульта Вы увидите коды кнопок.

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч - http://rcl-radio.ru/?p=128826

Показать полностью 4
333

Радио модули NRF24L01 (ARDUINO)

Радио модули NFR24L01 работают в диапазоне частот 2.4-2.5 ГГц, поддерживают передачу данных до 2 Мбит/с и могут работать на 125 каналах. Радио модули выпускаются малой мощности (до 100 метров или около 30 метров в помещении) и с усилителем к которому можно подключить внешнюю антенну (до 1000 м).

Один модуль способен поддерживать связь сразу с шестью приемниками или передатчиками, то есть можно объединить сразу семь устройств в общую радиосеть на частоте 2,4 ГГц. Скорость беспроводного соединения можно настраивать: 250kbps, 1Mbps или 2Mbps, а так же можно изменять мощность в пережиме передатчика от -18dBm до 0dBm.

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Основные параметры радио модуля NRF24L01

  • Напряжение питания от 1.9 В до 3.6 В

  • Потребляемый ток при мощности 0dBm 11.3 мА

  • Потребляемый ток при передачи 2 Мбит 13.5 мА

  • Частота 2,4 – 2,525 ГГц

  • Скорость передачи: 250 Кбит, 1 Мбит или 2Mбит

  • Программируемая выходная мощность: 0, -6, -12 и -18 dBm

Схема подключения

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

При передачи сигнала радио модуль NRF24L01 кратковременно может потреблять большой ток, поэтому рекомендуется по питанию установить электролитический конденсатор емкость от 10 до 220 мкФ.

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

Перед загрузкой скетчей Вам понадобятся следующие библиотеки:

Тестовый скетч

В этом примере один радио модуль работает в качестве передатчика, а другой в качестве приемника. Передатчик передает два числа, а приемник принимает сигнал и выводит в монитор порта эти числа.

ПЕРЕДАТЧИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN)

int data[2]; 

void setup(){

radio.begin();

radio.setChannel(5); // канал от 0 до 125

radio.setDataRate (RF24_1MBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel (RF24_PA_HIGH); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm

radio.openWritingPipe (0xA0A0A0A001);

}

void loop(){

data[0] = 1234;

data[1] = 5678;

radio.write(&data, sizeof(data));

delay(1000);

}

ПРИЕМНИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN) 

int data[2]; 

void setup(){

delay(1000);

Serial.begin(9600);

radio.begin();

radio.setChannel(5); // канал от 0 до 125 radio.setDataRate (RF24_1MBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel (RF24_PA_HIGH); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm r

adio.openReadingPipe (1, 0xA0A0A0A001);

radio.startListening (); // radio.stopListening ();

}

void loop(){

if(radio.available()){

radio.read(&data, sizeof(data));

Serial.println(data[0]);

Serial.println(data[1]);

} }

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Управление 4-я реле

В этом примере можно управлять включением и выключением 4-х реле или других исполнительных уст-в. В передатчике используются 4 кнопки, при нажатии на кнопку в приемнике меняет логическое состояние один их выходов к которому можно подключить модуль реле.

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

ПЕРЕДАТЧИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN) 

int data_reg;

bool w1,w2,w3,w4; 

void setup(){

delay(1000);

Serial.begin(9600);

radio.begin();

radio.setChannel(5); // канал от 0 до 125

radio.setDataRate(RF24_250KBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel(RF24_PA_MIN); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm

radio.openWritingPipe(0xA1A1A1A102);

pinMode(2,INPUT_PULLUP);

pinMode(3,INPUT_PULLUP);

pinMode(4,INPUT_PULLUP);

pinMode(5,INPUT_PULLUP);

}


void loop(){

if(digitalRead(2)==LOW && w1==0){

w1=1;

data_reg |= (1<<0);

delay(200);

}

if(digitalRead(2)==LOW && w1==1){

w1=0;

data_reg &=~(1<<0);

delay(200);

if(digitalRead(3)==LOW && w2==0){

w2=1;

data_reg |= (1<<1);

delay(200);

}

if(digitalRead(3)==LOW && w2==1){

w2=0;

data_reg &=~(1<<1);

delay(200);

if(digitalRead(4)==LOW && w3==0){

w3=1;

data_reg |= (1<<2);

delay(200);

}

if(digitalRead(4)==LOW && w3==1){

w3=0;

data_reg &=~(1<<2);

delay(200);

if(digitalRead(5)==LOW && w4==0){

w4=1;

data_reg |= (1<<3);

delay(200);

}

if(digitalRead(5)==LOW && w4==1){

w4=0;

data_reg &=~(1<<3);

delay(200);

radio.write(&data_reg, sizeof(data_reg));

Serial.println(data_reg);

delay(100);

}

ПРИЕМНИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN) 

int data_old,data;

unsigned long times; 

void setup(){

delay(1000);

Serial.begin(9600);

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

radio.begin();

radio.setChannel(5); // канал от 0 до 125 radio.setDataRate(RF24_250KBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel(RF24_PA_MIN); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm

radio.openReadingPipe(1, 0xA1A1A1A102);

radio.startListening();

}

void loop(){

if(radio.available()){

radio.read(&data, sizeof(data));

Serial.println(data); 

if(((data >> 0) & 1) ==1){

digitalWrite(2,HIGH);

}

else{digitalWrite(2,LOW);

}

if(((data >> 1) & 1) ==1){

digitalWrite(3,HIGH);

}

else{digitalWrite(3,LOW);

}

if(((data >> 2) & 1) ==1){

digitalWrite(4,HIGH);

}

else{digitalWrite(4,LOW);

}

if(((data >> 3) & 1) ==1){

digitalWrite(5,HIGH);

}

else{

digitalWrite(5,LOW);

} } }

Примеры использования

Электронный термометр DS18B20

В следующем примере к передатчику подключен цифровой датчик температуры DS18B20, передатчик передает температуру, а приемник выводит ее на дисплей LCD1602_I2C. В момент получения информации на экран выводится символ «*».

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост
Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Терморегулятор

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Во всех выше показанных примерах радио модули разделены на приемники и передатчики, в это примере каждый радио модуль работает как приемопередатчик.

Базовый модуль терморегулятора содержит дисплей LCD1602 с модулем I2C и энкодер для установки температуры регулирования. Модуль датчика и управления нагревательным элементом измеряет температуру и каждые 2 секунды передает ее значение в базовый модуль, базовый модуль получает значение температуры и выводит ее на дисплей, при помощи энкодера в базовом модуле можно изменить температуру регулирования, температура регулирования каждые 2 секунды передается в модуль датчика. Оба модуля основное время работают как приемники и раз в 2 секунды переходят в режим передатчика передавая необходимую информацию. Модуль датчика в зависимости от текущей температуры и температуры регулирования управляет цифровым выходом D3 к который может управлять нагревательным элементом.

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост
  • Температура регулирования

  • Индикатор получения информации (в момент приема выводится символ *)

    Скетчи - http://rcl-radio.ru/?p=128866

Показать полностью 7
35

Аудиопроцессор PT2315 (Arduino)

ИМС PT2315 (аналог TDA7315) представляет собой простой стерео аудиопроцессор, который позволяет регулировать громкость и тембр.

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Основные параметры аудиопроцессора PT2315:

  • Напряжение питания от 6 до 10 В

  • Ток потребления от 30 до мА

  • Максимальное входное напряжение 2,5 Vrms

  • Коэффициент гармоник 0,07 %

  • Разделение каналов 85 дБ

  • Отношение сигнал/шум 95 дБ

  • Регулировка громкости от -70 до 0 дБ с шагом регулировки 1,25 дБ

  • Регулировка тембра (BASS, TREBLE) ±14 дБ с шагом регулировки 2 дБ

  • Аттенюаторы выходов (CHL, CHR) от 0 до 30 дБ с шагом регулировки 1,25 дБ

  • Управление I2C

Библиотека — https://github.com/liman324/PT2315.git

Тестовый скетч:

#include <Wire.h>

#include <PT2315.h> 

PT2315 pt; 

void setup() {

Serial.begin(9600);

delay(600);

audio();

void loop() {  }

void audio(){

pt.set_volume(0); // int 0...56 === 0...-70 dB step 1.25 dB

pt.set_att_l(0); // int 0...24 === 0...-30 db step 1.25 dB

pt.set_att_r(0); // int 0...24 === 0...-30 db step 1.25 dB

pt.set_loudness(1); // bool 0...1 = on...off

pt.setBass(0); // int -7...+7 === -14...+14 dB step 2 dB

pt.setTreble(7); // // int -7...+7 === -14...+14 dB step 2 dB

}

На базе Adruino Nano используя аудиопроцессор PT2315 можно собрать простой регулятор громкости и тембра.

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Регулятор громкости позволяет регулировать громкость, тембр НЧ, тембр ВЧ и баланс, так же поддерживает функцию MUTE.

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост
Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

ИК пульт дублирует работу энкодера и кнопу MUTE. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define IR2 0x2FDB24D // button encoder

#define IR3 0x2FDF00F // mute

#define IR4 0x2FD906F // >>>

#define IR5 0x2FDF20D // <<<

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

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч http://rcl-radio.ru/?p=128899

Показать полностью 5
26

АЦП AD7793 (Arduino)

AD7793 — малошумящий 24-разрядный сигма-дельта АЦП с тремя дифференциальными аналоговыми входами.

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

АЦП AD7793 предназначен для высокоточного измерения постоянного напряжения, может применяться для измерения напряжения термопар и других датчиков с выходным напряжением в несколько единиц или десятков мВ. Так имеет два выхода стабилизированного тока для питания термометров сопротивления.

Входное напряжение АЦП ограничено напряжением опорного источника питания которое может иметь значения 1,25 или 2,5 В. В данной статье рассмотрен пример использования внутреннего источника опорного  напряжения которое имеет значение 1,17 В.

АЦП имеет три дифференциальных входа, вход IN3 может использоваться как вход для подачи внешнего опорного напряжения. Входы АЦП могут работать в дифференциальном и несимметричном режиме.

Схема подключения к Arduino

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Характеристики AD7793:

  • Напряжение питания цифровое от 2,7 до 5,25 В

  • Напряжение питания аналоговое от 2,7 до 5,25 В

  • Эффективное разрешение до 23 бит

  • Ток потребления 400 мкА

  • Ток потребления в режиме ожидания не более 1 мкА

  • Частота измерения от 4,17 Гц до 500 Гц

  • 3 дифференциальных входа

  • Внутренний источник опорного напряжения 1.17 ± 0.01%

  • Режим измерения напряжения аналогового питания

  • Встроенный датчик температуры (точность ±2°С, необходима калибровка)

  • Самокалибровка шкалы измерения и нуля

  • Два источника тока для питания датчиков

  • Встроенный программируемый усилитель входного сигнала с множителем от 1 до 128

Разрешение в зависимости от множителя входного усилителя (bit) и режима работы входа (Uref = 2.5 V)

несимметричный (дифференциальный) вход

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Разрешение в зависимости от множителя входного усилителя (мкВ) (Uref = 2.5 V)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Управление АЦП 4-проводное SPI, используются пины CS, DOUT, DIN, SCLK. Режим работы шины SPI показаны на рисунках (чтение/запись)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост
АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

В режиме записи данных в регистр сигнал разрешения работы CS необходимо перевести низкий уровень, далее подавать синхроимпульсы SCLK одновременно с данными DIN, запись битов происходит на восходящем фронте синхроимпульса.

При чтении после перевода сигнала разрешения работы CS в низкий уровень необходимо дождаться сигнала готовности АЦП, как только уровень DOUT/RDY станет низким, можно считывать данные. Считывание бита происходит на восходящем фронте синхроимпульса.

Управление АЦП осуществляется через несколько регистров, некоторые из них доступны для записи и чтения, другие только для чтения:

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Communications Register During a Write Operation — регистр связи (Write)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

При записи или чтении регистров сначала необходимо воспользоваться регистром связи. В нем задается адрес для чтения или записи последующего регистра.

Status Register During a Read Operation — регистр состояния (Read)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост
  • RDY — бит готовности АЦП к считываю данных

  • ERR — ошибка считывания

  • 0/1 — тип чипа (AD7792/AD7793)

  • CH0…CH2 — индикатор активного входа

Mode Register — регистр режима (Raad/Write)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

16-и битный регистр содержит основные настройки работы АЦП

  • U/B — дифференциальный / несимметричный вход

  • G0…G2 — коэффициент усиления усилителя

  • BUF — буферизация

  • REFSEL — выбор внутреннего или внешнего источника опорного напряжения

Data Register — регистр данных (Read)

24-х битный регистр данных, доступен только для чтения

ID Register — Идентификационный регистр (Read)

Идентификационный номер для AD7792/AD7793 сохраняется в реестре идентификаторов.

IO Register — (Raad/Write)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Регистр для управления источниками тока.

OFFSET Register — регистр смещения (Raad/Write)

24-х битный регистр, содержит коэффициент смещения шкалы.

FULL-SCALE Register — масштабный регистр (Raad/Write)

24-х битный регистр, содержит калибровочные коэффициенты шкалы.

Ниже показан пример скетча позволяющий провести измерения напряжения аналогового питания, напряжение подаваемое на вход 1 с множителем 16 работающего в дифференциальном режиме, а так же напряжение встроенного датчика температуры.

Читать дальше - http://rcl-radio.ru/?p=128932

Показать полностью 10
46

Легендарный радиоприемник Советского Союза. VEF 12

Сегодня я расскажу наверно о самом известном и популярном советском радиоприемнике - это ВЭФ 12. Он является продолжением не менее известной линейки радиоприемников под общим именем "Спидола".

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

Радиоприемник выпускался с 1967 года на Рижском электротехническом заводе ВЭФ. Он, как и его предшественники собран на 10 транзисторах, но внешний вид, схема, компоновка узлов и деталей значительно отличаются.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

Для улучшения звуковых характеристик в приемнике установлен громкоговоритель 1ГД-4 эллиптической формы. Шкала настройки стала более растянутой и получила подсветку, которая включалась кнопкой на передней панели.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

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

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

Во внешнем оформлении стало больше металлических деталей и молдингов, что в сочетании с глянцевой поверхностью пластикового корпуса сделало его внешне более эффектным.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

На задней панели приемника появилось гнездо для подключения магнитофона или внешней активной акустической системы и гнездо для подключения наушников. Питание приемника осуществлялось от 6 элементов 373, которого хватало до 200 часов работы. Одним из недостатков приемника являлась задняя крышка, она изготавливалась из белой пластмассы и практически на всех приемниках со временем ее поверхность деформировалась, небольшая деформация есть и на моем экземпляре. На следующей модели приемника ВЭФ-201 эта проблема была решена.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

В радиоприемнике две встроенные антенны: магнитная антенна для приема ДВ и СВ, а также внешняя телескопическая антенна для приема Кв диапазона. Также имеется гнездо для подключения внешней антенны.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

Стоил радиоприемник 93 рубля 02 копейки, но не смотря на это пользовался огромной популярностью у радиолюбителей. Выпускался и экспортный вариант приемника с диапазоном 13 метров.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

Популярностью можно объяснить и огромный тираж этого радиоприемника, уже в 1970 году был выпущен миллионный экземпляр ВЭФ 12!

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост

Радиоприемник ВЭФ и сегодня пользуется популярностью у коллекционеров, хоть и слушать в эфире сейчас особо нечего.

Но если у вас есть желание послушать эфир, радиолюбителей, то советую обратить внимание на действительно народный и популярный приемник Degen DE-1103, он уже много лет пользуется заслуженной популярностью у радиолюбителей. Китайские производители достаточно часто радую радиолюбителей хорошими приемниками, чего не скажешь об отечественных производителях. А ВЭФ 12 лучше поставить на полку как исторический экспонат.

Легендарный радиоприемник Советского Союза. VEF 12 Сделано в СССР, Техника, Изобретения, Радио, Радиотехника, СССР, Электроника, Длиннопост
Показать полностью 16
339

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х?

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



В наше время большинство портативных устройств работает на базе достаточно мощных микроконтроллеров, которые способны запускать даже интерпретируемый код на Lua/Python. Чего уж там говорить — даже современная кофеварка или умный электрочайник может быть в разы мощнее оригинального IBM-PC, не говоря уже о автомобильных бортовых компьютерах, которые зачастую мощнее топовых ПК из начала нулевых. Но давайте вспомним конец 90-х и начало 2000-х, когда разработка собственной электроники была практически недоступна рядовому пользователю, а микроконтроллеры программировались в основном только на ассемблере. Недавно я нашёл некоторую информацию о том, какой процессор вероятно использовался в таких знакомых нам приставках Brick Game, которые мы называли «Тетрисами»! Более того, мне удалось найти полный даташит с описанием всех модулей этого процессора, который гордо можно назвать «система на кристалле». Какой была разработка микроэлектроники в 90-х? Читайте в статье!

❯ Немного о «Тетрисе»


Пожалуй, Тетрис или Brick Game был одной из самых популярных портативных игровых консолей в странах СНГ. Появившись где-то в конце 90-х, этот гаджет быстро стал бестселлером среди детишек благодаря наличию сразу нескольких игр, полноценного ЖК-экрана, звука и невероятной дешевизны. Не знаю, сколько Тетрис стоил в момент выхода, но в нулевых цена на него была крайне низкой — около 100-200 рублей в зависимости от корпуса. Типичный школяр мог накопить на собственный Тетрис за несколько недель, что делало его самым доступным игровым девайсом на рынке.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Конечно же, на рынке уже были различные консоли с гораздо более богатым функционалом — например GameBoy и даже GameBoy Color с цветным дисплеем, а люди, родившиеся в конце 90-х или начале 2000-х уже застали PlayStation Portable с реально крутой 3D-графикой и телефоны с хорошим игровым потенциалом — как, например, SE K500i. Однако цена на них была непозволительной роскошью для небогатых семей: PSP стоила 250$ (около 7-8 тысяч рублей по тому курсу), плюс каждый UMD-диск с игрой стоил около 1.000 рублей, GameBoy были относительно редкими в России, а телефоны — это всё же прерогатива более юных ребят, да и в нулевых далеко не всем перепадал крутой K500i — чаще всего покупали телефон попроще типа Siemens A55 (грузчика помним?) или Motorola C350 (а мотоциклиста?). Поэтому тетрисы оставались чуть ли не единственным средством развлечения у небогатых ребят.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Ощутимым плюсом было и то, что Тетрис работал от батареек: они были не слишком дорогими в то время, а если носить с собой в кармане парочку, то можно не бояться, что консоль сядет в долгой дороге и продолжать себя забавлять, да и сам Тетрис работал довольно долго, мне хватало на неделю игры (может и меньше). Несмотря на низкое разрешением всего в 10x20 пикселей, Тетрис обладал достаточно большим монохромным дисплеем без подсветки, на котором было комфортно играть.
Ещё одним немаловажным плюсом консоли была возможность «кооперативной» игры и эдакого азарта: будучи неискушенными детьми, многие из нас пытались поставить рекорды и выбить как можно больший счёт в каждой из доступных игр. Чем больше счёт, тем ты круче среди друзей!

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Но что же у Тетриса «под капотом»? На чём он работал внутри? Недавно я нашёл информацию о том, что потенциально в Тетрисе могла использоваться 4х-битная система на чипеHoltek HT1130, которая использовалась в самой разной носимой электроники: от часов на батарейках, до полноценных игровых консолей. Причём я ничуть не преувеличиваю, это действительно SoC: уже в 90-х, тайваньская компания смогла объединить звуковой модуль, контроллер ЖК-дисплея, ввод/вывод и таймер в один чип! Однако тут важно понять, что 100% сказать, на чём работал Тетрис, нельзя — процессор спрятан под компаундом и у него нет корпуса с маркировкой, лишь «голый» кристалл. Тем не менее, мы можем предположить, что это был один из чипов Holtek и посмотреть, на чём же работала портативная электроника тех лет поближе!

Заранее прошу прощения за отсутствие нормальных фотографий. Под рукой у меня не оказалось «старого» Тетриса, а на новодельных показывать как-то не очень.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



На данный чипсет есть «утёкший» в сеть даташит с полным описанием регистров микроконтроллера и его ТТХ. Чип был спроектирован так, чтобы не требовать практически никакой обвязки в виде конденсаторов/резисторов и других SMD-элементов — он работал фактически напрямую от пальчиковых батареек и его легко было развести на плате даже начинающему инженеру. Микроконтроллер стабильно оперировал при напряжении от 2.4в до 3.3в, что позволяло просто вставить две последовательно соединенные AA или AAA батарейки с напряжением 1.5-1.6в и получить необходимое питание для работы всей «приставки».

❯ Вычислительное ядро


Саму систему на кристалле можно разделить на несколько соединенных модулей в один чип. Основным, конечно же, является 4х-битное вычислительное ядро неизвестной архитектуры, которое компания Holtek разработала сама или лицензировала как IP-ядро у другой компании для использования в собственном чипе (как, например, MediaTek лицензирует у ARM ядра Cortex). Система команд, по крайней мере, описание мнемоник ассемблера в даташите наводят на мысли о некоторой схожести с микроконтроллером Intel 8051 (однако 8051 был 8-битным) и в целом, напоминают типичную интеловскую архитектуру из 80х. Однако только по мнемоникам точно определить архитектуру невозможно: здесь есть «проприетарные» команды типа SOUND и TIMER.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост
Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост
Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост


Чип работает на частоте 1мгц от встроенного тактового генератора, большинство команд выполняется за один такт, максимум — два. Если говорить совсем грубо, то даже ATMega328 в Arduino условно в 16-раз мощнее HT1130, хотя это совсем некорректное сравнение.

Длина машинного слова HT1130 — 4 бита, что отсылает нас в начало 70х годов, если мы говорим о компьютерах. Это означает, что процессор «аппаратно» мог выполнять операции только с числами от 0 до 16, хотя при программной реализации мог пересчитывать хоть 32х-битные числа. Ширина шины данных — 12 бит, что позволяло адресовать вплоть до 4Кб встроенной ROM-памяти. Кроме того, в МК было встроено 128 ячеек оперативной памяти (или 64 байта), где в00H..7FHхранились временные данные программы (например, позиция танчиков на экране) и сE0H..FFHхранился «буфер» кадра, который определял текущую на экране. Также у микроконтроллера были следующие регистры:

  1. R0-R4 — регистры общего назначения. Пары из регистров используются для адресации памяти.

  2. ACC — регистр-аккумулятор, который хранит результаты текущей операции.

  3. PC — указатель на текущую инструкцию в ROM, которую выполняет процессор.

  4. Стековый регистр — судя по всему, «невидимая» связка регистров, которую процессор использует для хранения PC при вызове функций. Ограничен максимум двумя адресами, что не даёт возможность писать программы с вложенностью более двух функций.


С стековым регистром всё интересно получается. В отличии от привычных нам архитектур, HT1130 не хранит в этом регистре указатель на память, он сам по себе как-бы является стеком. Пример допустимого и недопустимого кода:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост

Выбор 4х-битного процессора очевиден — они очень недорогие в производстве и достаточно простые. Примеры использования 4х-битных архитектур можно найти даже в советских играх: например, в игре «Волк и яйца» (клоне Nintendo Game & Watch) использовалась «микроЭВМ» КБ1013ВК1-2.
В встраиваемой и переносной электронике, 4х-битные вычислительные ядра продолжают использоваться и сейчас: в калькуляторах, в пультах для управления техникой, в часах. Связано это с простой и дешевизной подобных решений, да и если честно, реализация этих устройств была готова ещё в прошлом веке. Зачем дополнительно тратить деньги на R&D существующих решений? :)

❯ Графика


HT1130 специально разрабатывался для переносимых устройств с новомодными LCD-дисплеями. В те годы было нормой, когда на дисплейной матрице не было собственного контроллера с распространенным интерфейсом по типу 8080 или MIPI: частенько, драйвер дисплея либо выделялся в отдельный чип, либо реализовывался прямо в системе на кристалле. У Brick Game был дисплей разрешением в 10x20 пикселей, причём кастомизированный — с «захардкоженными» значками и сегментными индикаторами:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Работа с дисплеем была не особо сложной: один сегмент памяти был отведен специально под эдакий «фреймбуфер» — всё, что мы записывали туда, контроллер дисплея моментально отображал на нашу ЖК-матрицу. Поскольку дисплей был одноцветным, без градаций цвета, память была организована 1 бит — 1 пиксель. Работать со всем этим было как-то так:

MOV A, 0 ; Первая часть адреса (если я не напутал endianness)

MOV R1, A

MOV A, 0b0111 ; Вторая часть адреса. Не удивляйтесь, что по факту получается 224 при 128 байт ОЗУ - часть адресного пространства была как-бы зарезервирована

MOV R0, A

MOV A, 1 ; Закрасим первый пиксель в строке

MOV [R1R0], A ; И запишем это значение в ОЗУ

Частичным доказательством того, что этот чип мог использоваться в Brick Game — это то, что компания Holtek производила готовые «игры на кристалле» — вероятно, уже запрограммированные с завода HT1130 с определенными играми:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Примечательно, что даташит на готовые игры датируются ноябрём 1998 года, в то время как даташит на HT1130 — 1999. Если у вас появился Тетрис раньше этого времени — напишите пожалуйста в комментариях!

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост

❯ Звук


Помимо этого, чипсет имел собственный генератор звука, или как вы вероятно подумаете — «пищалку». В чип (или SDK, если честно, не особо понятно из даташита) была уже встроена звуковая библиотека — причём половину из них как раз таки для игр, что ещё раз косвенно подтверждает догадки об использовании этого чипа в «Тетрисе». Всего поддерживалось до 16 «каналов», в которых было по 3 тональности. В звуковой библиотеке содержались следующие звуки:

  • Шумы

  • Мелодии

  • Выстрелы

  • Будильники



Управлять звуковым трактом было очень просто — буквально несколькими командами на ассемблере. Команда SOUND <номер канала> выбирала один из предопределенных звуков (причем не совсем ясно, где они хранились — возможно в ROM), а команда SOUND ONE/LOOP воспроизводила его в одном из режимов — один раз или повторяющийся. SOUND OFF же выключала звук совсем. Как-то так:

play:

SOUND A

SOUND ONE

SOUND OFF

CLC ; А если нет, то снова выполняем, пока не переполнится, эта операция очищает флаг переноса

loop:

INC A ; Увеличиваем значение в аккумуляторе

JC play ; Если флаг переноса установлен, то наш "таймер" как-бы переполнился и пора снова проиграть звук

JMP loop;

Совсем немудрено, согласитесь? :)

❯ Порты ввода/вывода и кнопки


Кроме этого, HT1130 имел несколько портов ввода-вывода, которые, однако, назвать GPIO нельзя — было 12 портов для вывода, которые могли читать логический уровень (для кнопок), и 4 пина, который мог задавать логический уровень (например, управлять вибромотором или светодиодом). Настройки портов задавались с помощью флагов: можно было настроить встроенные pull-up резисторы и они могли вызывать прерывания при переходе из высокого уровня в низкий.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Выходной порт мог быть сконфигурирован под тип выхода — CMOS или NMOS. Работа с портами шла с помощью команд IN и OUT — как в x86, а обрабатывать их можно было как-то так:

loop: IN A,0b00110010 ; Загрузить в аккумулятор значение порта PM

AND A,0b0001 ; Отсекаем биты состояний других кнопок и проверяем, нажата ли первая кнопка?

JNZ A, btn_pressed ; Если в аккумуляторе не 0 (а значит кнопка нажата) - то переходим на другую метку

JMP loop ; Если нет - то проверяем по новой

btn_pressed:

SOUND 0

SOUND ONE ; Воспроизвести звук при нажатии


❯ Таймер


В чипсете есть встроенный таймер — ну его ж не просто так для часов использовали. :) Основная суть работы аппаратных таймеров заключается в том, что его тактирует какой-либо внешний тактовый генератор с определенным делителем, в нашем случае — от 1 до 6 относительно системного генератора частоты (т.е 1мгц) и с определенной частотой он делает инкремент внутреннего регистра. Как только регистр переполняется — он очищается и вызывается соответствующее прерывание в основном процессоре.

Это позволяет регулировать скорость работы таймера, а посчитать количество тиков в таком случае не особо сложно. Однако учтите, что чем выше делитель таймера (а значит и обратно-пропорционально снижается точность таймера) — тем реже вызываются прерывания и меньше «кушают» наше процессорное время!

❯ Можно ли написать свою программу для Тетриса?


К сожалению, написать какую-нибудь свою игру для этой консоли в домашних условиях невозможно — таких удобных инструментов для прошивки, как у AVR ещё не было. Holtek предлагала собственный SDK, в которое входила IDE, ассемблер и симулятор отладки финальной программы. Однако дабы получить настоящее «хардварное» устройство, необходимо было заказывать у компании Holtek производство кастомизированного чипа с вашей программой на борту.

Чипсет использовал настоящую масочную Read-Only Memory, которая прожигалась один раз и навсегда на заводе. Производитель электроники отсылал скомпилированную программу Holtek, а они в свою очередь производили кастомный чип с прошитой программой. Несмотря на всю простоту ассемблера и устройства в целом, самому под него ничего написать не получится — внешних шин то у него нет. :(

Однако, в наше время можно разработать и собрать «Тетрис» самому: в том числе, с цветным дисплеем и на базе гораздо более мощного железа! Тут тебе и готовые мощные микроконтроллеры, и возможность собрать приставку на базе легендарного процессора Z80, да при желании можно симулировать почти настоящий HT1130 на FPGA!

❯ Заключение


Разработка вычислительной и при этом недорогой электроники в 90-х было весьма веселым занятием. Несмотря на то, что устройства были на первый взгляд достаточно примитивными, в них всё равно крылось много разных нюансов, которые ограничивали программистов во многом.

Однако embedded-разработка тех лет была весьма интересной: когда полноценные игры вмещали в ПЗУ размером пару килобайт, на ремейки Space Invaders на современных движках весом в под сотню мегабайт смотришь с некоторой улыбкой. :)

Спасибо за наводку ресурсу retroscene:
Пост Legnahar, который один из первых опубликовал предположения насчет HT1130 и комментарию =A=L=X= под тем же постом.

Показать полностью 13
Отличная работа, все прочитано!