Например TDA7294

Форум РадиоКот • Просмотр темы - Запись измеренных величин на SD-карту с Atmega8
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 21:04:19

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 18:58:31 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
Собственно, вопрос: а как сделать так, чтобы контроллер некое измеренное значение n записывал на карту?

Код:
if(disk_initialize()==0) //инициализируем флешку
{
disk_initialize(0); //инициализируем флешку
f_mount(0, &fs); //монтируем файловую систему
// а тут что?
f_close(&fp); //закрываем файл
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 19:28:06 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 1
а тут что?

что то типа:
Код:
    if (Fatfs_OpenFile(&fp, nameTextFile, F_WR) == FATFS_OK)
    {
         Fatfs_WriteString(&fp, stringOut);
         Fatfs_CloseFile(&fp);
    }

измеренное значение преобразуем в строку stringOut, записываем в текстовый файл с именем nameTextFile


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 19:37:41 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
а тут что?

что то типа:
Код:
    if (Fatfs_OpenFile(&fp, nameTextFile, F_WR) == FATFS_OK)
    {
         Fatfs_WriteString(&fp, stringOut);
         Fatfs_CloseFile(&fp);
    }

измеренное значение преобразуем в строку stringOut, записываем в текстовый файл с именем nameTextFile



Секундочку. А каким образом преобразовываем n (которое идет, как unsigned int) в stringOut? А также какоe расширение будет иметь файл? .txt?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 19:40:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
kotarnold писал(а):
А также какоe расширение будет иметь файл? .txt?
какое вы при создании файла зададите, такое и будет иметь.
kotarnold писал(а):
А каким образом преобразовываем n (которое идет, как unsigned int) в stringOut?
ну например при помощи itoa или тем же sprintf

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 19:56:09 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Секундочку. А каким образом преобразовываем n (которое идет, как unsigned int) в stringOut

у меня тупо делением на 10, например время:
Код:
    rtc_Get(&DT);
    value = DT.Hours;
    textInfo[1] = value % 10 + '0';
    textInfo[0] = value / 10 + '0';
    textInfo[2] = '-';
    value = DT.Minutes;
    textInfo[4] = value % 10 + '0';
    textInfo[3] = value / 10 + '0';
    textInfo[5] = '-';
    value = DT.Seconds;
    textInfo[7] = value % 10 + '0';
    textInfo[6] = value / 10 + '0';
    textInfo[8] = '\0';
    oldDay = DT.Day;

для int n потребуется больше делений :)

upd
нашел экономный itoa без делений от Mbedderа, лет 8 назад применял для AVR:
Код:
char asc[5];
void itoa1(unsigned int binval)
{
   register unsigned int temp,val;
   register char binc,atemp;
   
   val=binval;
   
   atemp='0'; temp=10000; while(val >= temp) {atemp++; val-=temp;};*(asc+0)=atemp;
   atemp='0'; temp=1000; while(val >= temp) {atemp++; val-=temp;};*(asc+1)=atemp;
   atemp='0'; temp=100; while(val >= temp) {atemp++; val-=temp;};*(asc+2)=atemp;
   atemp='0'; binc=(char)val; while(binc >= 10) {atemp++; binc-=10;};*(asc+3)=atemp;
   binc+='0';*(asc+4)=binc;
}


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 20:46:13 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
upd
нашел экономный itoa без делений от Mbedderа, лет 8 назад применял для AVR:
Код:
char asc[5];
void itoa1(unsigned int binval)
{
   register unsigned int temp,val;
   register char binc,atemp;
   
   val=binval;
   
   atemp='0'; temp=10000; while(val >= temp) {atemp++; val-=temp;};*(asc+0)=atemp;
   atemp='0'; temp=1000; while(val >= temp) {atemp++; val-=temp;};*(asc+1)=atemp;
   atemp='0'; temp=100; while(val >= temp) {atemp++; val-=temp;};*(asc+2)=atemp;
   atemp='0'; binc=(char)val; while(binc >= 10) {atemp++; binc-=10;};*(asc+3)=atemp;
   binc+='0';*(asc+4)=binc;
}


О, Боже! что мне делать с этим счастьем? Точнее - куда ставить n и где в итоге название файла? Особенно с учетом того, что у меня это n принимает максимальное значение 5, минимальное - 0, а между ними 1022 значения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 21:14:38 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
делаем типа так
adcValue = read_adc(0);
itoa1(adcValue);
итого в asc значение ацп в виде строки

имя файла у меня тупо формируется так (меняется каждый день):
Код:
char nameTextFile[13];
    value = DT.Day;
    nameTextFile[1] = value % 10 + '0';
    nameTextFile[0] = value / 10 + '0';
    nameTextFile[2] = '-';
    value = DT.Month;
    nameTextFile[4] = value % 10 + '0';
    nameTextFile[3] = value / 10 + '0';
    nameTextFile[5] = '-';
    value = DT.Year;
    nameTextFile[7] = value % 10 + '0';
    nameTextFile[6] = value / 10 + '0';
    nameTextFile[8] = '.';
    nameTextFile[9] = 't';
    nameTextFile[10] = 'x';
    nameTextFile[11] = 't';
    nameTextFile[12] = '\0';


между 0 и 5 unsigned int бывает 1022 значения?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 21:23:25 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
Обождите. Я считываю с АЦП число типа unsigned int, мне его, аки измернное напряжение, нужно записать в файл.
Если опорное напряжение 5В, а в диапазон от 0 до 5В я могу поделить на 1024 части, то... сам запутался :shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 21:29:17 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
пишите в мВ 5В = 5000мВ, как значение ацп перевести в мВ вроде есть в документации


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 21:37:35 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
пишите в мВ 5В = 5000мВ, как значение ацп перевести в мВ вроде есть в документации


на атмегу?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 21:41:30 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
да ADC = (VIN * 1024)/VREF
отсюда VIN = (ADC * VREF)/1024
VREF = 5000
бывают менее затратные по памяти способы


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Ср июн 14, 2017 22:36:30 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
да ADC = (VIN * 1024)/VREF
отсюда VIN = (ADC * VREF)/1024
VREF = 5000
бывают менее затратные по памяти способы


Ничего нового. Мне бы это в файл закатать...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 06:12:17 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Ничего нового. Мне бы...

вроде все в теме есть, подробнее приблизительно так:
Код:
FRESULT open_append (
  FIL* fp,            /* [OUT] File object to create */
  const char* path    /* [IN]  File name to be opened */
)
{
  FRESULT fr;
  /* Opens an existing file. If not exist, creates a new file. */
  fr = f_open(fp, path, FA_WRITE | FA_OPEN_ALWAYS);
  if (fr == FR_OK)
  {
    /* Seek to end of the file to append data */
    fr = f_lseek(fp, f_size(fp));
    if (fr != FR_OK)
      f_close(fp);
  }
  return fr;
}

char nameTextFile[13]; //имя файла в nameTextFile

int main (void)
{
  FRESULT fr;
  FATFS fs;
  FIL fil;
 
  adcValue = read_adc(0);
  vin = (adcValue * 5000)/1024;
  itoa1(vin); //в asc строка
 
/* Open or create a log file and ready to append */
  f_mount(&fs, "", 0);
  fr = open_append(&fil, nameTextFile);
  if (fr != FR_OK) return 1;
  /* Append a line */
  f_printf(&fil, asc);
  /* Close the file */
  f_close(&fil);
  return 0;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 11:13:13 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
Кошмар. Такое количество кода обуслолено только тем, что переменная unsigned int, а не просто int?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 11:18:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
такое количество кода обусловлено тем, что никто не понимает, чего не понимаете вы. я вам написал - sprintf решает ваши проблемы в 2 строки.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 13:20:48 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Кошмар. Такое количество кода...

используйте f_printf с форматированием http://elm-chan.org/fsw/ff/doc/printf.html
не хотите значение преобразовывать в строку - пишите байтами как раз UINT type http://elm-chan.org/fsw/ff/doc/write.html
карту потом читать будет человек или компьютерная программа?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 15:41:17 
Встал на лапы
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 14, 2016 15:38:50
Сообщений: 149
Откуда: Питер
Рейтинг сообщения: 0
Кошмар. Такое количество кода...

используйте f_printf с форматированием http://elm-chan.org/fsw/ff/doc/printf.html
не хотите значение преобразовывать в строку - пишите байтами как раз UINT type http://elm-chan.org/fsw/ff/doc/write.html
карту потом читать будет человек или компьютерная программа?


Пограмма. По циферкам будет строить график в относительных единицах.

Добавлено after 14 minutes 12 seconds:
такое количество кода обусловлено тем, что никто не понимает, чего не понимаете вы. я вам написал - sprintf решает ваши проблемы в 2 строки.


Я растерялся в поисках примера тех двух строк, о которых Вы говорите.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 16:36:14 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Я растерялся в поисках примера...

лучшие примеры как всегда на сайте производителя:
AVR42777 Digital Sound Recorder using DAC with ATtiny817
This example demonstrates a digital ound recorder using ADC for sampling and DAC for playback. Samples timed at a defined frequency, controlled by a timer and event system. SPI used to store raw data on an SD card, driver included. This example demonstrates direct register read and write operations for peripheral initialization, and therefore does not use peripheral drivers.

AVR42780 Temperature Logger with ATtiny817 and SD Card
This example demonstrates logging temperature to a file on an SD card using the Petit FAT File System module, with a timestamp generated with the AVR RTC using ATtiny817. Includes drivers for TWI Master, AT30TSE75x temperature sensor, and the Petit FAT File System module with an AVR disk I/O layer defined. All other peripherals are initialized using direct register manipulation to save memory and therefore peripheral initialization drivers are not used.

имхо из вышеперечисленного, взяв нужные куски кода, можно слепить "Запись измеренных величин на SD-карту с Atmega8"
качать исходники тут, чуток подождать - ларчик откроется:
http://start.atmel.com/#examples/rec

p/s/ sprintf там есть


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись измеренных величин на SD-карту с Atmega8
СообщениеДобавлено: Чт июн 15, 2017 17:02:56 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
kotarnold, Вы скажите по конкретнее, с чем возникают проблемы ?
На вопрос :
kotarnold писал(а):
а как сделать так, чтобы контроллер некое измеренное значение n записывал на карту?
есть множество ответов, которые имеют ветвления.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y