Автор Тема: Програматор PonyProg  (Прочетена 25374 пъти)

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Програматор PonyProg
« -: Август 27, 2007, 12:22:34 pm »
Първо няколко думи за програматорите и защо те са ни необходими в контекста на работа с микроконтолери. След като напишем дадена програма и компилираме получаваме поредица от машинни инструкции записани във файл (най често със разширение .hex) Тази файл всъщност представлява представлява превод на нашата програма на специфичния език на микроконтролера, така че той да може да я изпълни. Целта на прогрматора е да запише въпросната програма в енергонезависимата памет на микроконтролера (така наречения FLASH). Програматора е устройство, което представлява съвкупност от 2 части хардуер и софтуер. С помощта на хардуера се осъществява физическа връзка между MCU и PC, а софтуера управлява процеса на запис.
След тези уводни думи ще опиша накратко работата с известния програматор PonyProg и конкретно как да записваме MCU от серията AVR на фирмата ATMEL, към която спадат и ATMEGA процесорите.
PonyProg може да се изтегли от следната страница:
http://www.lancos.com/ppwin95.html ,последната версия е 2.07a
PonyProg предлага подръжка на много видове памети и MCU и два вида интерфейса за връзка чрез серийния и паралелния порт на PC. Паралелния порт е по удобен за работа тъй като позволява директна връзка със MCU, без да е неободимо да се конвертират нивата на сигналите.
След инсталирането на програмата е нужно да се направи калибрация и да се настрои интрефейса за връзка. Калибрирането става от меню "Setup->Calibration" като се следват инструкциите по екрана. Настройката на интерфейса става от меню "Setup ->Interface Setup", появява се един диалогов прозорез "I/O port setup" и него избираме режим "Parallel" и опция от падащото меню "AVR ISP I/O"  и накрая избирам паралелния порт с който да работим (обикновено това е LPT1)
След като приключихме с тези настройки, остава да укажем фамилията  и типа процесор с който ще работим. Това става от двете падащи менюта от оснвния прозорец на програмата. От първия избираме "AVR micro", а от втория конкретния модел в  нека в нашия пример това  е ATmega8. С това софтуера е настроен и сега трябва да се преборим  с хардуера. Има няколко различни схеми за свързване, засега ще се спрем на най простата, която е дал Борислав в този негов постинг:
http://www.robotics-bg.com/forum/viewtopic.php?p=490#490
Тя позволява директна връзка (през резистори, моля не си ги спестявайте!) между MCU и PC. Каква е идеята? Микроконтролера има вграден протокол за прорамиране през специализиран сериен интерфейс. Той ползва 5 връзки със следните имена SCK, MISO,MOSI, RESET и разбира се GND. Тези сигнали са изведени на пиновете на MCU и необходимо да се свържат съгласно указаната схема към паралелния порт. PonyProg управлява съответните пинове на пралалелния порт като по тозиначин реализира протокола за запис на паметта на микроконтролера.
Засега спирам и в следващите постинги ще обясня по нататъшните стъпки. Успех на всички :)
Ясен Паунски,  гр.София, 39 г.

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Програматор PonyProg
« Отговор #1 -: Октомври 16, 2007, 12:17:13 am »
Продължвам с описанието как да програмираме AVR микроконтролер. Като пример ще използваме програмата за мигащия светодиод и малкия хардуер за него:
http://www.robotics-bg.com/forum/viewtopic.php?p=2174#2174
И така закачаме програматора и пускаме захранването на схемата, стартираме PonyProg и вече може да проверим дали имаме връзка с MCU.
За целта от меню "Command" избираме "Security and Configuration Bits" или за по-кратко натискаме "Ctrl-S", появява се един диалогов прозорец с конфигурационните (fuse) битове на контролера. Нека опитаме да ги прочетем. Натискаме бутон "Read" и ако всичко е ок програмата ще ги прочете и ще ни ги покаже. Ако чипа (ATMEGA8) е нов ще се види следната картинка:

Едно кратко описание на различните опции. В горната част на прозореца се намират така наречените "Lock Bits", чрез тях се защитава софтуера записан вече в MCU,   в момента няма да ги обсъждаме. По важна е другата част с "Fuse Bits", чрез тях се избират различни основни настройки на MCU. Може би най-важни са битове "CKSEL3-0", чрез тях се избира какъв източник на тактов сигнал да ползва процесора. В момента тяхното състояние е 0001. (Едно пояснение ако има отметка на съответната позиция това значи че бита и програмиран и неговото състояние е 0).  Това състояние значи че контролера е програмиран да ползва като тактов сигнал от  вградения RC генератор и той е настроен на 1MHz и това е текущата тактова честота на процесора. Битовете "SUT1-0" задават времето което процесора да изчака преди да започне да изпълнява записаната в паметта програма. Това време е необходимо за да е сигурно че захранващото напрежение е достигнало необходимите нива и ткатовия генератор е стабилизирал своята работа. В момента тези битове са настроени на максималното време на изчакване и засега няма да ги променяме. Сега нашата цел да превключим на кварцово стабилизирания тактов генератор, за който сме монтирали кварца на 8MHz.  За целта трябва да пренастроим "CKSEL3-0" на "1111":

т.е махаме отметките от "CKSEL3-0"и и натискаме бутон "Write". Преди да натиснете бутона трябва да сте сигурни че кварца и кондезаторите са свързани правилно за да може контролера да превключи успешно на кварцовия генератор. След натискане на бутона "Write", прогрмата ще запише новата конфигурация и диалоговия прозорец ще се прибере. Сега остава да проверим дали всичко е наред, за целта нека опитаме да прочетем FLASH паметта на процесора. Това става от "Command"->"Read Program (FLASH)", ако всичко е наред ще се появи  един "Progress Bar", програмата ще изчете FLASH паметта и ще ни уведоми че процеса е завършил успешно.  Основния прозорец показващ съдържнието на паметта,трябва да е пълен с "FF", това значи че паметта на контролера е празна. Сега нека заредим нашата програмата за мигащия диод. Това става от меню "File"->"Open Program (FLASH) File". Избираме в диалоговия прозорез "File Type" - ".hex", след това намираме hex-файл генериран в резултат на компилацията, в нашия случай той се казва "led1.hex" и го зареждаме.  В основния прозорец на програмата ще появи неговото съдържание 16-чен вид. Сега вече може да запишем програмата в паметта, това става от "Command"->"Write Program (FLASH)". Ще изскочи един прозорец, който пита дали сте сигурни, щото предходното съдържание на FLASH паметта ще бъде изтрито. Натискате смело "Yes" и започва запис, след записа следва проверка и ако всичко е наред се получва съобщение "Write successful" и светодиода трябва да замига весело :)
Това е в общи линии процеса на запис. Разбира се вече след като веднъж сме настроили конфигурационните битове, няма нужда всеки път, когато записваме програма да ги записваме и тях, по-нататък ще пиша повече и за другите конфигурационни битове.
Ясен Паунски,  гр.София, 39 г.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Програматор PonyProg
« Отговор #2 -: Април 05, 2008, 01:33:06 pm »
имам проблем защо така става

натискам "Ctrl-S"и после "Read" и се полочава това
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Програматор PonyProg
« Отговор #3 -: Април 05, 2008, 02:08:43 pm »
Това съобщение излиза когато PonyProg, не може да установи връзка с MCU. Възможните причини могат да бъдат различни: грешка при свързването, проблеми с микроконтролера. Дай повече инофрмация за постановката която ползваш.
Ясен Паунски,  гр.София, 39 г.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Програматор PonyProg
« Отговор #4 -: Април 05, 2008, 03:52:23 pm »
ами ето програматора и схемата
 


това съм направил но нестава
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Програматор PonyProg
« Отговор #5 -: Април 05, 2008, 04:04:13 pm »
На схемата, която си дал липсват важни неща
1. Първо няма филтрови комдензатори на захранването, задължително трябва да има 100nF и 10uF в паралел от VCC към GND!
2. AVCC и AGND не са свързани никъде.
3. Няма pull-up резистор на RESET пина
Въобще ще помоля Борислав да корегира тази схема, защото подвежда хората. Разгледай тази схема:
http://www.robotics-bg.com/forum/viewtopic.php?p=1874#1874
Тя е проверена и тествана, дори съм да инструкции как да се сглоби.
Така че добави нещата, които липсват на твойта схема, провери внимателно връзките и пробвай пак.
Ясен Паунски,  гр.София, 39 г.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Програматор PonyProg
« Отговор #6 -: Април 05, 2008, 04:14:27 pm »
добре благодаря много
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Програматор PonyProg
« Отговор #7 -: Април 06, 2008, 09:47:13 am »
@ka4a4e, какво стана подкара ли системата?
Ясен Паунски,  гр.София, 39 г.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Програматор PonyProg
« Отговор #8 -: Април 06, 2008, 01:19:45 pm »
Цитат на: "yasko"
@ka4a4e, какво стана подкара ли системата?


пак същото показва направих го но пак неще се свържи с компютъра
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Програматор PonyProg
« Отговор #9 -: Април 20, 2008, 08:32:29 pm »
@ka4a4e ще опитам да дам някои насоки за откриване на проблема:
1. Програматор -провери дали правилно си направил схемата на програматора, след това провери дали PonyProg  е настроен както трябва описал съм в темата какво трябва да се направи. В диалоговия прозорец "Interface Setup" има бутон "Probe" - при включен програматор резултата от теста трябва да е "Test Ok". В схемата на прграматора може да пробваш да намалиш стойността на резисторите, примерно на 150 ома.
2. Микроконтролер: провери отново схемата и дали е го връзваш правилно към програматора. Микроконтролера, който ползваш чисто нов ли е? С какво захранваш схемата? Тук в това мнение съм описал някои контролни точки за измерване:
http://www.robotics-bg.com/forum/viewtopic.php?p=2176&sid=6e73a8b56a87410d902d48cf9070f9a0#2176
Успех
Ясен Паунски,  гр.София, 39 г.

chwor

  • Вече знае какво е робот!
  • *****
  • Публикации: 53
    • Профил
Програматор PonyProg
« Отговор #10 -: Април 25, 2008, 09:39:35 pm »
Свали си софтуера Uniprof. От настройките си избери кои пинове на паралелния порт  ползваш и програмирай. Контролера се разпознава автоматично, обаче настройките на фюсовете са обратни на тези в останалите програматори и дейташийтовете на Атмел, т.е чавката означава че имаш "1", а липсата и "0", което според мен е по логичния начин на изразяване. Има други екстри програмката.
Не са необходими никакви свързвания на AVCC и AGND, както и pull-up резистор на RESET пина(ако става въпрос за програматор, а не за вече събрана схема, която трябва да се програмира). Единствено захранването трябва да е читаво(аз ползвам най-обикновено адапторче, което съм направил регулируемо).
Ползвам горната схема за програмиране от години дори без резистори(понякога падът в/у тях е причината за невъзможността да работи, но зависи от самия паралелен порт) с AVRDUDE, AVREAL, Ponyprog и Uniprof. Не съм сигурен дали пиновете, които ползвам са същите и затова предлагам Uniprof-a, че могат в графичен вид да се зададат използваните пинове.

Успех!

kmene

  • Новодошъл
  • *****
  • Публикации: 2
    • Профил
Програматор PonyProg
« Отговор #11 -: Май 02, 2008, 09:45:15 pm »
извинете за въпроса може да не е уместен но може ли да се свали на компютъра и ползва/моделира/ готова програма която е била записана на контролер от някяква машина

Borislav

  • Administrator
  • *****
  • Публикации: 1010
    • Профил
    • http://robotics-bg.com
Програматор PonyProg
« Отговор #12 -: Май 03, 2008, 12:44:33 pm »
Цитат на: "kmene"
извинете за въпроса може да не е уместен но може ли да се свали на компютъра и ползва/моделира/ готова програма която е била записана на контролер от някяква машина


По принцип, и да и не. :) В паметта на контролера се записва .hex-файла на програмата, получен при компилирането и. В него, програмата е записана в hexdecimel-на (дано да го пиша правилно) бройна система. При доброто и владеене, няма никакъв проблем. Лично за мен, по-добрата алтернатива е да се напише наново, според нуждите! :)
Поздрави!
Роботиката не е хоби - тя е начин на живот!

everlast

  • Робо-Новак
  • *****
  • Публикации: 14
    • Профил
Програматор PonyProg
« Отговор #13 -: Декември 07, 2008, 07:03:04 pm »
Взех си програматор ponyprog но немога да го подкарам към SERIALport ако може да ми помогнете малко.От настроиките напрограмата когато му дам PROBE ми изписва TEST FAILED.Как ли не го пусках с външно захранване без него все едно исъщо. http://www.programatoribg.com/ponyprog/index.htm

Borislav

  • Administrator
  • *****
  • Публикации: 1010
    • Профил
    • http://robotics-bg.com
Програматор PonyProg
« Отговор #14 -: Декември 07, 2008, 08:08:43 pm »
Цитат на: "everlast"
Взех си програматор ponyprog но немога да го подкарам към SERIALport ако може да ми помогнете малко.От настроиките напрограмата когато му дам PROBE ми изписва TEST FAILED.Как ли не го пусках с външно захранване без него все едно исъщо. http://www.programatoribg.com/ponyprog/index.htm


Цитат
PonyProg e сериен програматор с работещ под Windows95, 98, 2000 & NT и Intel Linux.
....
Work with Windows95, Windows98, WindowsME, Windows2000, WindowsNT and Linux*


Дали това е от значение, ако си с XP? :?

Отдолу четем:
Цитат
За повечето схеми програматора не се нуждае от външно захранване. Използва захранване 9-15V и консумацията около 0,2А. Подходящи са обикновени адаптори с ток 0.5А и напрежение поне 9V. За програмиране на PIC процесори изисква 2 захранвания.

Има ли някакво упътване в комплект с програматора?
Роботиката не е хоби - тя е начин на живот!