Dnes ukazu jednoduchy postup, jak rozblikat LED pomoci procesoru ATmega8, programovat to budu v BASCOMu. Cely postup je velmi jednoduchy, ale sam jsem mel taky problemy kdyz jsem zacinal a nemel jsem se koho zeptat.
Procesor – proc zrovna ATmega8 kdyz jich Atmel dela tolik?
- Stoji do 50Kc (u GM 34Kc i s DPH)
- 8KB flash; 512B EEPROM; 1KB SRAM
- 2x 8-bit Timer; 1x 16-bit Timer; 3x PWM; Watchdog; I2C; UART; SPI; A/D prevodniky
- neni potreba pripojovat externi krystal; moznost pripojit krystal az do 16MHz
- pouzdro PDIP 28; 23 I/O pinu
- napajeni 4,5V – 5,5V; 3,6mA
- neni potreba kupovat programator za nekolik set nebo tisic korun – da se vyrobit do 50Kc
Jak a v cem to programovat?
V BASCOMu – C je asi lepsi, ale v Basicu umim o hodne lip.
K nahrani programu do procesoru pouzivam ISP programovani.
Zdroj
jsem udelal ze stabilizatoru 78L05 (5V, 100mA).
Frekvence procesoru
Vyuzivam interni 1MHz krystal – ten je zapnuty od vyrobce. V pripade potreby se da pomoci pojistek zapnout externi krystal nebo zmenit frekvence interniho (1, 2, 4 nebo 8 MHz).
Programovani v BASCOMu
BASCOM je vyvojove prostredi pro AVR procesory. Ja pouzivam demo verzi, ta ma dve omezeni – velikost programu maximalne 4kB a nekomercni vyuziti – na uceni idealni. Zatim mi to vzdy stacilo. Tady (dole) je demo ke stazeni.
Pomoci nasledujiciho zapojeni a programu se rozblika LED:
$regfile = "m8def.dat" ' procesor ATmega8
$crystal = 1000000 ' frekvence krystalu [Hz]
Config Portd.7 = Output ' PD7 nastav jako vystup
''''''''''''''' HLAVNI PROGRAM ''''
Do 'nekonecna smycka
Portd.7 = 1 'zapni PD7
Waitms 250 'cekej 250ms
Portd.7 = 0 'vypni PD7
Waitms 250 'cekej 250ms
Loop
''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''
End 'konec programu
Drobnou zmenou programu lze rozblikat stridave 2 LEDky:
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd.7 = Output
Config Portb.0 = Output
''''''''''''''' HLAVNI PROGRAM ''''
Do
Portd.7 = 1
Portb.0 = 0
Waitms 250
Portd.7 = 0
Portb.0 = 1
Waitms 250
Loop
''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''
End
V BASCOMu napisu program a pres Program -> Compile ho zkompiluju. Tim se vytvori soubor *.hex s programem – ten je potreba nahrat do procesoru.
ukazka zkompilovaneho programu ve formatu Intel HEX
Program se do procesoru nahraje stiknutim klavesy <F4> – je to videt na videu.
Dalsi moznost nahrani je pouziti PonyProgu. Me to funguje ve verzi 2.05a beta. Po spusteni PonyProgu je potreba v menu Setup -> Interface setup nastavit typ pripojeni podle nasledujiciho obrazku:
Pak uz jen staci otevrit soubor s FLASH (vystupni *.hex s BASCOMu), smazat procesor a zapsat novy program do procesoru.
Je potreba dat pozor na ikonu zamku, pres ni se nastavuji pojistky (fuses). Spatne nastavenymi pojistkami se da skoro znicit procesor, napr. pri vypnuti ISP nelze do procesoru zapsat novy program (jedina moznost pak je pouzit profesionalni programator za nekolik tisic). Pred zmenou pojistek je nezbytne nutne prostudovat datasheet od Atmelu!
Pokud nebude LED blikat je potreba odpojit ATMEL od paralelniho portu (hlavne u BASCOMu).
Ukazkovy program na blikani 2 LED ke stazeni.
Odkazy
Zapojeni vyvodu u ATmega8
PonyProg
MCS Electronik (BASCOM)
BASCOM
ATmega8 na atmel.com
Datasheet k ATmega8
ATmega8 u GM
78L05 datasheet
Aktualizace 1.4.2015:
Clanek je z roku 2008 a pouziva program PonyProg. PonyProg je stary a nevyvijeny program s posledni verzi z roku 2005. Na novych Windows (obzvlast 64 bitovych) s nim budou problemy. Doporucuji prejit na program avrdude, ktery se v dnesni dobe prevazne pouziva. Pouziva ho napr. i oficialni IDE pro Arduino.
PonyProg jsem pouzil naposledy asi pred 8 lety, takze s nim nejsem schopny poradit. Nyni pouzivam avrdude.
Vice info o avrdude naleznete v mem clanku, nebo v komentarich pod timto clankem.
Dalsi clanky o AVR.
Parallel Port mode (EPP)
EPP Version (1.9)
Parallel port IRQ (IRQ7)
Nevíte kde by mohla být chyba? Není náhodou potřeb nahrát nijáké ovladače já jen nainstaloval BASCOM. Děkuji za odpověď
díky Vašemu blogu jsem se poprvé setkal s tímto programovatelným obvodem a velmi mne to zaujalo. Zajímalo by mne, kolik by se takto dalo max. ovládat diod?
Děkuji, Milan.
jsem rad, ze Vas clanek zaujal.
Procesor ATmega8 ma 23 I/O. Nelze je vsak pouzit vsechny. PC6 (RESET) se nesmi pouzit – bez resetu nelze nahrat do procesoru jiny program. Zbyva tedy 22 pinu – ty lze pouzit vsechny (za predpokladu, ze nechcete vyuzivat jejich jine funkce).
Z toho vyplyva, ze maximalni pocet I/O je 22.
Nastesti existuji moznosti, jak pocet I/O zvetsit. Napriklad muzete pouzit jiny procesor – napr. ATmega1280, ten ma 86 I/O pinu.
Pokud trvate na ATmega8, lze pouzit treba I2C expander – napr. PCF8574 nebo MCP23016. Vice informaci o techto obvodech naleznete treba tady, nebo tady.
Doporuciji Vam, podivat se jeste na tento clanek, ktery vysel na root.cz.
Preji mnoho dalsich uspechu
Martin
děkuji za odpověď.
Rád bych se Vás zeptal na ATmega1280, který jste zmínil v odpovědi, jestli jej lze naprogramovat přes STK200?
Předpokládám, že jej stačí jen správně napojit na vývody RESET, GND, MISO, MOSI ,SCK a napájecí napětí.
Jelikož má vývod „RESET“ zvlášť, pak by měly jít využít všechny porty, tj. 86 I/O jestliže nebudu požadovat jejich jiné funkce, je to tak?
Viz: http://www.atmel.com/dyn/resources/prod_documents/doc2549.pdf
Děkuji, Milan.
Dobry den,
s procesorem ATmega1280 nemam osobni zkusenosti – uvadel jsem ho pouze jako priklad procesoru s vice I/O. Nicmene nevidim duvod, proc by nemel jit programovat pres SPI pomoci STK-200 programatoru. Konkretne se jedna o piny PB3 (MISO), PB2 (MOSI), PB1 (SCK) a RESET. S tim RESETem mate pravdu, je to samostatny pin, tudiz by melo byt mozne pouzit vsechny I/O.
Jelikoz uz to neni takova "hracka" jako ATmega8, stalo by za uvahu, jestli nepouzit JTAG rozhrani. Urcite by ale melo smysl uvazovat o pouziti bootloaderu. Pri pouziti bootloaderu usetrite piny, ktere byste jinak pouzil na STK-200 programator. Atmel pripojite k PC pres RS-232 (3 draty – TXD, RXD, GND). Cele nahravani programu je pak jednodussi.
Ja jsem nedavno zacal pouzivat Arduino (clanek na rootu). Osobne nepouzivam zadnou z jejich desek (ale neni problem si ji doma vyrobit, nebo koupit). Ze zacatku jsem mel mensi problemy s pouzitim ATmega8, ale podarilo se. Planuji o tom brzy napsat. Velka vyhoda je, ze Arduino ma zdarma vyvojove prostredi. Navic Arduino pouziva zavadec v procesoru.
Martin
po pročtení datasheetu a nastavení ze stránek http://www.engbedded.com/fusecalc jsem trochu zmaten. Mám nahrán bootloader na $1C00 zkontrolováno v ponyprogu2.07c a pojistky nastavené na BOOTSZ1,BOOTSZ0,BOOTRST + SPEN dále už nic jiného. Crystal16MHz+kondenzátory. Je to tak správně? Bootloader se pravděpodobně vůbec neaktivuje. Proč? LED na SCK neindikuje nic,po nahrání programu(ponyprog a LPT) blikání ledkou (a nepřepsání bootloaderu) po zapnutí či resetu ihned bliká :((( Děkuji velice Martin
$regfile = „m8def.dat“
$crystal = 1000000
Config Portd. 1 = Input
Config Portd. 2 = Output
‚a teraz program bude to tak ze ked stlacim tlacitko rozsvieti sa led
If Portd. 1 = 1 Then
Portd. 2 = 1
Wait 1000
Portd. 2 = 0
Elseif Portd. 1 = 0 Then
Portd. 2 = 0
Else
End If
End
no a stale my pise 3 parameters expected , in file x*x
pls pomoc, ma to byt indikator on vypinaca (moj 2 program) xD diki
http://www.projectik.eu/index.php/elektrotechnika/microprocesory/item/227-dychajuca-led
Pekne 🙂
Ja jsem psal clanek v roce 2008 (pred 6 lety) a tenkrat si myslim jeste nebyly jednocipy tak modereni a navodu take mnoho nebylo. Dnes by bylo blikani na par radku v Arduinu.
tak aby kmital externí /připojený / krystal na pin XTAL1 , XTAL2 ???
Platí že , zaškrtnuté políčko pojistky je na ní stav 0 /LOW/ ????
nezaškrtnuté políčko pojistky je stav 1 / HIG/ ?????
Vřelý dík za pomoc !!! Už jsem zničil několik čipů.
Jan
PonyProg uz nekolik let nepouzivam, takze presne nevim, co se kde muselo zaskrtnout.
Nyni pouzivam avrdude, ktery Vam take doporucuji. Jeho pouziti s USBtinyISP programatorem jsem na svem blogu pred casem popisoval.
Jaky typ programatoru pouzivate? Ve clanku uvedeny STK-200?
Tady je webova kalkulacka na pojistky Atmel AVR procesoru. A zde prehled vychozich pojistek pro jednotlive modely MCU.
Pro ATmega8 to je H fuse=0xD9 a L fuse 0xE1. Na uvedenm odkazu je i popis.
Pro avrdude a USBtinyISP programator by vypadal prikaz pro nahrani pojistek nasledovne:
I zniceny cip (spatne nastavene pojistky) by mel jit opravit. Slouzi na to tzv. „vysokonapetove programovani„. Nikdy jsem ho ovsem nezkousel, takze Vam nemohu zarucit uspech.
Osobne uz dlouho nepouzivam samotne ATmega cipy, ale kupuji si v Cine levne Arduino desky. Pokud nechcete pouzivat Arduino, ale treba AVR C, nebo Bascom, nevadi. Pouzijete jenom hardware. Ceny jsou ale bezkonkurencni. Cela deska se vsim (Atmega, stabilizator, DPS, …) od 57Kc za kus. Pokud mate zajem, dam sem nejake odkazy.
Dobry den, jak jsem psal v komentari vyse, PonyProg uz hodne roku nepouzivam.
Mam tady starsi clanek.
Jaky pouzivate programator? STK-200? Co mate za system (Windows/Linux) a jakou verzi?
Pokud netrvate na PonyProgu, urcite nejdeme zpusob, jak atmegu naprogramovat.
V dnesni dobe bych Vam doporucil program avrdude. Priklad nastaveni pojistek (v ukazce jsou jine) a nahrani programu STK-200 programatorem:
$regfile = „m8adef.dat“
$crystal = 100000
Enable Int0 ‚povol vnější přerušení 0
Eicra.isc00 = 1 ‚nastane při změně úrovně na pinu INT0
On Int0 Vnejsi0 ‚při přerušení skoč na podprogram vnejsi0
Dobry den,
jak uz jsem tu vyse nekolikrat psal, PonyProg uz nekolik let nepouzivam.
chci se zeptat, jestli se někdo nesetkal s problémem v PonyProgu. Vždy když ho zapnu, a zaškrtnu AVR ISP I/O tak se mi ukáže, „DLPortio.SYS device diver not loaded. Port I/O will have not effect“ ….. nevím co s tim. zkoušel jsem ho i stáhnout.
Mám Win 7 a PonnyProg verzi —- v2.06f BETA
Prosím poraďte, já jsem v těhlech věcech úplný začátečník a nic o tom nevim.
Děkuji.
Dobry den,
kdyz se zkusite zeptat googlu na „DLPortio.SYS device diver not loaded. Port I/O will have not effect„, mezi prvnimi odkazy bude zminka o 64 bitovych Windows 7 a necem s registry.
Nemate nahodou 64b Win 7? Pokud ano, historicky PonyProg (myslim, ze je z roku 2005) bude mit asi problemy. Pokud trvate na PonyProgu, zkuste Windows XP, na ktery byl napsany.
Pokud nemate nejaky specialni duvod pouzivat i nadale PonyProg (na 99% ne), prejdete na avrdude. Kdyz si proctete diskuzi pod clankem, mnohokrat jsem ho jiz zminoval.
Na avrdude exituji i GUI nastroje, pokud Vam vadi terminal – ale ja je nikdy nezkousel.
V pripade dotazu me nevahejte kontaktovat.