1. septembra 2021

GALmate - programátor GALov

Pred časom som potreboval naprogramovať pomerne málo známy resp. málo používaný obvod GAL26V12 a keďže môj programátor SmartProg2 ho nepodporuje a rovnako tak tento obvod nepozná starý DOSovský vývojový prostriedok OPAL, začal som pátrať na internete, čím by som vedel pre tento obvod jednak pripraviť a preložiť rovnice a samozrejme vedel ho aj napáliť.

Pre napálenie sa ponúkal novší produkt od Elnecu BeeProg2, ale pri tej cene 1000 € bez DPH ma chytil záchvat sporivosti a povedal som si, že na to občasné použitie je to dosť veľa a radšej si nájdem nejaké "jednoúčelové" riešenie, pri ktorého stavbe, nech už to bude stáť čokoľvek, budem mať aspoň radosť z "bastlenia".

Nakoniec som narazil na blog, ktorý píše Yorck Thiele, kde popisuje svoj programátor GALmate. Jeho prgramátor podporuje prakticky všetky verzie GALov, ktoré vyrábalo Lattice a zároveň podporuje aj verzie GALov, ktoré vyrába ATMEL. Jedinou malou nepríjemnosťou je skutočnosť, že práve pre GAL26V12 sa musí použiť adaptér, keďže programátor používa iba 24 pinovú ZIF päticu a GAL26V12 má púzdro DIP28. To som ale nepovažoval za zásadný problém.

Nebudem tu popisovať zapojenie programátora, to už urobil stručne Yorck vo svojom blogu, len v krátkosti uvediem, že jadrom programátora je mikrokontrolér ATmega16 a s PC komunikuje cez USB-UART prevodník, z ktorého je aj napájaný. Programátor si zároveň vyrába aj potrebné programovacie napätia. Práve skutočnosť, že k programátoru nie je potrebný žiadny extra zdroj a vystačí si "s pripojením na USB", ma presvedčila, že si tento programátor skúsim postaviť.

Yorck zverejnil iba schému a sám si programátor postavil iba na univerzálnej doske. Mne samému sa veľmi nechcelo stavať to na univerzálke a natoľko som tomu zapojeniu dôveroval, že som sa rozhodol, že si rovno navrhnem plošný spoj. Keďže ale Yorck schému nakreslil v KiCade, ktorému ja neholdujem, prekreslil som najprv schému do Eaglu a následne navrhol plošný spoj. Zároveň som navrhol aj adaptér pre GAL26V12.

Plošné spoje programátora a adaptéra

Oproti pôvodnému zapojeniu som urobil iba dve zmeny, ktoré ale nemajú vplyv na funkčnosť.

  • Odpor R25 pre LED má hodnotu 1 kΩ, keďže som použil 2 mA LED.
  • ISP konektor je 10 pinový a jeho zapojenie zodpovedá požiadavkám programátora SmartProg2 pre programovanie ATmega16 cez ISP.

Yorck samozrejme vytvoril ku programátoru firmvér pre ATMEL a aj ovládací softvér pre PC. Ovládací softvér má autodetekciu vloženého obvodu, takže nie je potrebné robiť ručnú voľbu obvodu. Poskytuje všetky potrebné operácie s obvodom: čítanie, programovanie, kontrolu, mazanie i nastavenie špeciálnych FUSE bitov (UES, Security, PD). Umožňuje tiež kopírovať PES medzi dvoma obvodmi.

Ďalšou z vecí, ktoré ovládací softvér poskytuje, je previazanie na kompilátor vývojového softvéru easyABEL prostredníctvom vDosPlus. Túto možnosť som ja nevyužil, pretože som návrh rovníc pre GAL26V12 robil priamo v easyABEL v DOSBoxe.

Po osadení dosky a prvom zapnutí mi ovládací softvér nechcel detekovať prítomnosť programátora. Podozrieval som samozrejme pripojenie UARTu, prehodené RxD/TxD, napájanie, vyskúšal som 3 rôzne USB-UART prevodníky a stále som nebol úpešný. Menil som nastavenie FUSE bitov pre ATMEL a dokonca som si robil úpravy vo firmvéri, aby som pomocou blikania LED zistil, kam až program dôjde (ATMEL spoľahlivo bežal), ale stále nič. Nakoniec som napísal Yorckovi a ten mi poslal svoje nastavenie FUSE bitov a odvtedy sa to okamžite rozbehlo. Pripúšťam, že som v tej "zúfalosti" mohol robiť nejaké psie kusy, hlavne okolo toho USB-UART prevodníka i firmvéru a sám si spôsobovať problémy, ale keď som všetko vrátil do pôvodného stavu a nastavil FUSE bity podľa Yorcka, tak to proste začalo chodiť. Takže pre ten ATmega16 je potrebné nastaviť FUSE bity takto: LFUSE = 0xFC, HFUSE = 0xC1.

Ešte doplním, že plošný spoj som nenavrhoval s cieľom vložiť ho do nejakej krabičky, iba som dal do rohov montážne otvory, do ktorých som dal dištančné stĺpiky. Na fotografiách môžete vidieť osadené plošné spoje programátora aj adaptéra.

Osadené plošné spoje programátora a adaptéra Adaptér s GAL26V12 nasadený v programátore

Firmvér a aj ovládací program programátora nájdete na stránkach Yorckovho blogu. Ja tu dám na stiahnutie iba zdrojové súbory pre Eagle a podklady pre výrobu plošných spojov.

5 komentárov:

  1. Ja si robím programátor GAL ako nadstavbu k môjmu programátoru EPROM a neviem si rady s čítaním PES obvodu ATF20V8B.Pri čítaní dostávam 0x8C 0x62h 0x4C 0x0C 0x6A 0x1C 0X42 0x0C, čo je iné ako je popisované pre Atmel - napr. ATF16V8.
    Ak máte ATF20V8B nemohol by ste prečítať PES na vašom programátore?
    Alebo nemáte informácie o programovaní obvodov Atmel (algoritmus pre ATF22V10C mám).
    skicina@gmail.com

    OdpovedaťOdstrániť
    Odpovede
    1. Na citanie PES pre atmel pozri na github ole00 afterburner, alebo na zdrojaky pre ATFBlast

      Odstrániť
  2. Kde sa dá stiahnuť FW pre Atmegu? Ja som to nenašiel na stránke autora.

    OdpovedaťOdstrániť
    Odpovede
    1. Ospravedlňujem sa, ale až dnes som si všimol v RSS čítačke, že sú tu nejaké príspevky.
      FW je na stiahnutie dole v článku o HW - https://www.ythiee.com/2021/06/06/galmate-hardware/

      Odstrániť
  3. Firmware pro GALmate jsem rovnež nenašel. PES pro ATF - je ASCII Text. FW pro podobný GAL programator je zde : https://github.com/ole00/afterburner/blob/master/afterburner.ino

    OdpovedaťOdstrániť