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

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

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

Материалы данного раздела могут содержать информацию, запрещенную для детей, согласно нормам установленным Федеральным законом "О защите детей от информации, причиняющей вред их здоровью и развитию".
Гражданская радиосвязь / Всё на форуме / Аппаратура самодельная - показываем, обсуждаем, восхищаемся
Эхо репитер на ATmega8 + SD карта 1...2Гб - схема, прошивка, исходный код, печатная плата
Меркурий из Одесский р-н - Омская обл
Меркурий из Одесский р-н - Омская обл
  (На счёт скорости, кроме моих стонов, смотрим так же стоны на Хабрахабр : Медленная работа SD карточек — кто виноват и что делать?)

К сожалению мне это мало о чем говорит, так как я не программист.
Но на сколько я понимаю, то, можно оптимизировать код. Если это так, то мы все были бы вам очень признательны :)
 
Записано: 3652 дн 4 час 35 мин 46 сек назад (22.11.2014, 15:24:36)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Да то то и оно, что в этом мало что поможет, потому что тут запись идёт не 14 секунд и пишется не 1 файл и не в FAT, а пишется поток и длительный, а SD карточки на это не рассчитаны, по этому всегда будет со скоростью с ними всё плохо.
По этому как я писал выше:
> следующий проект репы горожу на основе SRAM (статическое ОЗУ) CY62158ELL-45ZSXI по цене соизмерима с SD картой, достать конечно чуть сложнее зато огромная и вечная скорость записи
 
Записано: 3652 дн 3 час 59 мин 14 сек назад (22.11.2014, 16:01:08)

Мирный из Белгород - Белгородская обл
Мирный из Белгород - Белгородская обл
  250, программа не видит код. Как его перевести в нужный файл хех. вместо текстового файла.
 
Записано: 3652 дн 1 час 13 мин 19 сек назад (22.11.2014, 18:47:03)

Меркурий из Одесский р-н - Омская обл
Меркурий из Одесский р-н - Омская обл
  Просто создай текстовик, в место расширения .txt напиши .hex
И скопируй туда код что открывается по ссылке.
 
Записано: 3652 дн 1 час 3 мин 49 сек назад (22.11.2014, 18:56:33)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  1) "Сохранить по ссылке" при клике на ссылке правой кнопкой мышки в браузере Opera.
2) Открыть как есть, а потом в окне с открытым выбрать "Меню -> Страница -> Сохранить как" и там указать proshivka.hex
3) Уже подсказал Меркурий.
... ...
и ещё десяток разных вариантов.

HEX файл это просто текстовый файл с расширением .hex и никакой магии.
 
Записано: 3651 дн 23 час 55 мин 37 сек назад (22.11.2014, 20:04:45)

Меркурий из Одесский р-н - Омская обл
Меркурий из Одесский р-н - Омская обл
  Такс, проверил на трех разных картах, от треска не спасает. Но обратил внимание что от разного уровня входного сигнала очень зависит будет треск или нет. Добиться оптимального сигнала не получается, так как амплитуда при разговорной речи всегда разная. Что это может быть? Может стоит ввести АРУ ? Можно ли это организовать посредством контроллера, расширив код?
 
Записано: 3651 дн 22 час 28 мин 53 сек назад (22.11.2014, 21:31:29)

Меркурий из Одесский р-н - Омская обл
Меркурий из Одесский р-н - Омская обл
  И еще вопрос, может ли улучшить ситуацию увеличение опорной частоты? помнится мне, как то тактировал мегу 25ю Мгц, правда не помню, 8ю или 16ю
 
Записано: 3651 дн 22 час 26 мин 0 сек назад (22.11.2014, 21:34:22)

Меркурий из Одесский р-н - Омская обл
Меркурий из Одесский р-н - Омская обл
  А что если попробовать резистивный ацп для восстановления звука?
 
Записано: 3651 дн 21 час 31 мин 40 сек назад (22.11.2014, 22:28:42)

Меркурий из Одесский р-н - Омская обл
Меркурий из Одесский р-н - Омская обл
  Ой, ЦАП.
 
Записано: 3651 дн 21 час 30 мин 48 сек назад (22.11.2014, 22:29:34)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Траблы связаны не с тактовой меги, а с максимальной скоростью записи на SD карту.
Пока нет под рукой ни одной платы с SD картой и мегой, что бы поставить ряд опытов, может полегчает.

ЦАП на резисторах добавит нелинейных искажений, потому что трудно найти резисторы с допуском 1%, а даже 1% на разряде 128, который 0b10000000 дадут погрешность более одного разряда 1, который 0b00000001.
ШИМ ничем не хуже, всё равно АЦП в меге быстрее 15кГц не рулит, разогнаный чуть больше, но тогда и ШИМ разогнан.

Мега в этих прошивках и так разогнана на максимум (байтик калибровки встроенного RC на максимуме), там что-то около 14МГц шарашит.

АРУ очень простая штука, ввести элементарно.
Общее АРУ:

unsigned char maximal_input;

void InitMaximalInAllRecord(){
maximal_input=0;
}

void CalculateMaximalInAllRecord(unsigned char InputValue){
maximal_input=(unsigned char)max((int)maximal_input, (int)abs(128-InputValue));
}

Алгоритм при записи:

InitMaximalInAllRecord();

В цикле записи:

Получили значение_из_АЦП;
CalculateMaximalInAllRecord(значение_из_АЦП);
записали куда надо полученное значение и ждём нового значения

Далее, при воспроизведении нам остаётся вычислить коэффицент насколько надо домножить записанные значения, что бы получить для их максимальных уровней реальный максимум:

коэфф_коррекции_громкости = (128/maximal_input);

Потом перед выдачей каждого значения просто сделать:

значение_для_выдачи = значение_из записи * коэфф_коррекции_громкости;

Всё!

Теперь ложки дёгтя, которые мне пришлось обходить весьма хитрыми способами:
- Работа с числами с плавающей запятой непозволительно тупит на 8-ми битных мегах.
- Операции умножения даже без плавающей запятой непозволительно тупят.

Подсказка как обойти часть грабель:
a*2 = a<<1
a*4 = a<<2
a*8 = a<<3
... ...

Думаю реализовать АРУ не на всю запись, а динамическое труда не составит.
Всего то нужно динамически отслеживать максималку и потом так же динамически менять "коэфф_коррекции_громкости" по мере воспроизведения, самое простое - дописывать в каждый блок SD карты текущее для этого блока значение максималки.
Менять значения при выдаче не резко, а от блока к блоку их интерполировать:
коэфф_коррекции_громкости = ((коэфф_коррекции_громкости_старое + коэфф_коррекции_громкости_текущее) / 2);

Можно подробить на другие сегменты, не 1 сектор а 2, 3, 5, 10. Тут как и в любом речевом сжимателе динамического диапазона, значение порядка 0,2 сек на спад и порядка 0,05 на атаку сигнала.
На всякий случай проясню - атака это:
__/'''''
спад это:
''''\___
естественно надо игнорировать в подсчёте абсолютной максималки последние данные из серии выборок которые произошли после закрытия шумодава и даже чуть раньше, если радиостанции работают в ЧМ, потому что шум ЧМ детектора всегда имеет максимальные значения.

Тут мы приходим к тому, что по хорошему алгоритм должен отличать шум от не шума, и понеслось усовершенствование до бесконечности ... :)
 
Записано: 3651 дн 20 час 9 мин 53 сек назад (22.11.2014, 23:50:29)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Кстати, не исключаю, что терск связан ещё и с какой ни будь ошибкой моей в алгоритме, может в регистр ШИМ пишу байты не тогда когда надо что бы не рвать фазу ШИМ, может не тогда забираю из АЦП.
Советую просмотреть всё, а то меня тут постоянно толкали под локоть, когда тот алгоритм писал, мог и напортачить.
Будет спокойное время (видимо на пенсии, после смерти, если на гроб накоплю) то проверю всё пошагово, реально мог напортачить, у ШИМ и АЦП куча всяких нюансов, несколько страниц в даташите, надо вчитываться на свежую голову (которую обычно, пока она свежая занимают работой)

,`)

 
Записано: 3651 дн 20 час 5 мин 55 сек назад (22.11.2014, 23:54:27)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Как быть если нет операционного усилителя рассчитанного на работу от низкого напряжения питания?
Вот так:


Напряжение питания операционного усилителя (+V AMP) может быть и 12 вольт и 13.8, да хоть 24 вольта, если операционный усилитель способен работать от этого напряжения, хотя сам контроллер будет по-прежнему питаться от 3,3 вольта (+V CPU).
Для 12 вольтового питания это могут быть операционники, например SM4558, которых в любой бытовухе валом или любой другой.

Может показаться что произойдёт страшное, если сигнал с выхода операционника превысит +V CPU, но это напрасные опасения, потому что все без исключения входные/выходные ноги микроконтроллера распёрты диодами вот по такой схеме:

то есть если напряжение на пине превышает +V CPU то оно будет стекать на плюсовую шину питания CPU, а там блокировочные конденсаторы, стабилизатор и прочее что пожрёт втекающий ток, а если оно станет отрицательным, то ток потечёт из GND не завочачивая ничего в микроконтроллере мехом-в-нутрь.
Такой распор диодами практикуется почти во всех современных микросхемах - он защищает входы/выходы от статики и прочих не желательных воздействий завышенных или заниженных напряжений, зная это я и на SD карточку или дисплеи от Nokia 1100 питающиеся от 3.3 вольта подаю напряжение с логики не городя делитель из двух резисторов, а лишь через один токоограничительный резистор и это работает :)
Но конечно, лучше не усердствовать "вдувая" 12 вольт переменки в вывод меги, так например если в качестве операционника применить какую ни будь TDA2003 у которой действительной мощный выход, то мегу всё же отправит в кремниевый рай.
В общем на входе ADC для работы репы нужна переменка в пиках не превышающая +V CPU, но это легко устанавливается усилением операционника и подстройкой уровня входного сигнала.
Приложены файлы: f20081-0.gif · f20081-1.gif
 
Записано: 3644 дн 16 час 58 мин 43 сек назад (30.11.2014, 03:01:39)

Ирбис из Мамонтовский р-н - Алтайский край
Ирбис из Мамонтовский р-н - Алтайский край
  250 приветствую тебя!Подскажи что за жёлтые полоски идут через всю плату которую ты выкладывл?
Приложены файлы: f20087-0.png
 
Записано: 3644 дн 12 час 17 мин 0 сек назад (30.11.2014, 07:43:22)

Ирбис из Мамонтовский р-н - Алтайский край
Ирбис из Мамонтовский р-н - Алтайский край
  250 и вот ещё вопрос если я правильно раскурил датыш то MC33202 можно свободно заменить на MCP602 без переделки платы,так?
Приложены файлы: f20088-0.png
 
Записано: 3644 дн 11 час 32 мин 53 сек назад (30.11.2014, 08:27:29)

Ирбис из Мамонтовский р-н - Алтайский край
Ирбис из Мамонтовский р-н - Алтайский край
  http://escor.ru/catalog/importnye_1/mcp602t-i-sn/
Вот тут MCP602 c параметрами и напряжением от 2.7 до 6в
 
Записано: 3644 дн 10 час 55 мин 15 сек назад (30.11.2014, 09:05:07)

Ирбис из Мамонтовский р-н - Алтайский край
Ирбис из Мамонтовский р-н - Алтайский край
  http://escor.ru/catalog/importnye_1/atmega8a-au/
Ну и ещё вопрос,такая атмега подайдёт?
 
Записано: 3644 дн 10 час 46 мин 8 сек назад (30.11.2014, 09:14:14)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Полоски - перемычки.
Кусками провода поверх платы.
Там же в куче мест разрывы для возможности запитки и соединения всего по разному.

Насколько я вижу, MC33202 и MCP602 взаимозаменяемы ножка-в-ножку.
Да, можно менять без переделки платы.

atmega8a-au - мега как мега, обязана подойти.
AI - промышленный температурный диапазон, AU - бытовой.
 
Записано: 3644 дн 7 час 0 мин 24 сек назад (30.11.2014, 12:59:58)

Ирбис из Мамонтовский р-н - Алтайский край
Ирбис из Мамонтовский р-н - Алтайский край
  ОК 250 всё понял,буду строить репку,единственная проблемма нет стабилизатора на 3.3 в да собственно и на 5 в бы подашёл но и его нет в продаже по крайней мере у нас,но я думаю найду донора.
 
Записано: 3644 дн 5 час 13 мин 22 сек назад (30.11.2014, 14:47:00)

250 из Новосибирск - Новосибирская обл
250 из Новосибирск - Новосибирская обл
  Всегда можно заменить всё на всё.
Стабилитрон на 3.7 вольта + резистор + транзистор NPN = стабилизатор.
Почему 3.7 вольта?
3.7 - 0.5 = 3.2
Ну то есть нужно вычесть падение на NP переходе.
Нет стабилитрона?
Да не вопрос!
8 диодов типа 1N4148 или любых кремниевых последовательно включенные в прямом направлении вместо стабилитрона, на каждом падение 0.5 вольта, за вычетом падения на транзисторе будет 3.5 вольта на выходе, что укладывается в нормы для SD карточек.

Вообще, конечно странно, что нет стабов серии LM78.. в магазинах, это же ширпотребище адов!

А вообще то есть!
Вот: escor.ru - 78L03 микросхема
Засунь её в ногу которая идёт к общему проводу диод 1N4148 или любой кремниевый в прямом включении и будет тебе стабилизатор на 3.5 вольта.
То есть схема:
вход 12v
|
*--||--|
|
[|)--|>|--|
|
*--||--|
|
выход 3.5v

P.S. Мне вот тут для одного проекта потребовалось напряжение 1.9 вольта, стабилизаторов на такое напряжение естественно в продаже рядом нет, ну ничего, зато в закромах были MC34063, пусть и импульсный, а стабилизатор, даже хорошо, КПД выше чем у линейного.
Собственно тем хобби "радиоэлектроника" и отличается от работы - можно не следовать схеме, которую выдало конструкторское бюро, а можно брать что под руками лежит и тыкать туда, куда нужно.
 
Записано: 3644 дн 3 час 34 мин 42 сек назад (30.11.2014, 16:25:40)

    Страницы в теме:
 1   2   3   4   5   6   7   8 


 
Ник:

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

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


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

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


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