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.
V BASCOMu - C je asi lepsi, ale v Basicu umim o hodne lip.
K nahrani programu do procesoru pouzivam ISP programovani.
jsem udelal ze stabilizatoru 78L05 (5V, 100mA).

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).
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.
Zapojeni vyvodu u ATmega8
PonyProg
MCS Electronik (BASCOM)
BASCOM
ATmega8 na atmel.com
Datasheet k ATmega8
ATmega8 u GM
78L05 datasheet
Dalsi clanky o AVR.
Dobrý den, chtěl bych se
Dobrý den, chtěl bych se zeptat na pár věcí. Postavil jsem si programátor který uvádíte na vašich stránkách STK200 ale nejde mi s ním naprogramovat atmegu když jsem ho připojil poprvé tak po spuštění BASCOM se atmega nadetekovala ale když jsem dal naprogramovat tak to vypsalo chybu Difference at 0000. Asi tak 5x jsem to zkusil znovu ale pořád nic a potom už nešla ani atmega nadetekovat a píše chybu. v BIOSU mám nastaveno:Parallel Port Address (378)
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ěď
Dobry den, omlouvam se za
Dobry den, omlouvam se za pozdni odpoved. Ja mam v BIOSu nasledujici nastaveni. Nemusel jsem doinstalovavat (pouzivam Win XP SP2) zadne ovladace. Neni mozne, ze je ta atmega rozbita, nebo ze je chyba v programatoru? Doporucuji Vam zkusit jinou atmegu - snad to pomuze.
Maximální počet diod
Dobrý den,
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.
Dobry den, jsem rad, ze Vas
Dobry den,
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
ATmega1280
Dobrý den,
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
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
Poslat nový komentář