Перейти к содержанию

Специализированный регистратор


Рекомендуемые сообщения

Берете кварц какой есть, считаете по формулам из даташита коэффициенты и ошибку. Проблем не возникало практически никогда.

Это так, но я стараюсь избегать ошибки и использовать стандартный битрейт, обычно 115200 для AVR. Не смотря на то, что ошибка до 10% вполне допустима, но тут уж работает личный перфекционизм. Конечно, это не MSP430 со своим PLL для UART, там вообще мечта.

Ну это, как раз не проблемма PCMCIA (для ноутов) и PCI(ex) -карточки (для больших компов) - рулят.

Естественно, они же прямо на шине сидят. Изучал вопрос, но учитывая цену таких переходников, мне как-то перехотелось. Тем более, что у мя всего один PCMCIA, занятый дополнительным картридером. Да и большинство нужных отладочных средств давным-давно на USB и могут быть легко куплены, или сделаны вручную как я сказал выше.

Кстати COM-порты в современных ПК - тоже "не в почете".

Знаю, поэтому долго искал «эмбеддерский» ноут с настоящим COM-портом, и таки нашел. ::smile

Касательно оверклокинга, в основном все AVR питаются у мя от пяти вольт, поэтому я не зря говорил, что оверклочу их именно при максимальном питании. Но есть случай, когда ATmega16L работает на 12 мегагерцах при питании 3,5 вольта (так как там софтверно-эмулированный low-speed USB), но в более поздних проектах питаю таки их от пяти и просто ставлю на сигнальные линии стабилитроны на 3,6 вольт как это реализовано в USB ASP, к примеру. Их емкости довольно небольшие, проблем при передаче нет.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 53
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

в основном все AVR питаются у мя от пяти вольт, поэтому я не зря говорил, что оверклочу их именно при максимальном питании
А я говорил, что важна точность задания и поддержания этих самых 5 вольт. Недостающие 100мв - могут оказаться решающими. Так что, стабилизаторы на TL431+составной транзистор Дарлингтона + 3 резистора (возможно даже с подстроечным резистором), в данном случае - рулят. Ибо стандартные "кренки" имеют довольно большой разброс, и плавают от температуры (причем сами себя неплохо нагревают, а в описанном мной стабилизаторе силовой транзистор - отдельно от ref-а и решающего усилителя).
Ссылка на комментарий
Поделиться на другие сайты

А я говорил, что важна точность задания и поддержания этих самых 5 вольт. Недостающие 100мв - могут оказаться решающими.

Хм, не согласен. Это чистой воды шаманизм, то есть, то, против чего лично я категорически против в своих разработках, ибо если есть возможность уменьшить вероятность потенциальных глюков, это надо сделать. Микроконтроллер должен стабильно работать в пределах BOD-супервизора (фузы BODEN и BODLEVEL) и вырубать его должен супервизор вгоняя в ресет, а не просадка питания на 100 милливольт с остановкой такта когда на порту загорелся светодиод или изменится температура корпуса. Тем более, говорят, поднимать питание выше 5,6 вольта нельзя, так как могут не выдержать защитные диоды портов. Хотя я слышал легенду о том, что АТмега работала от 12 вольт чуть ли не полгода (разработчик перепутал что-то с питанием и не заметил).

Обычно использую 4 вольта порог (BODEN=BODLEVEL=0) для пятивольтового питания и 2,7 вольта, (BODEN=0, BODLEVEL=1), для 3,3 вольтового. Выбираю такой оверклок, чтобы он стабильно работал в пределах 4-вольтового BOD.

Кстати, вот вчера на выходных ради развлечения подцепил цветной экран от S65 (LS020) по SPI. Идея далеко не нова, но выглядит просто замуррчательно (в реале намного лучше, чем на фотке). ^_^ Может поставлю его в какой-то следующий проект. ::smile

post-441-1296114974,87_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Так.

Программатор спаял, подрубил, МК опознало, уверило, что прошило без ошибок. (правда я питал от 4,8 В, хотя настоятельно рекомендовали не меньше 5. Но, вроде, ошибок не выдавало, по крайней мере, когда скорость прошивки уменьшил).

Ссылка на комментарий
Поделиться на другие сайты

Howl Dgerone, отлично, что сдвинулись с места в плане «железа». Программатор через LPT из-под PonyProg?

Все-таки раз в этой теме заговорили о микроконтроллерах и экранах, добавлю еще (для вдохновения). Вывел на вышеупомянутый дисплей картинку. Выглядит просто замечательно, но как всегда фотоаппарат портит всю красоту (то же что фотографировать экран мобильного или ноутбука, т.е. ничего хорошего :roll: ).

Картинка была выведена, можно сказать, классическим способом. После подготовки необходимого BMP-изображения, оно было конвертировано в файл, где побайтно была представлена каждая точка в 16-битном цвете. Учитывая размер моего экрана (176 на 132) и то что на точку идет два байта, размер массива равен 46 464 байт. Для внутренней флэш-памяти микроконтроллера это обычно много, поэтому картинка была загружена через софтово-эмулированный USB-порт контроллера из терминальной программы в графическую память экрана (в будущем планируется поцепить стандартную USB-флешку и читать с нее, или использовать Atmel DataFlash, но придется делить SPI).

Короче говоря, вот результат:

post-441-1296114974,92_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Не. Com порт.

Прогромматор Громова через UniProg

Куда подать вывод контрастности с ЖК ?

В одном источнике говорят, что на землю - максиконтрастность (все засвечено), а значит, нужно подать через резистор дето 5 кОм на землю.

В другом - что тот же резистор, на на питание.

В третьей, вообще говорят, что ставить надо переменный резистор. (его уменя, увы, нет.)

Ссылка на комментарий
Поделиться на другие сайты

Еще раз отсылаю к статье Рюмика. Вывод контрастности, если лень ставить потенциометр (которым можно регулировать эту самую контрастность), можно просто заземлить напрямую, без никаких резисторов, это соответственно выведет ее на максимум. В некоторых отладках у меня так и сделано.

Ссылка на комментарий
Поделиться на другие сайты

Howl Dgerone,

Программатор спаял, подрубил, МК опознало, уверило, что прошило без ошибок.
Ну что, можно поздравить "с первым боевым крещением" :lol: , когда еще и на ЖК чего нибудь напишете - вообще все круто будет. :mrgreen:

По поводу контрастности: На самом деле, вопрос весьма тонкий, все очень сильно зависит от конкретного типа дисплея, а их много, также зависит и от температуры (хорошие дисплеи, обычно имеют встроенную термокомпенсацию, ибо для всего диапазона температур, подстроить невозможно в принципе, ибо параметры "плавают", у меня, приборы настроенные в помещении, на улице - было едва видно). Просто заземлить - скорее всего, и в правду будет чрезмерно контрастно, и экран будет чОрный (хотя возможны исключения). Самое правильное - всеже поставить потенциометр (в чем, собственно, проблемма ? в любой "лавке" - "пучек на пятачек" :shock: ). Еще можно взять таймерный выход контроллера, сделать на нем ШИМ на высокой частоте, и усреднив RC-цепочкой (резистор поменьше - сотни ом, а конденсатор большой - единицы/десятки микрофарад ), подать на этот самый вывод контрастности - будет программная регулировка (можно в меню вывести, "типа крута" 8) ).

Raymond,

в будущем планируется поцепить стандартную USB-флешку и читать с нее, или использовать Atmel DataFlash, но придется делить SPI.

С USB- очень много гемороя. Проще всего - карточку SD (причем если не планируется замена - ее можно просто варварски припаять, как микросхему (вместо Atmel DataFlash :mrgreen: ), без всяких держателей), и объемы громадные, и покупается легче чем Atmel DataFlash, правда тоже придется "делить SPI", но в этом никаких проблемм нет (сигналы "CS" - рулят, а процессор работает последовательно, по сути своей :wink: ). Если очень хочется - можно эмулировать еще один SPI - программно, на GPIO, но это очень медленно. Еще можно поставить микросхему NAND-Flash - с байтово последовательным интерфейсом (вроде K9K8G08, или подобную) быстро и емко, но надо 14 ног, к томуже придется возится с таблицей "битых" блоков . Или даже параллельную FLASH (29fxxx) - совсем быстро (можно даже программу оттуда исполнять), но придется подключать как "внешнюю память" и ставить регистр-защелку на адрес, ибо ног надо совсем дофига.

Хм, не согласен. Это чистой воды шаманизм, то есть, то, против чего лично я категорически против в своих разработках, ибо если есть возможность уменьшить вероятность потенциальных глюков, это надо сделать. Микроконтроллер должен стабильно работать в пределах BOD-супервизора
По графикам в даташитах, к сожаленью, сколько-нибудь существеннй разгон, с такими условиями невозможен. Можно оттестировать на питании в 5в, а потом поднять до 5.2 (и точно поддерживать), как дополнительная гарантия устойчивости работы. А супервизор, к сожалнью всегда настраивается на напряжение ниже установившегося напряжения питания, чтобы он гарантированно срабатывал. Разгон, в некотором роде, и есть "шаманизм", и устойчивое питание - один из его компонентов. (см, хотябы, любую статью по разгону PC, на overclockers.ru :D )

Другое дело, что сейчас, чем "выжимать" лишние 5мГц (а потом еще и оптимизоровать программу по быстродействию, чтобы уложиться в полученные мегагерцы), проще поставить более быстрый контроллер, благо их сейчас полно :wink: .

Тем более, говорят, поднимать питание выше 5,6 вольта нельзя
А я и не говорил об этом. Я предлагал только удерживать на уровне 5.2-5.4 +-0.05В, что относитлеьно легко достижимо.

Хотя я слышал легенду о том, что АТмега работала от 12 вольт чуть ли не полгода (разработчик перепутал что-то с питанием и не заметил).
Это конечно круто, но могу поверить. Лично я, знаю 2 похожих случая, хотя и не столь "крутых":

1) На плату с 2 АТмегами, подали, тоже что-то около 12в, вместо 5 положенных, но на несколько секунд.

2) на плату с 80c188EB, и кучей логики подали около 9в (вместо 5), в результате того, что монтажники повесили "соплю", на оптрон обратной связи (кстати, в том самом источнике, схему которого я выложил в теме про импульсные источники питания). Работало довольно долго, около суток. Было обнаружено, по избыточно большому потреблению, и очень большой (и не настраеваемой) контрастности ЖК (ЖК текстовый, 2 строки, вроде тех что мы тут обсуждаем). :mrgreen:

Что забавно, несмотря на кучу микросхем помимо процессоров (на обеих платах были еще внешние памяти, логика, АЦП и ЦАП, и еще много всего), единственное что сдохло (причем в обоих случаях !), это преобразователь уровней RS232 (ADM202). Я могу обьяснить это наличием внутренних умножителей напряжения. Что он такого себе "наумножал", что выбило затворы полевых транзисторов.

P.S. Экранчик у вас прикольный 8) Мя, с цветными еще не возился.

Ссылка на комментарий
Поделиться на другие сайты

С USB- очень много гемороя. Проще всего - карточку SD (причем если не планируется замена - ее можно просто варварски припаять, как микросхему (вместо Atmel DataFlash :mrgreen: ), без всяких держателей), и объемы громадные, и покупается легче чем Atmel DataFlash, правда тоже придется "делить SPI", но в этом никаких проблемм нет (сигналы "CS" - рулят, а процессор работает последовательно, по сути своей :wink: ). Если очень хочется - можно эмулировать еще один SPI - программно, на GPIO, но это очень медленно. Еще можно поставить микросхему NAND-Flash - с байтово последовательным интерфейсом (вроде K9K8G08, или подобную) быстро и емко, но надо 14 ног, к томуже придется возится с таблицей "битых" блоков . Или даже параллельную FLASH (29fxxx) - совсем быстро (можно даже программу оттуда исполнять), но придется подключать как "внешнюю память" и ставить регистр-защелку на адрес, ибо ног надо совсем дофига.

USB-flash подключать ко встроенному в контроллер усб тоже не посоветовал бы, т.к. придется как минимум разбираться в готовой библиотеке (если есть полноценная от атмела). Разве что есть необходимость разобраться с усб.

Однако USB-flash можно подключить через Vinculum. Это решение наиболее простое, не требует даже организации файловой системы. Для себя идеально, только медленно и дорого.

NAND лучше не трогать, т.к. надо поднимать файловую систему, возиться с исправлением ошибок, проверкой битых блоков и т.п. К тому же надо как-то еще в нее данные писать. Извращение.

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

Ссылка на комментарий
Поделиться на другие сайты

Однако USB-flash можно подключить через Vinculum. Это решение наиболее простое, не требует даже организации файловой системы. Для себя идеально, только медленно и дорого.

Не вижу ничего идеального. Штука исключительно для ОЧЕНЬ ленивых. Единственное дочтоинство - простота начального использования, все остальное - недостатки: низкая скорость (особенно при больших обьемах подключенной флешки ее полная перезапись - растягивается на часы), наличие еще одной недешевой, и дефицитной микросхемы, никаких возможностей дальнейшего совершествования.... Да и вообще, USB-брелок со своим разъемом, внутри устроийства (если не предполагяется его замена), смотрится как "на корове седло", а еще и с дополнительной микрухой ... :?

NAND лучше не трогать, т.к. надо поднимать файловую систему, возиться с исправлением ошибок, проверкой битых блоков и т.п. К тому же надо как-то еще в нее данные писать. Извращение.
Ну делали у меня знакомые, никакого особого извращения там нет. В любом случае, это проще, чем разбираться с USB (причем с USB-host, который к томуже, в очень немногих контроллерах есть :wink: ). Кстаи тоже есть готовые библиотеки (хотя мой знакомый - написал все сам). Таблица браков - прошита в новой микросхеме, и сделать исключения заданных блоков - особых проблемм нет. Единственное, что доставляет геморой - достаточно большой размер минимального стираемо-записываемого блока, что при отсутствии буфера на 1 блок в ОЗУ, делает процедуру записи, крайне неудобной.

А касательно файловой системы:

1) она далеко не всегда нужна. Файловый доступ, с возможностью стирания и перезаписи файлов произвольного размеру, во многих случаях, для внутренней памяти - излишество. Часто можно ограничится какимто "частным случаем", причем он может оказаться эффективнее традиционной файловой системы "общего назначения", ибо "заточен" под специфику конкретной задачи :wink:

2) если файловая система всеже нужна, то ее придется делать и для SD, и для Atmel DataFlash, и вообще практически для любой памяти, если там нету своего контроллера эту файловую систему реализующего. Тут, пожалуй, единственное исключение - Vinculum, но это его достоинство не искупается его недостатками. В конце концов, никто не требует там полноценный NTFS делать :mrgreen: , для 99% случаев - хватит протейшего подобия FAT, а там ничего сложного нет. Кстати готовых библиотек, реализующих файловые системы - тоже полно.

Самое удобное решение, как я уже сказал - карточка SD(HC) . И характеристики хорошие, и доступно, и реализовать просто.

Ссылка на комментарий
Поделиться на другие сайты

Недостатки винкулума... у него он уже есть в наличии и прибор не задумывается как серийный (если я не ошибаюсь), т.е. речь о дефиците не идет. Медленно конечно, но в остальных случаях скорость намного выше все равно не получит со своим контроллером... А вот то, что усб-флешка будет болтаться на брелке, согласен.

Еще забыли компакт-флеш. Там интерфейс еще более дубовый, типа IDE. Она покрупнее, но еще проще, чем SD.

Ссылка на комментарий
Поделиться на другие сайты

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

Может такое и бывает, но я лично не встречал. Фотки экрана с моей отладочной платы, обращенные к Howl Dgerone, показывают как раз LCD с заземленным Vo. Как видите, экран вполне себе контрастный. Слышал где-то, может у того же Рюмика, что иногда даже при заземлении контрастность страдает от того, что экран недостаточно темный, и поэтому на Vo подают отрицательное (несколько вольт) смещение относительно земли, скажем, от какой-то маломощной максимовской зарядовой помпы. Но самому таким извращением страдать не доводилось, просто не было надобности. Моя практика с этими модулями (десяток разных типов, как на просвет, так и на отражение, производства Ampire, Тinsharp, Wintek) показала, что можно землить без особых опасений. Впрочем, использовать ШИМ (если не жалко таймера или реализовать программно в основном event loop, особенно если он пустой) – вполне хорошая идея. Но я бы ограничился потенциометром. Действительно, если трудно достать переменный резистор, то что уже говорить о контроллерах? Благо, можно поставить одноваттный совковый СП-1 от громкости ламового телека (это шутка, конечно). ::smile

сигналы "CS" - рулят, а процессор работает последовательно, по сути своей

Да, обычно если чипселект неактивен (обычно высокий уровень), выводы девайса находятся в третьем состоянии и ничего не мешает передаче данных. На практике мне не приходилось цеплять на один порт несколько слейвов, но при подключении датафлеши было замечено, что на качество передачи сильно влияет даже подключенный шлейф ISP (даже если другим концом он был отсоединен от программатора, играла только его емкость), но скорее всего это было потому, что датафлеш была подцеплена к отладке на соплях довольно длинных проводах. ::smile А так, согласен, если все нормально развести трудностей быть не должно.

Если очень хочется - можно эмулировать еще один SPI - программно, на GPIO, но это очень медленно.

У меня так и было сделано при работе с Vinculum, так как там формат посылки очень… хм… нестандартный. Но цеплял и по UART, но сам UART мне ой как был нужен для других целей.

Однако USB-flash можно подключить через Vinculum.

Именно его я и подразумевал в посте выше. Чтение картинки со стандартной флешки – это как раз очень удобно и эргономично, чем заливать во внутреннюю память прибора с хоста через какую-то свою утилиту. Другие дело, что сама флешка и Vinculum жрут немало, это более весомый аргумент.

Не вижу ничего идеального. Штука исключительно для ОЧЕНЬ ленивых. Единственное дочтоинство - простота начального использования, все остальное - недостатки: низкая скорость (особенно при больших обьемах подключенной флешки ее полная перезапись - растягивается на часы), наличие еще одной недешевой, и дефицитной микросхемы, никаких возможностей дальнейшего совершествования....

А лично вы, ее использовали? И работали ли с альтернативными хост-решениями?

А так, *философски* идеального ничего в мире нет, но все-таки работая с ним, достоинств вижу гораздо больше чем недостатков. Внутренняя файловая система, интуитивно понятные досообразные ASCII-команды для терминала и удобные HEX-команды для кода, удобная работа с каталогами, поддержка всего USB-класса BOMS-устройств (даже жесткий диск, фотоаппарат, ваши SD, а также MS через переходники цеплял), возможность работы с аудиофайлами (зависит от прошивки, VMSC, к примеру, которая может напрямую работать с mp3-кодеком) с HID-устройствами, USB-принтерами (не работал лично), - сплошные достоинства. Так что дело не в лени, простота VS возможности у Винкулума на должной высоте, которая перекрывает другие недостатки, как то не совсем удобное чтение файлов, длительные процедуры вычисления свободного места не флешке, корявый SPI. Да и на скорости 3 Мбод по уарту (реально 272kB/s, см. AN112 от FTDI) даст скорость перезаписи вашей флешки, скажем, на четыре гига, в пределах 20-25 минут, никак не часов. А для флешек большего размера, думаю, нет особого смысла юзать Винкулум. Но как периферийная микра для BOMS (еще раз повторяюсь, да) ей ровни нет на рынке хост-контроллеров. Кроме того, чтобы поднять хост на том же Кортексе, придется ой как повозится. А готовые библиотеки для таких вещей обычно трудно доставаемые или платные (и очень недешевые).

Стоит не копейки, согласен. Но я был в свое время так окаваен этой микрой, что вот построил себе еще один модуль с ней, чтобы вставить в новый проект, а не барахолить старую отладку с Винкулумом.

Если в курсе, FTDI выпустила Vinculum II (VNC2L), как новая версия старого Vinculum (VNC1L), больше периферии, шимы всякие для создания автономных хост-устройств, но вряд ли буду ее использовать, так как в плане самого хоста они никуда не продвинулись.

если файловая система все же нужна, то ее придется делать и для SD, и для Atmel DataFlash, и вообще практически для любой памяти, если там нету своего контроллера эту файловую систему реализующего.

ППКС, но. Иногда жизнь можно упростить. Например, можно использовать драйвер, представляющий память как линейное пространство без блоков и страниц, и использовать его как примитивную файловую систему. Так и делал, обычно этого достаточно. Конечно, мне возразят что для большой памяти это ненадежно, согласен. Но для картинок стандартных фиксированных размеров, весом 46 с копейками килобайт из памяти размером 2Мб это вполне качественное решение. Инженерия – забавная вещь, совершенствовать и городить можно до бесконечности, так что надо уметь останавливаться на дешевом и максимально простом решении. Да и вы это знаете не хуже меня, мрк. ^_^

Ссылка на комментарий
Поделиться на другие сайты

Быть,

Еще забыли компакт-флеш. Там интерфейс еще более дубовый, типа IDE. Она покрупнее, но еще проще, чем SD.
Только ног дофига. И есть опасения, что этот формат, со временем "помрет" (собственно уже сейчас пишут, что эти карточки производятся только потому, что успели наделать дорогих цифровых зеркальных фотокамер, под эти карточки, которые потребителю слишком жалко выбросить. Как только эти камеры, в массе своей, переломаются - все). Но вобщемто, соглашусь с вами : Да, забыли. Тоже можно сказать и про MS (последнее время, даже Sony,"сдалась", и стала выпускать девайсы поддерживающие как MS, так и SD), и вообще нефиг поддерживать всякие "лишние" стандарты (если вы конечно делаете не универсальный кардридер), чем их (стандартов) будет меньше - тем лучше.

Raymond,

Про Vinculum:

А лично вы, ее использовали? И работали ли с альтернативными хост-решениями?

У меня на работе, что называется "за соседним столом", был собран макет с этой штукой, но потом был заброшен, именно из-за перечисленных недостатков, я тоже имел возможность с ним поиграться. Про второй - не слышал, ибо не слежу. Собственно основное достоинство, как вы сказали:

интуитивно понятные досообразные ASCII-команды для терминала и удобные HEX-команды для кода, удобная работа с каталогами
Но если подумать: а так ли это надо ?

Согласен, я как-то забыл про всякие принтеры, фотики и т.д. Если надо сделать девайс работающий с чем-то подобным - наверное это действительно полезная микруха. Особено если требуется "обслуживать" широкий спектр произвольных устройств (включая "флешки"), и фишка именно в возможности подключения "чего угодно". Просто у меня не разу не было подобных задач. Но просто как большая "дископодобная" память, для устройства на микроконтроллере - ничего прикольного :?

"Поднять" USB-host - действительно "работа для настоящих мужчин" :mrgreen: тут я с вами полностью согласен. (справедливости ради, все-таки замечу, что свободные библиотеки - таки есть, правда "освоить" их - тоже немалый геморой). Но для подключния "большой внешней памяти" - это совершенно не нужно, ибо есть более простые и красивые решения.

но сам UART мне ой как был нужен для других целей.
Ну полно ATмег и с 2, и даже с четырьмя UART-ами :lol:

Мне например, довелось работать с ATmega2560 - замечательная штука, скажу я вам.

Например, можно использовать драйвер, представляющий память как линейное пространство без блоков и страниц, и использовать его как примитивную файловую систему.

Часто, можно обойтись вообще без всяких драйверов: просто "подогнать" свои структуры данных, к размеру блока. Пускай даже и с потерями: размеры флешек сейчас, для многих приложений, просто "астрономические" , и даже потеря 50%, на незаполненные "хвосты" блоков - не беда :wink: . А файловая система нужна только в 2 случаях: 1- для совместимости (если предусматривается втыкание этой карточки(флешки) - в комп) 2 - если есть задача многократной перезаписи структур данных, произвольного размера, с произвольным доступом (собственно то, для чего файловая система и была придумана в компах). Например, если у вас устройство, которое просто "копит" данные с АЦП (или еще каких-то датчиков), а потом "сливает" в комп, то ФС совершенно не нужна (более того может оказаться вредна, из-за переменного (и непредсказуемого) времени поиска свободного блока, в общем случае) - хватит простейшего счетчика - указателя "вершины".

что на качество передачи сильно влияет даже подключенный шлейф ISP (даже если другим концом он был отсоединен от программатора, играла только его емкость)

Тут играла не емкость, а несогласованная "длинная линия", это вообще очень мерзкая штука. Полумера кабеля, вполне хватит, чтобы такие "бороды" на фронтах появились, что только держись. Кстати в этом случае чередующиеся "через одну" линии "земли", в кабеле - скорее "зло" , нежели "благо" (хотя, с других точек зрения - вопрос сложный).

Чтобы не было подобных проблемм, поставьте последовательно с выводами разъема ISP резисторы на 30-50ом. :wink:

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

Дальше начинаются длинные и пространные рассуждения, про раздвижные гвозди, надежность молотка, и т.д. и т.п. :mrgreen::lol:

Ссылка на комментарий
Поделиться на другие сайты

Дальше начинаются длинные и пространные рассуждения, про раздвижные гвозди, надежность молотка, и т.д. и т.п. :mrgreen::lol:

А все из-за того, что для обсуждаемого устройства не было ТЗ. Хотя бы вкратце, планируемое кол-во, комерч/некомерч, батарейность, размеры...

Тогда сразу отпали бы вопросы об уместности применения винукулумов и т.п.

Ссылка на комментарий
Поделиться на другие сайты

Быть, Да это мы уже так, флудим. В устройстве у Хаула, вроде пока и не предполагается большая внешняя флешь.

Ссылка на комментарий
Поделиться на другие сайты

Ну полно ATмег и с 2, и даже с четырьмя UART-ами.

Зачем далеко ходить? Та же ATmega 64 или 128 имеет два уарта, но на плате у меня стояла ATmega16, мечта найти ATmega644 в DIP40 с двумя уартами и другой кавайной периферией, чтобы можно было легко перетыкать в панелях отладочной платы, вижу только заказывать, а влом.

Мне например, довелось работать с ATmega2560 - замечательная штука, скажу я вам.

Хм, меня не окаваивает, то же что и ATmega128. Разве что периферии побольше и в особенности самих ног, управлять какими-то ЖК, для этого даже существуют многоногие AVRки с внутренними их драйверами. Да и цена намного повыше будет. А так, в принципе, не зря бытует мнение, что при размере кода больше 32 килобайт уже целесообразно искать что-то получше AVR. Об этом даже Atmel недвусмысленно намекал, когда выпускал AVR Dragon с ограничением отладки по размеру кода в 32 килобайта. Мол, ребята, нефиг вам для более сложных проектов наши процы юзать. ::bouncy

Тут играла не емкость, а несогласованная "длинная линия", это вообще очень мерзкая штука. Полумера кабеля, вполне хватит, чтобы такие "бороды" на фронтах появились, что только держись. Кстати в этом случае чередующиеся "через одну" линии "земли", в кабеле - скорее "зло" , нежели "благо" (хотя, с других точек зрения - вопрос сложный).

Согласен. Даже странно откуда вы угадали, что у меня был именно плоский кабель с чередующейся землей, ибо такие эффекты могут возникнуть и в других топологиях. :) Хотя тут влияние распределенной емкости-индуктивности будет проявлено ярче всего. Какие там у мя волны по ней бегали я не смотрел, но именно терминаторами я эти проблемы обычно и решаю (а там их кажись не было, надо будет глянуть). Только их сопротивление у мя порядка сотен ом, часто они также играют роль ограничителей тока если что-то замкнется на выходе девайса. В некоторых случаях это допустимо, если они не сильно затягивают фронты. Кстати, длина кабеля была всего 30 см.

P.S. Надеюсь, пока мы тут флудим, основной проект этой темы понемногу собирается. :)

Ссылка на комментарий
Поделиться на другие сайты

не зря бытует мнение, что при размере кода больше 32 килобайт уже целесообразно искать что-то получше AVR. Об этом даже Atmel недвусмысленно намекал,

Ну, в принципе, определенная доля истины в этом утверждении есть. Просто в том проекте, большую часть этой большой памяти, занимали всяческие таблицы, причем обновляемые (т.е. использовалась как большой EEPROM). А так есть атмеги 640, и 1280 - тоже самое "ножка в ножку", только с 64к, и 128к флеши. Еще мне там потребовались все 4 RS232 (причем для связи с 3 атмегами 16, и одним DSP :wink: ) , 6 каналов АЦП, и масса переферийных ног, для подключения всяческой внешней автомтатики, осталось свободных что-то около десятка. А вот мощный процессор, там особо не был нужен. Так что использовался кристалл, вполне себе, "по полной".

Даже странно откуда вы угадали, что у меня был именно плоский кабель с чередующейся землей

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

Терминаторы - я назвал минимальную величину сопротивления. Важно, чтобы они находились на плате, рядом с процессором. (в принципе, с другого конца кабеля, в программаторе - тоже невредно несколько десятков ом поставить, но на плате - важнее)

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Я вернулся... Надо отписаться. Все ж я эту тему создал. Теперь упорно делаю вид, что это мой дневник... ::hyper

Сдал бакалаврат.

Тестил графический ЖК в лаборатории. Опытным путем оценил минимальную задержку, которую он поддерживает. Под конец накатал безумие, от которого ЖК начало местами глючить. Согрупник даже успел задокументировать.

http://www.youtube.com/watch?v=6hKv_8A9hgk

Препод сказал : "Че ты тут лазишь, ты сдал уже все. Иди отсюда."

В суматохе на кафедре про меня малеха забыли... Я протравил плату нормально спаял макет, честно пообещал, что отлажу и закорпусирую, положил на полку и начал сдавать бакалаврат. Отлаживать в итоге не стал, ибо вдоволь уже в лаборатории с ЖК наигрался... Хотелось отдыха моску. Сегодня поперся узнать рейтинг. Оказалось, меня помнят, и спрашиваю, где же мой макет? Ну, епт, сдался он им... Как будто, без этой хрени кафедра не может. Я тока хотел себе ЖК в карман отложить. Жаба ж давит. Я за него деньги платил... Эх...

Ссылка на комментарий
Поделиться на другие сайты

Howl Dgerone, поздравляю с покорением микроконтроллерных горизонтов. ::up

спрашиваю, где же мой макет? Ну, епт, сдался он им... Как будто, без этой хрени кафедра не может. Я тока хотел себе ЖК в карман отложить. Жаба ж давит. Я за него деньги платил...

Это у вас в ХНУРЭ так кафедры на бедных студентах наживаются? :mrgreen: Сочувствую. Надо было сразу плату зафоткать, раз уж эта тема – ваш блог. Это было бы логическим завершением ваших трудов и наших бесед (разной степени полезности :-D ). Если это возможно – пожалуйста сделайте. Неплохо бы также описать функциональность устройства (думаю, для этого достаточно было бы скопипастить сюда часть вашего бакалаврата), ибо, как вижу, вы довольно далеко ушли в другую степь от первоначального ТЗ. Ибо мне, например, непонятно назначение устройства и тип используемого ЖК.

Ну, в принципе, определенная доля истины в этом утверждении есть. Просто в том проекте, большую часть этой большой памяти, занимали всяческие таблицы, причем обновляемые (т.е. использовалась как большой EEPROM).

Так EEPROM, или FLASH? ;) Если вам была необходима большая EEPROM, то 4 килобайта – совсем ничего, проще внешнюю типа 24LC256 поцепить или ту же DataFlash от Атмела. Или переписывали именно флэш контроллера с помощью бутлоадера?

Касательно забивания памяти программ константными массивами. Иногда тоже тянется лапа написать что-то типа

const unsigned char __flash table[over9000 штук][5] = 
{
{0x00,0x0A,0x00,0x80,0x03},
{0x1F,0x00,0x4F,0x00,0x00},
........................
???????
Profit!
};[/code]

:-D Но в такого способа есть свои недостатки не только в плане забивания памяти программ и необходимости в более дорогих контроллерах. У меня были даже проблемы с линкером при попытке собрать довольно крупный проект с отдаленным вызовом громадного константного массива шрифтов для графического экрана. Все-таки такие вещи лучше выносить во внешнюю память, и переписывать проще и надежнее с инженерной точки зрения.

Еще мне там потребовались все 4 RS232 (причем для связи с 3 атмегами 16, и одним DSP :wink: )

Считайте, что вам снова удалось меня заинтриговать, ибо не могу даже представить, что может делать AVR вместе с DSP. :) Сколько видел разнообразных проектов – никогда с мегой1280. А соединить меги можно и одним уартом, благо поддерживает MPCM, но куда лучше, на мой взгляд, это решается с помощью одного SPI, намного быстрее и проще будет. Если скорость не так важна, то можно и TWI, когда-то так тоже делал.

Ссылка на комментарий
Поделиться на другие сайты

Howl Dgerone

Я вернулся... Надо отписаться. Все ж я эту тему создал. Теперь упорно делаю вид, что это мой дневник...

Слова не мальчика, но мужа ! :mrgreen:

Опытным путем оценил минимальную задержку, которую он поддерживает. Под конец накатал безумие, от которого ЖК начало местами глючить.

А в чем глюки ?

Маленькое личное наблюдение: с этими ЖК, ввиду исключительной тормознутости интерфейса, крайне невыгодно делать считывание из видеопамяти индикаторного модуля. Кроме того, считывание иногда глючит, даже когда запись работает безупречно :evil: . А елать всякие рисования линий на графических ЖК (как я вижу у вас, "всеми любимый" 64х128 :-D ), методом "считал байт-изменил нужные биты, записал обратно" - вообще смерти подобно. Необходимо буферизовать, и записывать байты по одному разу, при прорисовке всей картинки. Правда для полного избавления от чтения из ЖК, нужен килобайт видеобуфера (для 64х128), что уже не во всех контроллерах есть. Приходится изголяться. Хотя тут не грех даже внешнюю микросхему SRAM поставить.

Raymond

Так EEPROM, или FLASH?

В том устройстве, большая (256Кб), программная FLASH, использовалась как EEPROM. Т.е. для данных, которые могла менять сама программа. Для чего в область загрузчика была помещена специальные несколько процедур, для перезаписи FLASH, (ибо в процессе перезаписи основной кусок программной памяти для чтения недоступен, и пришлось сделать полностью "автономный" модуль кода) . Кстати был забавный глюк: если контроллер зависал, и в результате сбоя "залетал" в область, где лежали процедуры работы с FLASH, с фиг знает какими данными в оперативной памяти (а вероятность этого события оказалась довольно высокой, особенно когда бОльшая часть памяти - пустая и заполнена 0xFF, он по такому массиву двигается вперед, пока не добирается до "загрузчика" ) - программа "самоуничтожалась". Для борьбы с этой фигней, сначала была введена область запоненная повторяющимся кодом "перепрыгивания" процедур записи FLASH, (повторяющимся, потому что код не однобайтный, и была возможность что будет "исполнено не с начала", неверно интерпретировано, и "перепрыгивания" не произойдет, как показала статистика сбоев, это действительно так одиночный jmp - лишь снижал вероятность повреждения кода). Потом еще была добавлена, своего роде "парольная защита" процедуры записи, исключающая ее неверное срабатывание, в результате сбоя, и проверка адреса, чтобы не писать в область кода (хотя уже с пятью jmp, ложных срабатываний не фиксировалось).

Считайте, что вам снова удалось меня заинтриговать, ибо не могу даже представить, что может делать AVR вместе с DSP

Ну, DSP, управлял силовым инвертором - формировал произвольную вольт-амперную характеристику, получая данные о напряжениии и токе, на выходе, и выдавая ширину импульса ШИМ. Таким образом был сделан источник с таблично задаваемой ВАХ, произвольной формы. (Кстати потом были мысли поставить вместо DSP, ARM, или AVR32, даже частично реализованные в железе, но так и не "доведенные") .

А соединить меги можно и одним уартом, благо поддерживает MPCM, но куда лучше, на мой взгляд, это решается с помощью одного SPI, намного быстрее и проще будет.

Там все интерфейсы, кроме DSP, еще и оптоизолированные были. 1 - DSP, 2- RS485, на котором висела "гирлянда" силовых секций (в каждой по 16-й атмеге), 3 - пульт (индикатор, зуммер, клавиатура, тоже на еще одной атмеге), 4 - управление двигателем (стабилизация скорости двигателя постоянного тока, посредством переодического прерывания питания и измерения напряжения свободной генерации), а также на этой атмеге висел вспомогательный удаленный пульт (несколько кнопок и 2 потенциометра, заведенных на входы АЦП).

Сколько видел разнообразных проектов – никогда с мегой1280.

Ну, круг инженерных задач, велик и разнообразен :mrgreen: .

кстати, знаю еще один случай использования меги 2560 (разработка не моя), где требовалась именно большая память, причем как RAM, так и FLASH. FLASH, большей частью опять таки данные, (в основном там табличный SIN(x), лежал, чтобы не считать), програма занималась выделением нескольких первых гармоник, из сложного сигнала и такая фигня, в данном случае, оказалась выгоднее, чем БПФ.

Ссылка на комментарий
Поделиться на другие сайты

Переписывать память программ – это вы, конечно, экстремал. Наличие глюков в такой ситуации – вполне естественно, я думаю, да и количество перезаписи флеши на порядок ниже, чем в EEPROM, что только подтверждает необходимость внешней памяти.

Касательно DSP – я должен был догадаться, что речь идет о сварочном инверторе. :) Действительно, проект мощный. Но сделать гальваническую развязку для SPI совсем просто, благо все линии однонаправленные и нет никаких гальванических «ИЛИ» как в I2C, просто частоту надо будет подобрать так, чтобы позволял оптрон (адумка или HCPL2601 вполне себе решение). Сейчас вот подумал, что это может быть удобнее, если надо отвязать проц от группы процов, которые имеют одно питание. В этом случае достаточно развязать SPI в одном месте и чипселект для каждого контроллера.

Для силовых применений была даже идея использовать маломощные, но очень быстрые GFSK-радиомодули. У меня они уже работают на частоте 2.4ГГц при скорости в 1Мбит, этого вполне достаточно для управления силовыми ключами (необязательно напрямую таскать, можно оптимизировать алгоритм и передавать только управляющие параметры, которые могут изменятся адиабатически относительно основной частоты сигнала). Трансиверы двунаправленные, передают пакетами за один раз можно пихнуть до 255 байт – например ту же таблицу вольтамперки. При этом внутри корпуса прибора создается своеобразная полудуплексная радиосеть между разными модулями, каждый из которых имеет свой адрес. Все очень гибко и… необычно. Эта идея лежит за пределами темы Хаула, но вполне заслуживает названия «Нестандартное техническое решение», особенно если я решу это реализовать в железе. ::cool

Ссылка на комментарий
Поделиться на другие сайты

Переписывать память программ – это вы, конечно, экстремал. Наличие глюков в такой ситуации – вполне естественно,

Все глюки, были мужественно преодолены :-D На момент моего оттуда увольнения система работала замечательно.

я думаю, да и количество перезаписи флеши на порядок ниже, чем в EEPROM,

Таки да. ЕМНИП, 10тыс. циклов - FLASH, 100тыс. циклов - EEPROM. Но для тех потребностей, даже количества циклов перезаписи программной памяти - более чем хватало. (таблицы, которые иногда обновлялись иузером). Так что внешняя датафлеш, в данном случае - пустая трата денег.

Но сделать гальваническую развязку для SPI совсем просто,
Не спорю, только линий 3, против 2 для RS-232.

Кроме того, там был выйгрыш, от возможности каждого переферийного проца, посылать сообщение центральному, не синхронизируясь с осталными, не ожидая "окна", или запроса от центрального. Просто взял и вытолкнул в порт. Там прерывание сформировалось, причем каждому - свой буфер, и уже понятно "от кого" там лежит. Не спорю, можно решить по разному, в т.ч. и на SPI, но такой вариант - тоже имеет право на жизнь и он ни чуть не хуже :wink:

Для силовых применений была даже идея использовать маломощные, но очень быстрые GFSK-радиомодули.

...................................................................................................................................................

но вполне заслуживает названия «Нестандартное техническое решение», особенно если я решу это реализовать в железе.

.

Да УЖ ! Это и в правду нестандартно. :shock: Если только силовая часть не убьет все помехами.

Ссылка на комментарий
Поделиться на другие сайты

Да УЖ ! Это и в правду нестандартно. :shock: Если только силовая часть не убьет все помехами.

Вряд ли, товарищ тестил их в непосредственной близости стриммерного разряда катушки Теслы и ничего. Ибо гармоники, которые могут достичь частоты трансивера сами понимаете какой будут амплитуды. А у меня все проще – все рядом, надежно в плане дальности (корпус с линейными размерами больше ста метров делать не буду ;)) к тому же нет такой высоковольтщины (она будет вне корпуса) и переключение IGBT предпочитаю относительно мягкое. Все-таки мост всему голова, и при нормальной топологии особо большие выбросы исключены. Главное не делать соплей в интерфейсе SPI и хендшейкинге, где 3,3 вольтовые уровни и частоты пониже, чем при передаче. Думаю, вопрос помех по развязанному питанию будет актуальнее наводок на трарсиверы, но это тоже решаемо.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Собственно, ЖК

thumb_eef0c0ef.jpg

Собственно, неопрятная плата

thumb_6ccb794c.jpg

Собственно, макет. Как всегда, пугающий внешним видом корпус. За то быстроибез подручных инструментов разбирается. Все более-менее ценные детали снимаются. Есть разъем под програматор а пропрограмировании питается от USB (практика показала, от родной питающей схемы просидаетнапряжение). (родную схему питания я изъял в отдельный корпус. Вышла псевдо-флешка, укоторой с одной стороны USB-мамка а с другой клемы под крону. Тот еще цирк).

thumb_5b187c41.jpg

Собственно, теоритическая схема

thumb_6d0cb9ae.jpg

И алгоритм программы (первый, без оптимизации). Собственно, он вработу и пошел.

thumb_8abf3db7.jpg

От ТЗ я особо не отклонялся.

Сформулированное обоснование проекта я, видимо, форматнул с флешкой. Осталась толькочасть с кодом программы, вступлением и черновым рассмотрением аппаратно-програмной части.

Ссылка на комментарий
Поделиться на другие сайты

PS

Сегодня предложили направление темы диплома. Два варианта:

-цифровой генератор аналоговых сигналов произвольной формы (в реализации - компьютерная программа+устройство к любому порту на выбор)

-Измеритель добротности (потому же принципу)

Второй вариант более респектабелен, но первый мне проще и доступнее. Ищу инфу и думаю. ::confused

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...