Параллельный программатор
Параллельный программатор
Здравствуйте все! Решил я повторить программатор HVProg по схеме:http://www.der-hammer.info/hvprog/dl/hvprog_05.gif
Плату взял готовую HVProg_05.lay (см. вложение), ничего не переделывал кроме замены резистора 36кОм на 34кОм (небыло другого)
Плату адаптеров - одностороннюю: ISP_20.lay (см. вложение)
Проблемма тут ранее поднималась, но толком не решалась... Дело вот в чем: программатор нормально работает в ISP режиме, но категорически не хочет нормально работать в параллельном! AVRStidio 4.16 его видит замечательно в обоих режимах, но в параллельном даже сигнатуру правильно не читает (тренировал mega8 и mega16) Пробывал разные студии-результат одинаковый. При попытке поменять фьюзы, студия вываливает окно (см. вложение ОшибкаHV)
Кто-нибудь подскажет алгоритм настройки HVProg на работу в HV
P.S. Конечно же наличие всех напряжений и нормальной связи программатора и адаптера, а так же отсутсвие КЗ проверялось!
Плату взял готовую HVProg_05.lay (см. вложение), ничего не переделывал кроме замены резистора 36кОм на 34кОм (небыло другого)
Плату адаптеров - одностороннюю: ISP_20.lay (см. вложение)
Проблемма тут ранее поднималась, но толком не решалась... Дело вот в чем: программатор нормально работает в ISP режиме, но категорически не хочет нормально работать в параллельном! AVRStidio 4.16 его видит замечательно в обоих режимах, но в параллельном даже сигнатуру правильно не читает (тренировал mega8 и mega16) Пробывал разные студии-результат одинаковый. При попытке поменять фьюзы, студия вываливает окно (см. вложение ОшибкаHV)
Кто-нибудь подскажет алгоритм настройки HVProg на работу в HV
P.S. Конечно же наличие всех напряжений и нормальной связи программатора и адаптера, а так же отсутсвие КЗ проверялось!
- Вложения
-
- HVProg_05.zip
- Плата в SL 5.0 HVProg_05.lay
- (45.38 КБ) 642 скачивания
-
- ISP_20.zip
- Плата адаптеров в SL 5.0 ISP_20.lay
- (20.73 КБ) 658 скачиваний
-
- HV.JPG
- ОшибкаHV
- (30.69 КБ) 1118 скачиваний
Последний раз редактировалось Chi-Nick Пн июл 20, 2009 16:06:38, всего редактировалось 1 раз.
Тот самый R6 36k вместе с R7 150k (схема hvprog_05 от 25.04.05) образует делитель напряжения на входе АЦП. Вполне возможно, что программатор видит "не то" напряжение и не хочет работать как положено.
Пробывал и 33кОм, и 39кОм в итоге нашел 36кОм - во всех случаях ничего не поменялось. При чтении сигнатуры - 0x00 0x00 0x00, при чтении фьюзов - стоят все галочки, при попытке записи измененного любого фьюза - ошибка (см выше)! Когда снимаю перемычку HV- сигнатура выглядит так: 0xFF 0xFF 0xFF
- htscooter
- Вымогатель припоя
- Сообщения: 566
- Зарегистрирован: Вт ноя 18, 2008 20:33:17
- Откуда: г.Луганск
Ну поскольку и программатор в данном варианте печатки, и плату адаптеров уже собирали, и проблем не было, то стоит все-таки еще раз проверить монтаж на наличие кз и отсутствие пропая. У меня была похожая проблема - оказалось непропаяны пара ножек на смд меге.
Хорошо и надежно работающая система безусловно красива
Проверяю уже в который раз! Что-то мне кажется, что Mega8535 не так работает. Хотя прошивка без ошибок в нее заливается. Вообщем хз что за ботва!
Вообщем пока ищу бубен!
Еще, если не затруднит, скажите свое напряжение на 33, 34 ногах Mega8535 (тот самый делитель) У меня 4.04В - это так и должно быть?
Еще, если не затруднит, скажите свое напряжение на 33, 34 ногах Mega8535 (тот самый делитель) У меня 4.04В - это так и должно быть?
-
viktor110668
- Открыл глаза
- Сообщения: 45
- Зарегистрирован: Пн мар 09, 2009 08:06:49
я сделал паралельный програматор elm chan
вот только софт работает из под дос
с командной строки немного неудобно зато микрухи оживают
попробую прикрепить макет платы которую я нарисовал
у меня усё работает
вот только софт работает из под дос
с командной строки немного неудобно зато микрухи оживают
попробую прикрепить макет платы которую я нарисовал
у меня усё работает
- Вложения
-
- .lay
- (81.26 КБ) 591 скачивание
- RA3VIE
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 02, 2009 13:07:29
- Откуда: г.Киржач Владимирская область
- Контактная информация:
ParaProg
Всем Привет!!!
Закончил сборку программатора "ПараПрог", подключил к компу, в итоге программа из трёх ATMega8
(У одной отключён SPI-режим, у второй напутаны LOW-биты, третья заведомо рабочая) программа увидела только вторую
Мегу, но програмировать Low-биты отказывается - пишет что вроде всё ОК! А в итоге все Low-биты остаются по старому
(во всех клетках галки), другие фузы программирует нормально!
Затем подключил новую (ни разу не програмировалась) Мегу16,
програматор ее увидел сразу, фузы показал заводские (не однои краснои
надписи небыло). Решил в порядке эксперимента заблокировать фуз
SPIEN, поставил на него галку и нажал "Записать", после повторного
чтения МК я увидел что этот фуз заблокировался успешно, но вместе с
ним галки появились во всеи колонке Low-фузов. Штобы проверить состоя
ние Low-фузов, я обратно разблокировал SPIEN и подключил МК к
програматору 5 проводков, в Унипрофе я увидел что на всех Low-фузах
дествительно стоят галки! Следовательно напрашивается вывод, что либо
программатор, либо программа принудительно записывает эти фузы! Не
случалось ли ни у ког из вас такого прикола, и что с этим можно сделать?
Да, забыл сказать, что по светодиодам, впаянным вместо опто-реле
видно, что на программируемыи МК с момента включения программатора
непрерывно подаётся 12В, а светодиод (5В) кратковременно моргает
только при чтении-записи МК (на контактах 5-6 и 7-8 стоят перемычки),
я попробывал выпаять перемычку 5-6(5В), в результате неизменилось
ровным счетом ничего - МК также читается и пишется (не считая
Low-фузов)без напряжения питания (5В)! Может что-то не так с прошивкои
самого программатора (В принципе она же из статьи)?
Что вы можете подсказать по этому поводу?
Закончил сборку программатора "ПараПрог", подключил к компу, в итоге программа из трёх ATMega8
(У одной отключён SPI-режим, у второй напутаны LOW-биты, третья заведомо рабочая) программа увидела только вторую
Мегу, но програмировать Low-биты отказывается - пишет что вроде всё ОК! А в итоге все Low-биты остаются по старому
(во всех клетках галки), другие фузы программирует нормально!
Затем подключил новую (ни разу не програмировалась) Мегу16,
програматор ее увидел сразу, фузы показал заводские (не однои краснои
надписи небыло). Решил в порядке эксперимента заблокировать фуз
SPIEN, поставил на него галку и нажал "Записать", после повторного
чтения МК я увидел что этот фуз заблокировался успешно, но вместе с
ним галки появились во всеи колонке Low-фузов. Штобы проверить состоя
ние Low-фузов, я обратно разблокировал SPIEN и подключил МК к
програматору 5 проводков, в Унипрофе я увидел что на всех Low-фузах
дествительно стоят галки! Следовательно напрашивается вывод, что либо
программатор, либо программа принудительно записывает эти фузы! Не
случалось ли ни у ког из вас такого прикола, и что с этим можно сделать?
Да, забыл сказать, что по светодиодам, впаянным вместо опто-реле
видно, что на программируемыи МК с момента включения программатора
непрерывно подаётся 12В, а светодиод (5В) кратковременно моргает
только при чтении-записи МК (на контактах 5-6 и 7-8 стоят перемычки),
я попробывал выпаять перемычку 5-6(5В), в результате неизменилось
ровным счетом ничего - МК также читается и пишется (не считая
Low-фузов)без напряжения питания (5В)! Может что-то не так с прошивкои
самого программатора (В принципе она же из статьи)?
Что вы можете подсказать по этому поводу?
Биты защиты в каком состоянии? Пробовалось выполнить "Стереть кристалл"? С некоторыми установленными битами защиты чтение и перезапись Flash и EEPROM заблокированы как для параллельного, так и для последовательного режимов программирования, изменение Fuse-битов так же не возможно, возможно из-за этого траблы возникают.
По какой схеме программатор собран не совсем понятно..
По какой схеме программатор собран не совсем понятно..
- RA3VIE
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 02, 2009 13:07:29
- Откуда: г.Киржач Владимирская область
- Контактная информация:
DiGiCat писал(а):Биты защиты в каком состоянии? Пробовалось выполнить "Стереть кристалл"? С некоторыми установленными битами защиты чтение и перезапись Flash и EEPROM заблокированы как для параллельного, так и для последовательного режимов программирования, изменение Fuse-битов так же не возможно, возможно из-за этого траблы возникают.
По какой схеме программатор собран не совсем понятно..
Это мне вопрос? Если мне, то фузы установленны как на рисунке (см. приложение). ParaProg собирал по схеме с MAX232 на плате от Sailansera
- Вложения
-
- 16.jpg
- (65.06 КБ) 678 скачиваний
Алексей П писал(а):Chi-Nick проверь есть ли 12В на ресете, возможно причина в этом.
Проверял. Импульс очень короткий! Осциллографом видно, что есть, но успевает ли обработаться неясно!. При нажатии и удерживании reset (для программатора, т.е. когда желтый светодиод горит) на адаптере (на программируемой МС) на resete 11.85V есть!
- htscooter
- Вымогатель припоя
- Сообщения: 566
- Зарегистрирован: Вт ноя 18, 2008 20:33:17
- Откуда: г.Луганск
В высоковольтном режиме без 12-ти вольт у меня тоже всякий бред показывает и во фьюзах все галки стоят. Так что, как сказал Алексей П, смотри в эту сторону. В процессе программирования 12 вольт должны быть все время, а не импульсом.
Я вот тут поигрался с драйверами на FT-шку. Довольно интересный результат получился
На производительность конешно не влияет
, но глаза радует
. Результат во вложении 
Я вот тут поигрался с драйверами на FT-шку. Довольно интересный результат получился
- Вложения
-
- ftdi.gif
- Воткнуты две FT232RL
- (74.56 КБ) 823 скачивания
Хорошо и надежно работающая система безусловно красива
- htscooter
- Вымогатель припоя
- Сообщения: 566
- Зарегистрирован: Вт ноя 18, 2008 20:33:17
- Откуда: г.Луганск
В папке с драйверами (у меня CDM 2.04.06 WHQL Certified называется) в файлах ftdibus.inf и ftdiport.inf нужно прописать что нужно, там в самом низу:
и
Если микрух больше одной, то, как я понял, нужно выставлять VID/PID у каждой свой (в MProg'е). Ну и соответственно в драйверах (эти же файлы, и еще ftd2xx.h) VID/PID нужно править на свой. Получится отдельные папки с дровами под каждую микруху. Может я что-то и не так понял, но работает
Код: Выделить всё
[Strings]
Ftdi="FTDI"
DESC="CDM Driver Package"
DriversDisk="FTDI USB Drivers Disk"
USB\VID_0403&PID_6001.DeviceDesc="HV_Prog"
USB\VID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A"
USB\VID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B"
SvcDesc="USB Serial Converter Driver"
ClassName="USB"и
Код: Выделить всё
[Strings]
FTDI="FTDI"
DESC="CDM Driver Package"
DriversDisk="FTDI USB Drivers Disk"
PortsClassName = "Ports (COM & LPT)"
VID_0403&PID_6001.DeviceDesc="HV_Prog"
VID_0403&PID_6010.DeviceDesc="HV_Prog"
SvcDesc="USB Serial Port Driver"
SerEnum.SvcDesc="Serenum Filter Driver"Если микрух больше одной, то, как я понял, нужно выставлять VID/PID у каждой свой (в MProg'е). Ну и соответственно в драйверах (эти же файлы, и еще ftd2xx.h) VID/PID нужно править на свой. Получится отдельные папки с дровами под каждую микруху. Может я что-то и не так понял, но работает
Хорошо и надежно работающая система безусловно красива
Собрал программатор по следующей схеме. На вход RESET с КТ361Б почемуто подается 9,8В вместо 12В. Уже пробовал подбирать номиналы резистора в базе 361 - не помогает. Вроде у кого-то была такая проблема здесь, как решили? Или я с транзисторами вообще не дружу?
Что интересно на запрос сигнатуры у mega8 мега отвечает последним принятым байтом(т.е. адресом байта сигнатуры). Причем напряжение на ее выходах 4.5В почти как Vcc от USB (у меня оно как раз =4,6В), в то время как на входы данных меги подаются не более 3.3В. Этот глюк меги связан с заниженым Vpp?
Что интересно на запрос сигнатуры у mega8 мега отвечает последним принятым байтом(т.е. адресом байта сигнатуры). Причем напряжение на ее выходах 4.5В почти как Vcc от USB (у меня оно как раз =4,6В), в то время как на входы данных меги подаются не более 3.3В. Этот глюк меги связан с заниженым Vpp?
- Вложения
-
- prog1.gif
- (118.75 КБ) 847 скачиваний
htscooter писал(а):В высоковольтном режиме без 12-ти вольт у меня тоже всякий бред показывает и во фьюзах все галки стоят. Так что, как сказал Алексей П, смотри в эту сторону. В процессе программирования 12 вольт должны быть все время, а не импульсом.
В том то и дело, что если я правильно понял, то 12В подается как только в прогамме нажимаешь кнопку читать или прогаммировать, а не постоянно... Если не так-поправьте, может у меня только в этом и проблемма! У меня желтый светодиод только при нажатии Reset prog на плате или кнопок чтение/запись в программе загорается на полсекунды примерно, и выскакивает ошибка. Я думал, что при нажатии в прогамме запиись или чтение, сначала проверяется готовность программируемой МС и только если все готово, то начинается процесс программирование, где 12В уже не импульсом, а пока идет процесс...
Как, все-таки, должно хотябы внешне выглядеть HV программирование на HVProg?!
У кого-нибудь вообще avrpp заработал?
Уже решил проблему с питанием, но все равно не хочет работать.
Вот как выглядит процедура инициализации у avrpp:
т.е. 12В подается на время считывания:
вроде все по документации атмела (кроме некоторых вещей), уже вносил небольшие изменения, но не помогает.
Уже решил проблему с питанием, но все равно не хочет работать.
Вот как выглядит процедура инициализации у avrpp:
Код: Выделить всё
int init_devices ()
{
DWORD adr;
char *const DetMode[] = {"PAR", "HVS", "HVS15" };
char tmp_str[50];
/* Execute initialization if not initialized yet */
if(Device != NULL) return (0);
if(initialize_port()) return (RC_INIT);
MESS("Put a device on the socket...");
// getchar();
for (int i = 0; i < 10; i ++) {
MESS(".");
delay_ms(1000);
}
MESS("\n");
for (CtrlPort.Mode = 0 ; CtrlPort.Mode < 3; CtrlPort.Mode++) {
power_on(1);
/* read device signature */
for(adr = 0; adr <3>ID != N0000; Device++) {
if(memcmp(SignBuff, Device->Sign, 3) == 0) break;
}
if (Device->ID != N0000) break; /* Break if a device is detected */
power_on(0);
// fprintf(stderr, "%s->Unknown device (%02X-%02X-%02X).\n",
// DetMode[CtrlPort.Mode], SignBuff[0], SignBuff[1], SignBuff[2]);
т.е. 12В подается на время считывания:
Код: Выделить всё
void power_on (int sw)
{
WORD d;
int n;
if(!sw) { /* Power OFF */
// _outp(LPT_CTL, RegCtl |= B_VPP); /* Vpp off */
PIO_Clear(&pinVPP);
PIO_Set(&pinLED17); //
delay_ms(1); /* 1ms */
// _outp(LPT_DAT, RegDat = 0); /* Signals = L */
PIO_Clear(&pinXT1);
PIO_Clear(&pinOE);
PIO_Clear(&pinWR);
PIO_Clear(&pinBS1);
PIO_Clear(&pinXA0);
PIO_Clear(&pinXA1);
//PIO_Set(&pinXA0);
//PIO_Set(&pinXA1);
PIO_Clear(&pinDATA0_DO);
PIO_Clear(&pinDATA1_DO);
PIO_Clear(&pinDATA2_DO);
PIO_Clear(&pinDATA3_DO);
PIO_Clear(&pinDATA4_DO);
PIO_Clear(&pinDATA5_DO);
PIO_Clear(&pinDATA6_DO);
PIO_Clear(&pinDATA7_DO);
// _outp(LPT_CTL, RegCtl |= B_VCC); /* Vcc off */
PIO_Clear(&pinVCC);
delay_ms(10); /* 10ms */
return;
}
/* Power ON */
/* For parallel device */
// _outp(LPT_CTL, RegCtl &= (BYTE)~B_VCC); /* Vcc on */
PIO_Clear(&pinXT1);
PIO_Clear(&pinOE);
PIO_Clear(&pinWR);
//PIO_Set(&pinBS1);
PIO_Clear(&pinBS1);
PIO_Clear(&pinXA0);
PIO_Clear(&pinXA1);
//PIO_Set(&pinXA0);
//PIO_Set(&pinXA1);
PIO_Clear(&pinDATA0_DO);
PIO_Clear(&pinDATA1_DO);
PIO_Clear(&pinDATA2_DO);
PIO_Clear(&pinDATA3_DO);
PIO_Clear(&pinDATA4_DO);
PIO_Clear(&pinDATA5_DO);
PIO_Clear(&pinDATA6_DO);
PIO_Clear(&pinDATA7_DO);
PIO_Set(&pinVCC);
if (!CtrlPort_->Quick) {
IODLY(3000);
for (n = 0; n < 6; n++) { //3 /* Toggle XTAL1 six times */
// _outp(LPT_DAT, B_XT1);
// _outp(LPT_DAT, 0);
PIO_Set(&pinXT1);
PIO_Clear(&pinXT1);
}
}
// _outp(LPT_DAT, RegDat = B_OE); /* OE = H */
PIO_Clear(&pinXT1);
PIO_Set(&pinOE);
PIO_Clear(&pinWR);
//PIO_Set(&pinWR);
PIO_Clear(&pinBS1);
PIO_Clear(&pinXA0);
PIO_Clear(&pinXA1);
//PIO_Set(&pinXA0);
//PIO_Set(&pinXA1);
PIO_Clear(&pinPAGEL);
// _outp(LPT_CTL, RegCtl &= (BYTE)~B_VPP); /* Vpp on */
PIO_Set(&pinVPP);
PIO_Clear(&pinLED17); //
// _outp(LPT_DAT, RegDat |= B_WR); /* WR = H */
PIO_Set(&pinWR);
delay_ms(1); /* 1ms */
return;
}
вроде все по документации атмела (кроме некоторых вещей), уже вносил небольшие изменения, но не помогает.
