Подскажите пожалуйста, есть такая штука: А есть что-то подобное только SRAM (32k) и хотелось бы i2C.....
Ага, заказал https://www.chipdip.ru/product/23k256-i-sn Надеюсь что смогу обычным паяльником припаять к переходнику.....
что общего между картинкой на сайте и тем что выдадут в магазине? Ожидается поступление на склад г.Москва: 30 апреля 2020 г. нухз...
[QUOTE="Ожидается поступление на склад г.Москва: 30 апреля 2020 г. нухз...[/QUOTE] Мне уже отгрузили и едет.... они есть в наличии, а "Ожидается поступление на склад" это в смысле что они ишо привезут к себе на склад )))
Ммммм... Может и ничего - но. Представьте, вам рекламируют невесту, но не показывают ее лица ! Срамота.
Прикрутил.... вроде как даже и работает.... Хотя не уверен что правильно SPI инициализировал.... Код (C++): // Данный код будет работать только на платах с чипом ATmega328P например // Arduino UNO, NANO // Он использует интрефейс SPI на пинах // 13 - SCK, 12 - MISO, 11 - MOSI, 10 - SS // Микросхемы памяти SRAM 23K256, 23K512 void setup (void) { // отладка Serial.begin (115200); // Настройка SPI как мастера DDRB |= (1 << PB2) | (1 << PB3) | (1 << PB5); // Настроить выводы MOSI,SS,SCK на выход PORTB |= (1 << PB2); // Установить "1" на линии SS /* Enable SPI, Master, set clock rate fck/4 */ SPCR = (1 << SPE) | (1 << MSTR); } uint8_t read_byte(uint16_t address) { uint8_t read_byte; // Write address, read data PORTB &= ~(1 << PB2); // Установить "0" на линии SS SPDR = 3; // Режим чтения байта из ячейки памяти по адресу address while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи SPDR = address >> 8; // Старший байт адреса while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи SPDR = address; // Младший байт адреса while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи SPDR = 255; // Байт "пустышка" чтобы прочитать байт из ячейки while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи read_byte = SPDR; // Читаем байт записанный по адресу address PORTB |= (1 << PB2); // Установить "1" на линии SS return read_byte; // Возвращаем полученый байт из ячейки памяти } void write_byte(uint16_t address, uint8_t data_byte) { PORTB &= ~(1 << PB2); // Установить "0" на линии SS SPDR = 2; // Режим записи байта в ячейку памяти по адресу while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи SPDR = address >> 8; // Старший байт адреса while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи SPDR = address; // Младший байт адреса while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи SPDR = data_byte; // Записываем байт в ячейку по адресу address while (!(SPSR & (1 << SPIF))) ; // Дождаться окончания передачи PORTB |= (1 << PB2); // Установить "1" на линии SS } void loop (void) { char b; // диапазоны адресов для // 23K256 0....32767 // 23K512 0....65535 // Пишем байт в ячейку с адресом 535 write_byte(535, 'A'); // Читаем байт из ячейи с адресом 535 b = read_byte(535); delay (1000); // Выводим значение в монитор порта Serial.println(b); }