Параллельный программатор

Обсуждаем контроллеры компании Atmel.
Chi-Nick
Родился
Сообщения: 6
Зарегистрирован: Пн июн 22, 2009 11:06:50
Контактная информация:

Параллельный программатор

Сообщение Chi-Nick »

Здравствуйте все! Решил я повторить программатор 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.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 раз.
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

Сообщение htscooter »

Тот самый R6 36k вместе с R7 150k (схема hvprog_05 от 25.04.05) образует делитель напряжения на входе АЦП. Вполне возможно, что программатор видит "не то" напряжение и не хочет работать как положено.
Хорошо и надежно работающая система безусловно красива
Chi-Nick
Родился
Сообщения: 6
Зарегистрирован: Пн июн 22, 2009 11:06:50
Контактная информация:

Сообщение Chi-Nick »

Тот самый 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
Откуда: г.Луганск

Сообщение htscooter »

Ну поскольку и программатор в данном варианте печатки, и плату адаптеров уже собирали, и проблем не было, то стоит все-таки еще раз проверить монтаж на наличие кз и отсутствие пропая. У меня была похожая проблема - оказалось непропаяны пара ножек на смд меге.
Хорошо и надежно работающая система безусловно красива
Chi-Nick
Родился
Сообщения: 6
Зарегистрирован: Пн июн 22, 2009 11:06:50
Контактная информация:

Сообщение Chi-Nick »

Проверяю уже в который раз! Что-то мне кажется, что Mega8535 не так работает. Хотя прошивка без ошибок в нее заливается. Вообщем хз что за ботва! :( Вообщем пока ищу бубен!

Еще, если не затруднит, скажите свое напряжение на 33, 34 ногах Mega8535 (тот самый делитель) У меня 4.04В - это так и должно быть?
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

Сообщение htscooter »

Мой "китаец" показывает 4,00 вольта. Теоретически должно быть 4,03 с копейками. Что еще может быть - даже не знаю, впринципе сдесь все уже обсосано донельзя - монтаж, напряжения, фьюзы, правильность печатки...
Хорошо и надежно работающая система безусловно красива
viktor110668
Открыл глаза
Сообщения: 45
Зарегистрирован: Пн мар 09, 2009 08:06:49

Сообщение viktor110668 »

я сделал паралельный програматор elm chan
вот только софт работает из под дос
с командной строки немного неудобно зато микрухи оживают
попробую прикрепить макет платы которую я нарисовал
у меня усё работает
Вложения
.lay
(81.26 КБ) 591 скачивание
Аватара пользователя
RA3VIE
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт июн 02, 2009 13:07:29
Откуда: г.Киржач Владимирская область
Контактная информация:

ParaProg

Сообщение RA3VIE »

Всем Привет!!!
Закончил сборку программатора "ПараПрог", подключил к компу, в итоге программа из трёх ATMega8
(У одной отключён SPI-режим, у второй напутаны LOW-биты, третья заведомо рабочая) программа увидела только вторую
Мегу, но програмировать Low-биты отказывается - пишет что вроде всё ОК! А в итоге все Low-биты остаются по старому
(во всех клетках галки), другие фузы программирует нормально!
Затем подключил новую (ни разу не програмировалась) Мегу16,
програматор ее увидел сразу, фузы показал заводские (не однои краснои
надписи небыло). Решил в порядке эксперимента заблокировать фуз
SPIEN, поставил на него галку и нажал "Записать", после повторного
чтения МК я увидел что этот фуз заблокировался успешно, но вместе с
ним галки появились во всеи колонке Low-фузов. Штобы проверить состоя
ние Low-фузов, я обратно разблокировал SPIEN и подключил МК к
програматору 5 проводков, в Унипрофе я увидел что на всех Low-фузах
дествительно стоят галки! Следовательно напрашивается вывод, что либо
программатор, либо программа принудительно записывает эти фузы! Не
случалось ли ни у ког из вас такого прикола, и что с этим можно сделать?
Да, забыл сказать, что по светодиодам, впаянным вместо опто-реле
видно, что на программируемыи МК с момента включения программатора
непрерывно подаётся 12В, а светодиод (5В) кратковременно моргает
только при чтении-записи МК (на контактах 5-6 и 7-8 стоят перемычки),
я попробывал выпаять перемычку 5-6(5В), в результате неизменилось
ровным счетом ничего - МК также читается и пишется (не считая
Low-фузов)без напряжения питания (5В)! Может что-то не так с прошивкои
самого программатора (В принципе она же из статьи)?
Что вы можете подсказать по этому поводу?
Аватара пользователя
Алексей П
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Сб фев 24, 2007 06:26:18
Откуда: г.Нижний Тагил
Контактная информация:

Сообщение Алексей П »

Chi-Nick проверь есть ли 12В на ресете, возможно причина в этом.
Аватара пользователя
DiGiCat
Друг Кота
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

Сообщение DiGiCat »

Биты защиты в каком состоянии? Пробовалось выполнить "Стереть кристалл"? С некоторыми установленными битами защиты чтение и перезапись Flash и EEPROM заблокированы как для параллельного, так и для последовательного режимов программирования, изменение Fuse-битов так же не возможно, возможно из-за этого траблы возникают.
По какой схеме программатор собран не совсем понятно..
Аватара пользователя
RA3VIE
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт июн 02, 2009 13:07:29
Откуда: г.Киржач Владимирская область
Контактная информация:

Сообщение RA3VIE »

DiGiCat писал(а):Биты защиты в каком состоянии? Пробовалось выполнить "Стереть кристалл"? С некоторыми установленными битами защиты чтение и перезапись Flash и EEPROM заблокированы как для параллельного, так и для последовательного режимов программирования, изменение Fuse-битов так же не возможно, возможно из-за этого траблы возникают.
По какой схеме программатор собран не совсем понятно..


Это мне вопрос? Если мне, то фузы установленны как на рисунке (см. приложение). ParaProg собирал по схеме с MAX232 на плате от Sailansera
Вложения
16.jpg
(65.06 КБ) 678 скачиваний
Chi-Nick
Родился
Сообщения: 6
Зарегистрирован: Пн июн 22, 2009 11:06:50
Контактная информация:

Сообщение Chi-Nick »

Алексей П писал(а):Chi-Nick проверь есть ли 12В на ресете, возможно причина в этом.


Проверял. Импульс очень короткий! Осциллографом видно, что есть, но успевает ли обработаться неясно!. При нажатии и удерживании reset (для программатора, т.е. когда желтый светодиод горит) на адаптере (на программируемой МС) на resete 11.85V есть!
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

Сообщение htscooter »

В высоковольтном режиме без 12-ти вольт у меня тоже всякий бред показывает и во фьюзах все галки стоят. Так что, как сказал Алексей П, смотри в эту сторону. В процессе программирования 12 вольт должны быть все время, а не импульсом.
Я вот тут поигрался с драйверами на FT-шку. Довольно интересный результат получился :) На производительность конешно не влияет :)) , но глаза радует :))). Результат во вложении :)
Вложения
ftdi.gif
Воткнуты две FT232RL
(74.56 КБ) 823 скачивания
Хорошо и надежно работающая система безусловно красива
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

прикольно! :) а описать подробнее "игры" можете, у меня руки никак до этого не доходят :roll:
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

Сообщение htscooter »

В папке с драйверами (у меня CDM 2.04.06 WHQL Certified называется) в файлах ftdibus.inf и ftdiport.inf нужно прописать что нужно, там в самом низу:

Код: Выделить всё

[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 нужно править на свой. Получится отдельные папки с дровами под каждую микруху. Может я что-то и не так понял, но работает :)))
Хорошо и надежно работающая система безусловно красива
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

кстати я наконец то довел до "ума" свой программатор (читать - упаковал в корпус) :)) 8)
Изображение
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

Сообщение htscooter »

Красиво! А меня все время что-то отвлекает :(
Хорошо и надежно работающая система безусловно красива
Cyber
Родился
Сообщения: 13
Зарегистрирован: Вс авг 09, 2009 15:32:19

Сообщение Cyber »

Собрал программатор по следующей схеме. На вход RESET с КТ361Б почемуто подается 9,8В вместо 12В. Уже пробовал подбирать номиналы резистора в базе 361 - не помогает. Вроде у кого-то была такая проблема здесь, как решили? Или я с транзисторами вообще не дружу? :oops:
Что интересно на запрос сигнатуры у mega8 мега отвечает последним принятым байтом(т.е. адресом байта сигнатуры). Причем напряжение на ее выходах 4.5В почти как Vcc от USB (у меня оно как раз =4,6В), в то время как на входы данных меги подаются не более 3.3В. Этот глюк меги связан с заниженым Vpp?
Вложения
prog1.gif
(118.75 КБ) 847 скачиваний
Chi-Nick
Родился
Сообщения: 6
Зарегистрирован: Пн июн 22, 2009 11:06:50
Контактная информация:

Сообщение Chi-Nick »

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


В том то и дело, что если я правильно понял, то 12В подается как только в прогамме нажимаешь кнопку читать или прогаммировать, а не постоянно... Если не так-поправьте, может у меня только в этом и проблемма! У меня желтый светодиод только при нажатии Reset prog на плате или кнопок чтение/запись в программе загорается на полсекунды примерно, и выскакивает ошибка. Я думал, что при нажатии в прогамме запиись или чтение, сначала проверяется готовность программируемой МС и только если все готово, то начинается процесс программирование, где 12В уже не импульсом, а пока идет процесс...
Как, все-таки, должно хотябы внешне выглядеть HV программирование на HVProg?!
Cyber
Родился
Сообщения: 13
Зарегистрирован: Вс авг 09, 2009 15:32:19

Сообщение Cyber »

У кого-нибудь вообще avrpp заработал?
Уже решил проблему с питанием, но все равно не хочет работать.
Вот как выглядит процедура инициализации у 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;
}

вроде все по документации атмела (кроме некоторых вещей), уже вносил небольшие изменения, но не помогает.
Ответить

Вернуться в «AVR»