Ардуино - запись звука

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

roman.com, насчет проверок не знаю
а вот запустить что-то стандартное ардуиновсокое и посмотерть что оно выдасть
типа вот этого


Спойлер

Код: Выделить всё

/*
  SD card test

  This example shows how use the utility libraries on which the'
  SD library is based in order to get info about your SD card.
  Very useful for testing a card when you're not sure whether its working or not.

  The circuit:
    SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module.
 		Pin 4 used here for consistency with other Arduino examples


  created  28 Mar 2011
  by Limor Fried
  modified 9 Apr 2012
  by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 4;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("\nInitializing SD card...");

  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card inserted?");
    Serial.println("* is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    while (1);
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.println();
  Serial.print("Card type:         ");
  switch (card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    while (1);
  }

  Serial.print("Clusters:          ");
  Serial.println(volume.clusterCount());
  Serial.print("Blocks x Cluster:  ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks:      ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("Volume type is:    FAT");
  Serial.println(volume.fatType(), DEC);

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
  Serial.print("Volume size (Kb):  ");
  Serial.println(volumesize);
  Serial.print("Volume size (Mb):  ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Gb):  ");
  Serial.println((float)volumesize / 1024.0);

  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);

  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop(void) {
}
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Ардуино - запись звука

Сообщение Martian »

[uquote="Jack_A",url="/forum/viewtopic.php?p=4240177#p4240177"]У меня такое смутное убеждение, что написать для 8-биток что-то сложнее помигать диодами - да на высокоуровневом - это как[/uquote]Не обобщайте. С обычным Cи, который не дваждыплюсанутый, прекрасно всё работается. И в большинстве случаев, всё зависит от писателя.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

флешки капризные... бывает зависают)) поэтому я от них отказался...

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

я подключил к AVR и прочитал все сектора...
сектора.jpg
(18.84 КБ) 56 скачиваний
затем стёр все сектора... записал туда все нули... 000000000000000...
после вставил в ПК...
ПК ответил "диск не отформатирован. Отформатировать ? Нажмите да"
нажал Да))
через две минуты... у меня опять рабочая флешка))
:tea:
есть ещё бесплатные программы по восстановлению данных с флешек... но то такое... на любителя)) на AVR получается круче))
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Ардуино - запись звука

Сообщение Martian »

Конечно. АВР-то у каждого есть, не то что комп. В утилитах-то всего-навсего могут тип контроллера учитывать, его внутренние всякие фишки-плюшки... нафиг не нужно, запишем нолики в авр, это круто... У Вас, roman.com, какое-то странное увлечение чашкой. Что-то не то пьёте...
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Ардуино - запись звука

Сообщение musor »

страны вы люди имея комп с тонами софта в интернете зачем гоношить приблуду на мк...
любую флеху можно проверить и переформатировать с проверкой сектороф по заводу софтом под ее продной к4онтролер
при этом не удивляйтесь если 16/32гБТ вдрук потом станет 8или даже 2гбт
прпосто обнарпужиф в секции неск битых ячек чисто короых болше резервной зоны контролер отсекает часть нанда с битыми ячейками уменшая обьем -зато оставшие будуть работать и держать даные надежно...

Добавлено after 2 minutes 27 seconds:
а ваши потуги с принудителной записью о или 1 в каждую ячейку самобман... каки попытка указать обьем болше физической адресации НАНД
допустим винда проведет форматирование без проверки сектороф =но такая флеха будет портить и тьерять даные -оно вам надо???
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

[uquote="Morroc",url="/forum/viewtopic.php?p=4240180#p4240180"]во маньяки в тему слетелись...[/uquote]
ты ещё маньяков не видел))
а как насчёт много ядерных AVR ? )) с синхронизацией до машинного такта... от одного кварцевого генератора... с распределёнными вычислениями... написано на ассемблере))
многоядерный_AVR.jpg
(94.47 КБ) 55 скачиваний
:))
Martian писал(а):какое-то странное увлечение чашкой.
это чай)) просто крепкий чай))
:))
musor писал(а):страны вы люди имея комп с тонами софта в интернете зачем гоношить приблуду на мк...
нормальные мы люди)) прост она ПК это делать не интересно))
а номер контроллера может читать и AVR...
на самом деле весь тот софт на компе и AVR... используют одни и те же команды... согласно одному и тому же даташиту))
olegue писал(а):насчет проверок не знаю
а как насчёт... шифрования ?
у тебя в ардуино есть функция шифрования флешки ?
8)
в наше трудное время... все секретные переговоры... записанные на наш самодельный диктофон... не должны попасть в руки к нашим врагам ! ))
:kill:
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

Вот между работой с eeProm и sd card есть разница как я понял. Она заключается в том ,что в еепром можно записать в любой байт по адресу и также считать, а в sd карта все делается блоками по 512байт, еще и буфер каой то есть.

Объясните простыми словами как пишутся и читаются данные на карту. То что постил roman.com для меня пока слишком сложно.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

ты хорошо себе представляешь как записать EEPROM ?

// запись EEPROM:

EEAR = a; // пишем адрес ячейки куда хотим записать
EEDR = b; // пишем данные которые хотим записать (1 байт)
EECR |= 0b00000100; // пишем команду "разрешить запись EEPROM"
EECR |= 0b00000010; // пишем команду "запись EEPROM"
while(EECR & 0b00000010); // ждём окончание записи EEPROM

*Примечание:
буква "A" - это адрес.
буква "D" - это данные.
буква "C" - это команда.

Тоже самое для флешки))


// запись флешки:

tx3=0x58; SPI3(); // пишем команду "запись флешки"

tx3=(x>>24); SPI3(); // пишем адрес сектора куда хотим записать
tx3=(x>>16); SPI3(); // пишем адрес сектора куда хотим записать
tx3=(x>>8); SPI3(); // пишем адрес сектора куда хотим записать
tx3=x; SPI3(); // пишем адрес сектора куда хотим записать

for (a=0; a<512; a++) {
tx3=ADC; SPI3(); // пишем данные которые хотим записать (512 байт)
};

while ( x1 != 0xFF ) {
tx3=0xFF; SPI3(); x1=rx3; // ждём окончание записи флешки
};

всё))

и в чём разница между EEPROM и флешкой ? Только в том что в EEPROM пишем по 1 байту, а на флешку пишем блоками по 512 байт. Вот и вся разница))
:)
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

и еще кругом пишут что есть какой -то буфер?

Добавлено after 15 minutes 7 seconds:
roman.com писал(а):у, а на флешку пишем блоками по 512 байт.
и этот блок нужно где-то накопить?
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Ардуино - запись звука

Сообщение Ivanoff-iv »

не обязательно, он может и во флешке копиться
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

нет никакого буфера)) мы сами его себе придумали...))

флешке не нужны никакие буферы... берешь флешку и пишешь сразу 512 байт без всяких буферов))

Добавлено after 20 minutes:
olegue писал(а):и этот блок нужно где-то накопить?
не нужно ничего нигде накапливать.

берёшь флешку и пишешь...

// запись флешки:

tx3=0x58; SPI3(); // пишем команду "запись флешки"

tx3=0; SPI3(); // пишем адрес сектора куда хотим записать
tx3=0; SPI3(); // пишем адрес сектора куда хотим записать
tx3=0; SPI3(); // пишем адрес сектора куда хотим записать
tx3=0; SPI3(); // пишем адрес сектора куда хотим записать

for (a=0; a<512; a++) {
tx3=0; SPI3(); // пишем данные которые хотим записать - 512 байт и все нули
};

while ( x1 != 0xFF ) {
tx3=0xFF; SPI3(); x1=rx3; // ждём окончание записи флешки
};

в сектор 0000 будут записаны все нули...

00000000000000000000000000000000000...
00000000000000000000000000000000000...
00000000000000000000000000000000000...
00000000000000000000000000000000000...
.....
и т.д.

всего 512 байт и все нули
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

Код: Выделить всё

  
*/
 
#include <Wire.h>                           // Подключаем библиотеку Wire                           
#include <TimeLib.h>                        // Подключаем библиотеку TimeLib
#include <DS1307RTC.h>                      // Подключаем библиотеку DS1307RTC
 
 
RTC.read(tm)

//tm.Hour;
//tm.Minute;
//tm.Second;
//tm.Day;
//tm.Month;
//tm.Year;

 


}

Ну вот прибавл часы , как теперь сделать что бы аудиофйлы получили время при записи на флэшку?

Добавлено after 4 minutes 20 seconds:
мне кажется что в этой процедуре (запись заголовка) нужно добавить время записи файлов

Код: Выделить всё

void writeWavHeader() { // write out original WAV header to file

  recByteSaved = 0;
  // rec.open("rec00000.wav", O_CREAT | O_TRUNC | O_RDWR);
  rec.open(NameRecord, O_CREAT | O_TRUNC | O_RDWR); /* Имя нового - записываемого файла на SD-карту. */

  rec.write("RIFF");
  byte1 = fileSize & 0xff;
  byte2 = (fileSize >> 8) & 0xff;
  byte3 = (fileSize >> 16) & 0xff;
  byte4 = (fileSize >> 24) & 0xff;
  rec.write(byte1);  rec.write(byte2);  rec.write(byte3);  rec.write(byte4);
  rec.write("WAVE");
  rec.write("fmt ");
  byte1 = waveChunk & 0xff;
  byte2 = (waveChunk >> 8) & 0xff;
  byte3 = (waveChunk >> 16) & 0xff;
  byte4 = (waveChunk >> 24) & 0xff;
  rec.write(byte1);  rec.write(byte2);  rec.write(byte3);  rec.write(byte4);
  byte1 = waveType & 0xff;
  byte2 = (waveType >> 8) & 0xff;
  rec.write(byte1);  rec.write(byte2);
  byte1 = numChannels & 0xff;
  byte2 = (numChannels >> 8) & 0xff;
  rec.write(byte1);  rec.write(byte2);
  byte1 = sampleRate & 0xff;
  byte2 = (sampleRate >> 8) & 0xff;
  byte3 = (sampleRate >> 16) & 0xff;
  byte4 = (sampleRate >> 24) & 0xff;
  rec.write(byte1);  rec.write(byte2);  rec.write(byte3);  rec.write(byte4);
  byte1 = bytesPerSec & 0xff;
  byte2 = (bytesPerSec >> 8) & 0xff;
  byte3 = (bytesPerSec >> 16) & 0xff;
  byte4 = (bytesPerSec >> 24) & 0xff;
  rec.write(byte1);  rec.write(byte2);  rec.write(byte3);  rec.write(byte4);
  byte1 = blockAlign & 0xff;
  byte2 = (blockAlign >> 8) & 0xff;
  rec.write(byte1);  rec.write(byte2);
  byte1 = bitsPerSample & 0xff;
  byte2 = (bitsPerSample >> 8) & 0xff;
  rec.write(byte1);  rec.write(byte2);
  rec.write("data");
  byte1 = dataSize & 0xff;
  byte2 = (dataSize >> 8) & 0xff;
  byte3 = (dataSize >> 16) & 0xff;
  byte4 = (dataSize >> 24) & 0xff;
  rec.write(byte1);  rec.write(byte2);  rec.write(byte3);  rec.write(byte4);

}
Добавлено after 23 minutes 19 seconds:
нагуглил что вот эту сточку надо дергать

rec.open(filename, O_CREAT | O_TRUNC | O_RDWR); /* Имя нового - записываемого файла на SD-карту. */
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Ардуино - запись звука

Сообщение Ivanoff-iv »

roman.com писал(а):флешке не нужны никакие буферы... берешь флешку и пишешь сразу 512 байт без всяких буферов))
Мне не доводилось писать на флешку, но, разве ей не нужно время, чтобы перенести данные из своего буфера в ПЗУ? можно ли в это время продолжать в неё писать? (захват то идёт непрерывно)
если есть файловая система, то как решается вопрос с фрагментацией файлов (особенно без буферов)?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Ардуино - запись звука

Сообщение Morroc »

[uquote="olegue",url="/forum/viewtopic.php?p=4240655#p4240655"]мне кажется что в этой процедуре (запись заголовка) нужно добавить время записи файлов[/uquote]
по идее раньше https://forums.adafruit.com/viewtopic.php?f=25&t=124195
или rec.open файл создает ?
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

что то наподобии вот этого

Код: Выделить всё

 if (!file.timestamp(T_CREATE, 2009, 11, 10, 1, 2, 3)) {

	    error("set create time failed");

	  }
Добавлено after 57 seconds:
Morroc писал(а):или rec.open файл создает ?
таки да


Используем SD и RTC (ну и Wire для RTC)

План реализации:

Пишем callback-функцию дату-время и подсовываем её SD.

Реализация:

Код: Выделить всё

	#include <SD.h>
	#include <Wire.h>
	#include <RTClib.h>	 	 
	RTC_DS3231 RTC;  // define the Real Time Clock object
	//------------------------------------------------------------------------------
	// call back for file timestamps
	void cb_dateTime(uint16_t* date, uint16_t* time) {
	  DateTime now = RTC.now();
	 
	  // return date using FAT_DATE macro to format fields
	  *date = FAT_DATE(now.year(), now.month(), now.day());
	  // return time using FAT_TIME macro to format fields
	  *time = FAT_TIME(now.hour(), now.minute(), now.second());
}

	//------------------------------------------------------------------------------

	void setup() {
	  Serial.begin(9600);
	  Wire.begin();
	  if (!RTC.begin()) {
	    Serial.println("RTC failed");
	    while(1);
	  };

	  // set date time callback function
	  SdFile::dateTimeCallback(cb_dateTime);
	 //теперь все операции с файлами должны брать время с RTC
	}
	//------------------------------------------------------------------------------
	void loop() {}
Источник: первая ссылка Гугла "arduino sd file date time".[/quote]

вот здесь интересно сделано. //теперь все операции с файлами должны брать время с RTC

Добавлено after 5 minutes 26 seconds:
http://arduino.ru/forum/programmirovani ... e-failov-n
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

Ivanoff-iv писал(а):
roman.com писал(а):флешке не нужны никакие буферы... берешь флешку и пишешь сразу 512 байт без всяких буферов))
Мне не доводилось писать на флешку, но, разве ей не нужно время, чтобы перенести данные из своего буфера в ПЗУ? можно ли в это время продолжать в неё писать? (захват то идёт непрерывно)
если есть файловая система, то как решается вопрос с фрагментацией файлов (особенно без буферов)?
выше всё обсуждали...

Добавлено after 1 minute 22 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=4239594#p4239594"]1.
у флешки есть своя собственная встроенная энергозависимая память... буфер SRAM на 512 байт.
2.
у флешки есть своя собственная встроенный энергонезависимая память ROM на 4 Гбайт.

Как происходит запись на флешку ?

1.
при записи на флешку все данные сначала записываются в буфер SRAM на 512 байт.
2.
после команды "запись" флешка перезаписывает все данные из буфера SRAM на 512 байт в память ROM на 4 Гбайт.

откуда я это знаю ? ))

потому что только после команды "запись" потребляемый ток подскакивает с ~0 mA до 7 mA.
т.е. флешка потребляет ток только в момент записи данных из буфера SRAM на 512 байт в память ROM на 4 Гбайт.
вот откуда я это знаю))
:)

поэтому мы спокойно можем начала писать данные ADC в буфер SRAM на 512 байт.
а потом, когда буфер SRAM на 512 байт заполнится, флешка по команде перезапишет данные из буфера SRAM на 512 байт в буфер ROM на 4 Гбайт.
:tea:

но тут другая проблема... самая главная))
а сколько время записи флешки ? За сколько флешка по команде перезапишет данные из буфера SRAM на 512 байт в буфер ROM на 4 Гбайт ?
судя по приборам... десятки миллисекунд !!!
это значит что мы должны сидеть и ждать...... пока флешка перезапишет данные из буфера SRAM на 512 байт в буфер ROM на 4 Гбайт... И получается что в это самое время мы не можем ничего писать на флешку... :shock:

вооооотттт.... )))

или всё таки можем ? ))
:))[/uquote]
и т.д.
[uquote="roman.com",url="/forum/viewtopic.php?p=4239502#p4239502"]а чтобы после наших издевательств мы могли вставить флешку в ПК и прочитать что мы там записали... нам нужно писать на флешку не просто по секторам... а писать согласно файловой системе... FAT32... FAT16... и т.д.)) а для этого надо писать отдельную функцию - работа с файловой системой...

https://cxem.net/mc/mc435.php


но мне и не нужно писать/читать флешки с ПК.)) Поэтому я и не писал функции работа с файловой системой...
а просто писать/читать на флешку картинки и звук... и даже видео... можно и без файловой системы))

я так и сделал))

тупо взял ATmega8 и подключил к ней флешку и Ethernet модуль...
сижу... пишу с ПК на флешку... картинки и звук и видео...
сижу... читаю с флешки на ПК... картинки и звук и видео...
картинки.jpg
звук.jpg
видео.jpg
и т.д.
:tea:[/uquote]
мы что будем переписывать весь форум по новой ? ))
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Ардуино - запись звука

Сообщение Morroc »

Ага, пока диктофон на меге8 не заработает)
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

[uquote="olegue",url="/forum/viewtopic.php?p=4240675#p4240675"]вот здесь интересно сделано.[/uquote]
как работает еепром на Ардуине уже проверил ?))

/////////////////////////////////////////////////////////////////////////////////////////// код для Ардуино
// запись EEPROM Ардуино:

EEAR = 1; // пишем адрес ячейки куда хотим записать 1
EEDR = 1; // пишем данные которые хотим записать 1
EECR |= 0b00000100; // пишем команду "разрешить запись EEPROM"
EECR |= 0b00000010; // пишем команду "запись EEPROM"
while(EECR & 0b00000010); // ждём окончание записи EEPROM

EEAR = 2; // пишем адрес ячейки куда хотим записать 2
EEDR = 2; // пишем данные которые хотим записать 2
EECR |= 0b00000100; // пишем команду "разрешить запись EEPROM"
EECR |= 0b00000010; // пишем команду "запись EEPROM"
while(EECR & 0b00000010); // ждём окончание записи EEPROM

EEAR = 3; // пишем адрес ячейки куда хотим записать 3
EEDR = 3; // пишем данные которые хотим записать 3
EECR |= 0b00000100; // пишем команду "разрешить запись EEPROM"
EECR |= 0b00000010; // пишем команду "запись EEPROM"
while(EECR & 0b00000010); // ждём окончание записи EEPROM
/////////////////////////////////////////////////////////////////////////////////////////// END

//потом читаем...

/////////////////////////////////////////////////////////////////////////////////////////// код для Ардуино
// читаем EEPROM Ардуино:

EEAR = 1; // пишем адрес ячейки которую хотим прочитать 1
EECR |= 0b00000001; // пишем команду "чтение EEPROM"
Serial.println(EEDR); // выводим в последовательный порт... или куда мы там обычно выводим... ))
// в буфере EEDR находятся считанные данные

EEAR = 2; // пишем адрес ячейки которую хотим прочитать 2
EECR |= 0b00000001; // пишем команду "чтение EEPROM"
Serial.println(EEDR); // выводим в последовательный порт... или куда мы там обычно выводим... ))
// в буфере EEDR находятся считанные данные

EEAR = 3; // пишем адрес ячейки которую хотим прочитать 3
EECR |= 0b00000001; // пишем команду "чтение EEPROM"
Serial.println(EEDR); // выводим в последовательный порт... или куда мы там обычно выводим... ))
// в буфере EEDR находятся считанные данные
/////////////////////////////////////////////////////////////////////////////////////////// END


можешь скопировать это всё в свою Ардуину ))
:tea:

Serial.println(" "); - это что за фигня какая-то ? )) типа терминала какого то...
наподобие этого... System.out.println(" ");

не знаю... куда вы там всё выводите... лично я всё вывожу сразу... в Интернет)) :)))
точнее в Ethernet...
а куда вы там всё выводите... я без понятия))
:tea:
Аватара пользователя
olegue
Собутыльник Кота
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Re: Ардуино - запись звука

Сообщение olegue »

roman.com писал(а):можешь скопировать это всё в свою Ардуину ))
и тогда мне не понадобится библиотека eeпром для Ардуино?


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

но по любому освоить запись ADC на влэшку надо обязательно.

Добавлено after 3 minutes 17 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=4240717#p4240717"]мы что будем переписывать весь форум по новой ? ))[/uquote]

я обязательно вернусь к тому что Вы написал, но чуть позже,я сначала хочу завершить этот проек и довести его до приемлегого состояния.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Ардуино - запись звука

Сообщение roman.com »

olegue писал(а):и тогда мне не понадобится библиотека eeпром для Ардуино?
не понадобится.
:tea:
Ардуино умеет работать напрямую с регистрами: EEAR, EEDR, EECR, EECR... и т.д.
Это название регистров AVR... но которой собрано Ардуино.
Без всяких библиотек))
olegue писал(а):но если я буду писать структуру данных в еепром
:dont_know:
я не работаю со структурами... мне они не нужны))
это пустая трата драгоценного процессорного времени... ))
olegue писал(а):поэтому и придумали ардуину
поэтому ардуина такая тормознутая))
:tea:
Ответить

Вернуться в «AVR»