AVR 2: Blikani LED na ATmega-8

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).
zdroj                         

zdroj

 

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.
Vyvojove prostredi BASCOMu.

 
Pomoci nasledujiciho zapojeni a programu se rozblika LED:
 led schema

$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.

intel hex
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:
ponyprog interface

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

 

Dalsi clanky o AVR.

Váš hlas: Žádná Průměr: 4 (1 vote)

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).

  • PD0 a PD1 - seriovy port (RS-232) - nemusi se pouzit
  • PB6 a PB7 - pripojeni externiho krystalu - nemusi se pouzit (ATmega8 ma interni krystal)
  • PC5 a PC4 - I2C - nemusi se pouzit
  • PB5 a PB4 a PB3 - SPI - pres ne se nahrava program do procesoru, pokud na tyto piny budou pripojeny LED, mely by se pred nahravanim noveho programu odpojit

ATmega8 IO

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ář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i> <u> <blockquote> <sub> <sup> <p>
  • Řádky a odstavce se zalomí automaticky.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".

Více informací o možnostech formátování

CAPTCHA
Tato otázka je pro ověření, zda jste člověk nebo robot zasílající spam.

Je text na obrázku nečitelný? Nechte si zobrazit jiný!