Гражданская радиосвязь в России (CB, LPD, PMR) Вход     Регистрация

18+ Данный раздел сайта запрещён для просмотра детьми!  

Данный раздел запрещён для просмотра детьми

Материалы данного раздела могут содержать информацию, запрещенную для детей, согласно нормам установленным Федеральным законом "О защите детей от информации, причиняющей вред их здоровью и развитию".
Гражданская радиосвязь / Всё на форуме / Программирование: С, Arduino и другое - обсуждение, вопросы и ответы
Нюансы программирования МК
08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  Тут предлагаю обсуждать нюансы программирования микроконтроллеров (в частности, AVR) и их не минуемое взаимодействие с периферией.

Начну ветку с вопросов к 250.

Учусь работать с внешней EEPROM-памятью "DataFlash" AT45DB161. Читается бит состояния/занятости, читается из буфера и напрямую, записывается, стирает. Однако от построения простейшего диктофона на его основе, меня отдаляет время записи буфера в основную память.

Если не в курсе, то поясню. Микроха имеет 16мегабит памяти (2мбайта). Память поделена на сектора, блоки и страницы. Страница имеет или стандартные для DataFlash размер 528 байт, или не стандартные 512 (далее я буду подразумевать страницы по 528 байт). Так же микроха имеет 2 буфера по 528 байт.

Запись напрямую в страницы основной памяти, в отличии от чтения, невозможна - только через буфер. Время сохранения этого буфера (при условии предварительно очищенной страницы-назначения), 3 миллисекунды(!). Если в учебных целях делать на этом макет диктофона, с частотой дискретизации 11025 гц, то получим, что опрашивать ADC и пихать результаты в память нужно каждые 90микро(!)секунд. Так и будет происходить, пока буфер не заполнится. А затем будет сохранение буфера в память и целых 3000 мкс ожидания его сохранения - это неминуемая потеря 33х байт!

Пока буфер пишется, микроха выставляет флаг BUSY и вроде как становится глуха ко всему (не разрешает запись во второй буфер). Описание устройства и пример кода в апноте подтверждают, что при записи все пишется в буфер №1 - и на этом ВСЁ.

Вопросы:

1. А как же потерянные байты? Или я чего то не усмотрел (не заметил) в апноте и ничего там не теряется?

2. Буду ли я на верном пути, если организую средствами МК буфер, куда буду сохранять эти потерянные 33 байта, а потом восстанавливать их сразу же после того, как флешка освободится?

3. С какой частотой ты опрашивал ADC в своем эхо-репитере? (

4. Частота опроса ADC должна быть равна частоте выдачи байт в ШИМ, так ведь?

PS. Просьба не цепляться к моему выбору именно этой микрохи (патамушта есть лучше и больше). Хотя, если действительно есть более удачные устройства хранения данных (с молниеносной записью и тд), уже проверенные в боях, то буду рад этой информации. Но прежде я мечтал бы получить исчерпывающие ответы на свои вопросы.
 
Записано: 3155 дн 13 час 41 мин 5 сек назад (28.05.2013, 09:52:02)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Прежде всего вопрос: какому АРК эхо репу собрался делать?
 
Записано: 3155 дн 0 час 18 мин 43 сек назад (28.05.2013, 23:14:24)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  Я не писал, что собираю репу, тем более какому то АРК - она спокойно покупается здесь за 1300 и при чем тут я? Вряд ли я смогу предложить более лучшее устройство, еще и за меньшие деньги. В прочем, если будет спрос, то все обсуждаемо. Но пока я от этого далек на столько же, на сколько далека от нас Америка, и уверен, что дальше игрушки для своего ребенка это не пойдет (ее забавляет собственное эхо) .))

PS. Эти детские войнушки между каналами скоро доведут до того, что скоро во всем будем усматривать вопрос с далеко идущими планами, направленные на благо "врага".
 
Записано: 3154 дн 15 час 48 мин 11 сек назад (29.05.2013, 07:44:56)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  08, я репами не торгую, мне без разницы стоимости, спросил про АРК из любопытства (не уж то ещё один АРК появиться собрался (в последнее время они плодиься стали, точнее почковаться и черенковаться)).
У кого какие "врага" мне тоже без разницы.

Я делал работу с флешкой так:
Буфера 2 штуки. Запись идёт в буфер1 как только он заполняется начинается перекид данных из буфера1 в флешку, а запись (она на прерывании) идёт уже в буфер2, потом, по его заполнению снова пишем в буфер1.
То есть нет никаких потерянных байт, время пока наполняется буфер1 или 2 всегда больше чем время которое нужно на переброс буфера в флешку.
Дискретизация в репе в репе как раз порядка 11кгц, если совсем точно: 31250/3.
Частота выдачи ШИМ аккурат в 3 раза больше 8000000/256.
При чтении процесс с точностью до наоборот, то есть читаем в буфер1 карточку, запускаем воспроизведение на шим с буфера1, а тем временем читаем новый сектор в буфер2, как только воспроизвели буфер1 переходим воспроизводить буфер2, а в буфер1 заряжаем чтение из флешки.
 
Записано: 3154 дн 9 час 12 мин 28 сек назад (29.05.2013, 14:20:39)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  >>Запись идёт в буфер1 как только он заполняется начинается перекид данных из буфера1 в флешку, а запись (она на прерывании) идёт уже в буфер2
Я так и хотел сделать, иначе зачем ИМЕННО ДВА буффера?! Вот русское описание этой флешки.

Выдержка пунта 7.3 "Запись буфера в страницу основной памяти без автоматического стирания"

Ранее стёртая страница основной памяти может быть запрограммирована содержимым буфера 1 или буфера 2. Для этого необходимо подать команду 88H для буфера 1 и 89H для буфера 2. При записи в страницы стандартного размера (528 байт), после команды подаются 3 адресных байта адреса программируемой страницы в основной памяти. Переход сигнала CS из низкого состояния в высокое запустит процесс записи данных из буфера в указанную страницу основной памяти. Операция записи страницы самотактируемая и выполняется за максимальное время tP. В течение этого времени регистр статуса и вывод RDY/BUSY будут информировать о занятости микросхемы.

То есть если я правильно понимаю, то микроха будет глуха к мольбам о просьбах записи в буфер2. Так-нет? Что на этот счет говорит даташит на твою флешку?
 
Записано: 3154 дн 8 час 51 мин 32 сек назад (29.05.2013, 14:41:35)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  На счет чтения из флешки. Не знаю как у тебя, но у этой микрохи есть режим сквозного чтения, то есть непосредственно из самой памяти, минуя буферы. При чем особая радость состоит в том, что микрохе достаточно назначить страницу и байт начала чтения, после чего достаточно просто продолжать дёргать SCK - байты будут сами вываливаться из нее до тех пор, пока не отпустится CS. Если читаемая страница заканчивается, чтение начинается со следующей страницы.
 
Записано: 3154 дн 8 час 42 мин 52 сек назад (29.05.2013, 14:50:15)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Да, микроха будет глуха к любым подёргиваниям, хоть к чтению хоть к записи, пока не пропишет сектор до конца.

Что касается чтения, то да, можно 2 буфера не юзать, но раз уж они есть то почему бы не поюзать.
К тому же так я могу считав сетор в любой момент перейти от чтения к записи, то есть сектор уже считан, значит мне нужно лишь дать команду записи и пошла запись, а не дочитывать до конца сектор.
Плюс так я могу заранее считав буфер проанализировать его данные до воспроизведения.

P.S. Вообще для эхо-реп самое лучшее это бы найти микроху статической память SRAM какую нить с I2C или SPI, а то флешки всё одно гибнут. Насколько я выяснял, эти микрохи, флешки, гибнут ни чуть не медленее чем SD карточки, вроде как на трансляторе одного из АРК репу меняют чуть ли не раз в пол года по причине гибели микрохи флеш-памяти.
 
Записано: 3154 дн 8 час 18 мин 57 сек назад (29.05.2013, 15:14:10)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  >>Да, микроха будет глуха к любым подёргиваниям, хоть к чтению хоть к записи, пока не пропишет
А твоя флешка, значить, не глуха в это время? Да?

>>вроде как на трансляторе одного из АРК репу меняют чуть ли не раз в пол года
Любезно общался с одним из Оргов 27 канала. Он уверял, что их репа работает уж как два года не выключаясь. Глянул схему весьма распространенного "попугая", глянул даташиты - писать звук можно только на АТ45DB161.

>>Вообще для эхо-реп самое лучшее это бы найти микроху статической память SRAM
Угу. Уже думал над этим. Но для игрушки ребенку - пойдет и такая .))))
 
Записано: 3154 дн 7 час 52 мин 49 сек назад (29.05.2013, 15:40:18)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Разницы между SD карточкой и микрохой никакой по сути нет.
Флешка так же глухая к командам пока пишет.
 
Записано: 3154 дн 6 час 36 мин 32 сек назад (29.05.2013, 16:56:35)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  Как же ты сохраняешь буфер1 на флеш, если она глухая, пока пишет? Или я не понял тебя, или ты где то оговорился?

Я делал работу с флешкой так:
Буфера 2 штуки. Запись идёт в буфер1 как только он заполняется начинается перекид данных из буфера1 в флешку, а запись (она на прерывании) идёт уже в буфер2, потом, по его заполнению снова пишем в буфер1.
 
Записано: 3154 дн 5 час 4 мин 27 сек назад (29.05.2013, 18:28:40)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Буфер1 и Буфер2 - они в RAM контроллера а не во флешке.
Это не я оговорился, это я недосказал наверно, а ты по инерции думая только про флешку не там их себе представил .)
 
Записано: 3153 дн 19 час 5 мин 32 сек назад (30.05.2013, 04:27:35)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Кстати, на счёт микрох памяти.
Вот хочу прикупить одну из микрох:
AS7C4096-12JI, SRAM, 512Kx8, 5V, SOJ36
AS7C34098-15TI, SRAM, 256Kx16, 3V, SOJ36
И на такой микре запилить репу.
Цена в принципе адекватная, дешевле флешки, засто это SRAM, то есть это быстро и не убиваемо.
Одна проблема - придётся лепить регистры сдвига, что бы адрес задавать, всё же нужно 19 выводов только под адрес и ещё 8 под данные, у меги8 столько ног не будет. Но учитывая копеечную стоимость микрох серии 74HC и тот факт, что это 1 раз делаешь и на всю жизнь забываешь о репе, это не проблема совсем.

08:
> Любезно общался с одним из Оргов 27 канала.


Вот то то и оно, что ты любезно общаешься с людьми из этой группировки.
Впрочем, быть с ними - это твой выбор.
Помнится та группировка чётко и недвусмысленно дала понять, что не желает никакого общения со мной.
Мой выбор: в связи с изложенным выше прекратить дальнейшее общение с тобой.
 
Записано: 3153 дн 18 час 38 мин 24 сек назад (30.05.2013, 04:54:43)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  >Вот то то и оно, что ты любезно общаешься с людьми из этой группировки
С кем общался я, тот далек от всех этих баталий и детской игры в войнушки (это к тому, что оргов много, но даже среди них не всегда можно найти единое мнение в отношении чего бы то ни было). Что касается самой возни между кланами, то мне совершенно понятно, что в той или иной степени виноваты ОБЕ стороны. И мне жаль, что клан, к которому я себя до сих пор причисляю, все никак не может оказаться выше всего этого, взрослее и мудрее - все та же истерия в ответ, как две бабы на базаре. Потому на общение пошел по доброй воле, как на попытку решить вопрос по-другому. Но так, как он в стороне от этих склоков, то решить удалось далеко не всё, что хотелось бы.

Теперь что касается общения. Если человек служит в полиции, это будет основанием к прекращению общения с ним? Считаю, для нормального человека - нет. Ему все равно то, где он служит и с кем еще дружит - лишь бы человек был хороший и было интересно. Если с ним не интересно, то это другое, но никак не детское клеймо, что вот ты дружишь с Васей, а Вася дружит с Петей - моим врагом, который не дал мне колёсико, значит и ты для меня враг. Когда взрослеть то будем, вашу мяу?
 
Записано: 3153 дн 15 час 46 мин 36 сек назад (30.05.2013, 07:46:31)

Бессмертный из Новосибирск - Новосибирская обл
Бессмертный из Новосибирск - Новосибирская обл
  да большенству всё поровну
вот из за таих людей - предали, продали и просрали великую импеию СССР
 
Записано: 3153 дн 11 час 46 мин 27 сек назад (30.05.2013, 11:46:40)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Полечил статьи по детектированию частот, добавил больше ссылок на "что почитать ещё".
 
Записано: 3132 дн 19 час 33 мин 35 сек назад (20.06.2013, 03:59:32)

08 из Новосибирск - Новосибирская обл
08 из Новосибирск - Новосибирская обл
  о, спасибочки. Стану свободнее и засяду разбираться в этом тёмном лесу.
 
Записано: 3132 дн 16 час 0 мин 58 сек назад (20.06.2013, 07:32:09)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Да я постарался без тёмного и без леса всё написать, с примерами кода.
Если знаком синтаксис языков Си или Perl или JavaScript, то разобраться и перенести куски кода в любой проект не проблема.
И писать старался так, что бы не оставлять белых пятен, вроде "генерируете таблицу синусов" - а как её генерировать не понятно. То есть если говорю о генерации таблицы, то и код привожу как её генерировать.
 
Записано: 3132 дн 15 час 32 мин 17 сек назад (20.06.2013, 08:00:50)



 
Ник:

Пароль к нику:

Число изображённое крупным шрифтом:


Написать комментарий:
[B] [I] [S] [WWW] [YouTube]

Бросить друзьям ссылку на тему:
Если это интересная тема, дайте людям на неё ссылку:
http://27kb.ru/zou.php?f=901&message=2834


О сайте
Правила сайта
  Обратная связь Рекламодателям
  Сотрудничество   Яндекс.Метрика