0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 39
1

прошу помогите ATMega 16...128 & SD/MMC

17.05.2011, 20:04. Показов 35925. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Встала задача сделать устройство которое будет дописывать в файл показание с АЦП. Файл планирую хранить на SD или MMC карточке.

Ковырял кучу примеров с ffs, но до конца не могу понять, как это работает. Или Proteus меня дурит и не хочет отрабатывать при инициализации и не отвечает на CMD1 :(

Если у кого есть примерчики на нашем славянском языке буду признателен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2011, 20:04
Ответы с готовыми решениями:

программирование Atmega 128
Подскажите пожалуйста как подсоединять мегу к программатору avr910/ а то она чет не щьется.

Таймер Atmega 128
Здравствуйте, объясните пожалуйста вот эти строчки поэтапно clr r18 sbi DDRA,1 ldi...

ATmega 128. Кодовый замок
Доброго времени суток! У меня есть задание на курсовой проект : Устройство контроля доступом на...

Atmega 128 плохо заводится
Доброго времени суток, форумчане. Прошу помощи. Есть фонари с демо-режимом построенные на сабжевой...

37
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 2
26.09.2011, 19:00 21
Author24 — интернет-сервис помощи студентам
Насколько я помню прерываний там никаких нет, там обычный 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];
размер выводимого текста примерно 82 байта. Буффер взял с запасом из-за слова примерно. Ведь температура может быть 1 С, -1 С, -10 С, соответственно в первом случае надо символ, в третьем три символа. Из-за того что выводиния строка меньше буфера, вместе с полезной информацией выводится муссор. Вывожу примерно так:

Код
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2012, 06:43
Помогаю со студенческими работами здесь

Запись результатов АЦП в массив (Atmega 128)
Здравствуйте! В моей задаче необходимо считать результаты измерения АЦП гармонического сигнала,...

Не работает SPI на Atmega 128 в Atmel Studio 7
Всем доброго времени суток. Столкнулся со следующей проблемой. Нужен spi для Atmega 128 на Atmel...

Atmega 128 fuse как затактовать от внешнего кварца
Всем добрый вечер. собственно вопрос,я начинающий и все опыты делал от внутреннего генератора,вот...

Atmega 128 ширина импульса или интервал в 0.5 ms как реализо
Всем доброго времени суток. Стоит задача как реализовать последовательность импульсов 0 или 1 на...

Вывод информации на цифровой индикатор НТ1613 в фиксированной позиции (ATmega 128)
Доброго времени суток! Недавно была лабораторная по такому старью, как ATmega 128. Есть код,...

Массив с отрицательными числами (Atmega 128, ASM)
Снова обращаюсь за помощью, не могу понять как реализовать данное задание Дан массив чисел N,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru