АХТУНГ! НОВАЯ ВЕРСИЯ USBBit 1.1 - ИЗМЕНИЛ СХЕМУ, ПЕЧАТНУЮ ПЛАТУ. ПЕРЕПИСАЛ ЗАНОВО ИНСТРУКЦИИ ПО СБОРКЕ И НАСТРОЙКЕ.
Все подробности тут
Привет всем!
Хочу похвастаться своей последней разработкой.
Вот схема.
Собственно раньше похожий программатор публиковался, но там не было возможности запускать МК после прошивки... Я немного дополнил схему, внёс некоторые изменения в Avrdude, и вот результат.
Софт, печатная плата и.т.д тут Внимание! Я не рекламирую сайт, просто в рунете множество форумов, и прыгать по каждому из них, отвечая на вопросы, не очень удобно.
Последний раз редактировалось red2cat Пт фев 12, 2010 21:06:38, всего редактировалось 2 раз(а).
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
АХТУНГ! НОВАЯ ВЕРСИЯ USBBit 1.1 - ИЗМЕНИЛ СХЕМУ, ПЕЧАТНУЮ ПЛАТУ. ПЕРЕПИСАЛ ЗАНОВО ИНСТРУКЦИИ ПО СБОРКЕ И НАСТРОЙКЕ.
Все подробности тут История изменений:
v1.0
# Базовая версия
==================
v1.1
- Убраны два светодиода HL5,HL6.
+ Добавлены защитные резисторы R9,R10,R11 на линиях RX,TX,CLK6.
# Немного изменена трассировка печатной платы.
Извиняюсь за неграмотность, просто никогда этим не занимался. Скажите WinAvr обязательно нужна или только AvrDude хватит? Мне пока что нужно для разового программирования.
Если читал описание, то там написано - Программатор работает с модифицированным Avrdude, который можно скачать там-же. Т.е. можно пользоваться одним Аврдудом но модифицированным.
ЗЫ: Читайте, батенька, инструкции. (http://www.reddylab.eu/rclab/#7)
Вот за это отдельное спасибо, так как лень было качать исходники avrdude, искать и накладывать патчи. А хотелось "сверить часы".
потыкался осциллографом и успокоился Я уже давно ("очень давно") ткнулся в FT232RL, но мне не понравилась рваная форма SCK - (полу)-периоды скачут по длительности в разы, если не на порядок. Не паузы в пачках, что было бы логично при довольно высокой частоте sync bitbang (надо же и когда-то отправлять данные назад в PC), а чудненький хаос, иногда выстраивающийся в что-то в духе
Код:
_-_-_-______------_-_-_-_--------___________-_-_-
Поскольку непонятно, не бывают ли они при такой каше изредка короче, что будет приводить к сбою программирования, я не рискнул добавлять поддержку.
Времени мало, ещё пару раз с интервалом в несколько месяцев ткнулся, перепроверил свою тестовую программу, опять потыкался - результут тот же.
Ну а тут взял готовый avrdude, посмотрел осфиллографом - да та же самая каша.
Так что чёрт с ней, с кашей. Зря я боялся.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Каша ано канешна это полезна. А главное на скорость не влияет. Каша наверное генерируется параллельно с передачей битов, а не передача битов синхронизируется с тиками. Т.е. Эдакий криво-программный SPI.
Каша наверное генерируется параллельно с передачей битов, а не передача битов синхронизируется с тиками.
Не-а. Передача битов происходит кашеобразно.
На FT2232 выставить частоту SPI - так SCK стоит на этой частоте как влитой с паузами, если из-за нехватки пропускной способности USB не успевают поступать новые данные.
А тут выставил частоту sync bitbang, а она практически не выдерживается.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Так на сколько я понимаю, в режиме БитБанг МС ничего сама не генерирует и полностью подчиняется программе. Работа с БитБангом вроде как работа с ЛПТ портом. Или я заблуждаюсь?
Если передача данных устроена примерно так -
Код:
byte Sbyte = 0b10101010; // Байт который нужно передать
for(i=8; i; i--){ //Цикл для передачи 8ми бит
if ( 0x80 | Sbyte ) FT_PORT_MOSI = 1; // Если старший бит 1, то на выводе MOSI высокий уровень.
else FT_PORT_MOSI = 0; // Если старший бит 0, то на выводе MOSI низкий уровень.
FT_PORT_SCK = 0; // На выводе SCK, для тактирования МК, низкий уровень.
delay(); // Длительность уровня (варьируется в зависимости от нудной скорости передачи.)
FT_PORT_SCK = 1; // На выводе SCK, для тактирования МК, высокий уровень.
Sbyte << = 1; // сдвигаем биты в лево для следующей передачи.
}
Если в дудке используется подобная конструкция для передачи байтов, то каша обязательно будет.
Так (ну не свосем так, даже для LPT) делается в _асинхронном_ bitbang.
Если вместо FT_PORT_* = X; поставить установки-сбросы этих битов в одном буферном байте и для каждого такого обращения написать FT_Write а для чтения MISO FT_GetBitMode - то будет близкое к описанному и это будет тот дико медленный режим, о котором говорилось выше.
red2cat писал(а):
Если в дудке используется подобная конструкция для передачи байтов, то каша обязательно будет.
Если бы был этот режим, то время исчислялось бы минутами, а не секундами
Для FT232R в _синхронном_ режиме приблизительно так (не показана обработка ошибок, форимрование буфера ведётся без учёта возможных инверсий на линиях и т.п.):
Код:
// устновить режим синхронного ногодрыга FT_SetBitMode( ftHandle, direction_mask, 0x04);
// вывести len байт из указателя obuf // сгенерированным при помощи ногодрыга SPI // формируем в буфере образ состония выводов index = 0; while( len--) { int i = 8; unsigned data = *obuf++; do { uint8_t temp = 0; if( data & 0x80) temp |= mosi; ftdbuf[index++] = temp; ftdbuf[index++] = temp | sck; data <<= 1; } while(--i); } ftdbuf[index++] = 0;
DWORD written; // вот по этой команде весь буфер летит по USB, падает в FIFO // и должен с заданной частотой выдаться на шину dbus в FT232R, // после выдачи каждого байта делется ввод состояния ножек // и отправляется назад в PC FT_Write(ftHandle, ftdbuf, index, &written);
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Вон оно чё, хороший констракшн. Нужно будет что-то реализовать , что-бы лучше усвоить...
ЗЫ: В этом деле я профан, умею только чужие коды портить, а вот свои грамотно строить толком не умею....
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения