ну более менее понятно
VNS, спасибо за ссылки , буду смотреть. Правда там меги 16 и 36, ну это ничгео. Тоже годится.
Объясните такую тему
Вот код и скетча, т.е основаня его часть там где loop
Код: Выделить всё
void loop() { // THIS RUNS LOTS!
if (digitalRead(btnStart) == LOW && recPressed == 0) {
/* Записываем в RecordNumber, значение из ячейки №0 EEPROM, и прибавляем 1. */
RecordNumber = EEPROM.read(0) + 1;
/* Записываем в ячейку №0 EEPROM, увеличенное значение RecordNumber. */
EEPROM.write(0, RecordNumber);
/* Для конвертации из byte в char / из RecordNumber в NameRecord */
String str; //declaring string.
str = String(RecordNumber); //converting integer into a string.
str.toCharArray(NameRecord, 4); //passing the value of the string to the character array.
StartRec(); // launch StartRec method
}
else if (digitalRead(btnStart) == HIGH && recPressed == 1){
for (int i = 0; i <= 250; i++) { /*ждем секунду*/
if (digitalRead(btnStart) == LOW){paused=1;break;} /*есил была зафиксирована пауза выходим из ожидания (из цикла фо) */
delay(10);
}
if (paused==1) {exit(0);} /* если была пауза выходим из цикла loop */
StopRec(); // launch StopRec method
paused=0;
/*
После окончания записи, в памяти контроллера остаются данные.
И за этого следующая запись бывает качеством хуже.
Поэтому (Делаем программную перезагрузку).
*/
((void (*)())0x0000)(); /* Делаем программную перезагрузку - Arduino */
}
[b] if (recByteCount % 1024 == 512 && recPressed == 1) {
rec.write(buf00, 512); // save buf01 to card
recByteSaved += 512;
}
if (recByteCount % 1024 == 0 && recPressed == 1) {
rec.write(buf01, 512); // save buf02 to card
recByteSaved += 512;
}[/b]
}
в какой момнет происходит запись на флшку? У меня получается, что если пауза между Стопом и НачаломЗаписи короткая, то на данные на флэшку не успевают записать. Так и должнобыть?
Добавлено after 3 minutes 43 seconds:
Код немного переделан, я настроил все для одной кнопки. т.е если нажата то идет запись, отпущена - стоп. А что бы определить что нужно сделать стоп я измеряю паузу (пытаюсь измерить) . Если пауза менее 2.5сек,то запись не прекращается. Вот такая задумка. Ну это к тому что я полагаю,что запись за флэшку идет уже после Стопа.
Где-то я тут наверно не правл.
Добавлено after 2 minutes 25 seconds:
if (paused==1) {exit(0);} /* если была пауза выходим из цикла loop */
в этомй строке я хотел бы попасть вверх цикла loop, но, вероятно , чтото идет не так.
Добавлено after 18 minutes 18 seconds:
if (recByteCount % 1024 == 512 && recPressed == 1) {
rec.write(buf00, 512); // save buf01 to card
recByteSaved += 512;
}
if (recByteCount % 1024 == 0 && recPressed == 1) {
rec.write(buf01, 512); // save buf02 to card
recByteSaved += 512;
}
вот этот кусок за пределами if, которые управляют Рек/Стопом. меня смущает. Скорее всего это и есть запись на флэшку