0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 39
|
|
1 | |
прошу помогите ATMega 16...128 & SD/MMC17.05.2011, 20:04. Показов 35925. Ответов 37
Метки нет (Все метки)
Встала задача сделать устройство которое будет дописывать в файл показание с АЦП. Файл планирую хранить на SD или MMC карточке.
Ковырял кучу примеров с ffs, но до конца не могу понять, как это работает. Или Proteus меня дурит и не хочет отрабатывать при инициализации и не отвечает на CMD1 :( Если у кого есть примерчики на нашем славянском языке буду признателен.
0
|
17.05.2011, 20:04 | |
Ответы с готовыми решениями:
37
программирование Atmega 128 Таймер Atmega 128 ATmega 128. Кодовый замок Atmega 128 плохо заводится |
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 2
|
|
26.09.2011, 19:00 | 21 |
Насколько я помню прерываний там никаких нет, там обычный SPI, так что проблем у вас не будет, да и причём тут прерывания, опросили датчики, инфу залили на карточку. Там вроде какой-то процедуркой надо карточку периодически инициализировать, но в вашем случае делайте инициализацию перед записью, и будет вам счастье.
0
|
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 30
|
|
06.11.2011, 10:57 | 22 |
Да, есть процедурка которая через прерывание от таймера вызывается каждые 10 мс. Вопрос такой, если я буду эту процедуру вызывать, сделаю запись (чтение). Потом запрещу прерывания, через какое-то время опять разрешу. Будет ли далее работать запись на карточку или надо будет делать повторно инициализацию?
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
06.11.2011, 11:04 | 23 |
Да вроде не должны отражаться запрет/резрешение прерываний никак.
0
|
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 1,835
|
|
06.11.2011, 16:21 | 24 |
У Ревича работа с картами (ассемблер) отлично описана http://eldigi.ru/site/books/praktichesk ... revich.php
В MikroPascal (MikroBasic, MikroC) тоже встроены функции работы с картами (FAT16). Опять же есть Arduino.
0
|
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 30
|
|
07.11.2011, 15:15 | 25 |
Cкажите пожалуйста, насколько нужна функция disk_timerproc()?
Судя по ее коду Код
void disk_timerproc (void) { static BYTE pv; BYTE n, s; n = Timer1; /* 100Hz decrement timer */ if (n) Timer1 = --n; n = Timer2; if (n) Timer2 = --n; s &= ~STA_NODYSK; s &= ~STA_PROTECT; Stat = s; }
0
|
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 28
|
|
07.11.2011, 17:21 | 26 |
ЕМНИП это защита от зависаний проги. можешь подкорректировать код FatFS. имхо лучше использовать, повесь на свободный таймер.
0
|
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 30
|
|
11.11.2011, 03:00 | 27 |
Всем спасибо за помощь! Карточка заработала с первого раза.
0
|
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 30
|
|
23.11.2011, 22:47 | 28 |
Решаю одни проблемы, появляются другие. Первая проблема. Вывожу значения температур и время в файл на SD-карточку. Использую для функцию sprymtf(). Все бы ничего, но у меня размер буфера для вывода данных статический. Обявляю его так:
Код
char text[90]; Код
sprymtf (text, "time: %02u:%02u:%02u :: %0.1f :: %0.1f", hour, minute, second, t[0], t[1]); time: 10:11:52 :: t1=10.2 :: t2=1.6 NUL NUL NUL Вот эти NUL меня смущают. Конечно же можно путем долгого играния и перепрограммирования Меги подобрать размер буффера. Но при изменении числа цифр в температуре меня будет ждать очередной облом. Как можно вывйти из ситуации? B ище одна проблема. Из 3-х карт памяти заработала только SD-карта KIMKSTON 2 Гб. Микро-SD 128 мбайт через переходник и SD-карта Canon 16 мбайт не работают. Это нормально?
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
24.11.2011, 01:53 | 29 |
используй процедуру snprymtf, а еще лучше snprymtf_P
ее отличие, что она выводит не более указанного количества символов в строку. А форматную строку добей заведомо избыточным числом пробелов. Или точек. Или чем-нить по вкусу. И будет не мусор, а четко определенные символы.
0
|
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 30
|
|
24.11.2011, 02:13 | 30 |
Я тут подумал...Может лучше fprymtf() использовать и сразу в файл писать без буффера?
0
|
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 30
|
|
27.11.2011, 01:59 | 31 |
В общем заюзал функцию fprymtf(). Динные пишутся корректно. Но теперь какая-то ерунда получается если вынимаю карточку на работающем контроллере. Ранее было сообщение об ошибке, а сейчас даже бзе карточки файловые функции выдают результат FR_OK. Я не додумался заккоментировать функцию fprymtf(). Но может кто-нибудь подскажет в чем может быть дело?
0
|
0 / 0 / 0
Регистрация: 18.08.2011
Сообщений: 22
|
|
20.04.2012, 20:57 | 32 |
А это нормально что эта petit FatFs компилируется в 7 килобайт в хексе даже если функции оттуда не используются?
0
|
0 / 0 / 0
Регистрация: 10.01.2009
Сообщений: 4
|
|
02.05.2012, 18:29 | 33 |
Нормально, нормально, там только кодировок на пару килобайт - если хочешь уменьшить обьем то помучай defymы - можно поотрубать часть ненужного функционала
0
|
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 91
|
|
01.06.2012, 08:09 | 34 |
Здравствуйте участники форума. Собрал тестовый проект "Atmega16 + SD 1GB", который включает: инициализацию SD карты, и заполнение одного сектора памяти произвольным числом равным А5h. Для контроля за этим процессом, контроллер выводит на дисплей ответы SD карты после каждой команды. Все ответы карты согласуются с документацией и свидетельствуют о нормальном ходе инициализации и записи данных на SD карту, после завершения записи приходит "response byte" равный b11100101 из которого следует, что запись прошла успешно. Адрес начала записи выбран равным 00000000 00000000 00000110 00000000 (1536), как я понимаю, это адрес сектора но на всякий случай он выбран кратным размеру сектора. На SD карте открытой WinHexом не удается найти сектор заполненный числом A5 - ни по адресу байта 1536, ни по адресу сектора 1536, ни по адресу кластера 1536.
Кто знает, в чем может быть ошибка?
0
|
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
|
|
01.06.2012, 11:57 | 35 |
Телепаты все в отпуске
0
|
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 91
|
|
01.06.2012, 12:31 | 36 |
Тебя за главного оставили что-ли?
0
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 88
|
|
26.06.2012, 21:36 | 37 |
Хренова что если правильно писать в сектора без фата надо мудрить с буфером на полкило.
0
|
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 91
|
|
28.06.2012, 06:43 | 38 |
Можно и по одному байту писать, зависит от задач
0
|
28.06.2012, 06:43 | |
28.06.2012, 06:43 | |
Помогаю со студенческими работами здесь
38
Запись результатов АЦП в массив (Atmega 128) Не работает SPI на Atmega 128 в Atmel Studio 7 Atmega 128 fuse как затактовать от внешнего кварца Atmega 128 ширина импульса или интервал в 0.5 ms как реализо Вывод информации на цифровой индикатор НТ1613 в фиксированной позиции (ATmega 128) Массив с отрицательными числами (Atmega 128, ASM) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |