programovanie - kodovy zamok
Moderátor: Moderátoři
programovanie - kodovy zamok
zdravim,
som tu novy, v AVR robim svoj prvy program a neviem si rady...
Chcem si spravit kodovy zamok, program pisem v C, svaba pouzivam ATmega16.
Klavesnica je napojena na PORTC(piny 0-7) a PORTD(piny 0-3)
- je nejaka funkcia, ktorou cakam na stlacenie hociakeho tlacidla na klavesnici?
- nechapem uplne presne ako funguje cely program v AVR -> napr vo VisualStudiu pisem v C# a viem ako presne program bezi, teda kde sa zastavi a caka na vstup a pod... ale v AVR to bezi stale cele dokola, ano?
dakujem za rady
som tu novy, v AVR robim svoj prvy program a neviem si rady...
Chcem si spravit kodovy zamok, program pisem v C, svaba pouzivam ATmega16.
Klavesnica je napojena na PORTC(piny 0-7) a PORTD(piny 0-3)
- je nejaka funkcia, ktorou cakam na stlacenie hociakeho tlacidla na klavesnici?
- nechapem uplne presne ako funguje cely program v AVR -> napr vo VisualStudiu pisem v C# a viem ako presne program bezi, teda kde sa zastavi a caka na vstup a pod... ale v AVR to bezi stale cele dokola, ano?
dakujem za rady
- bohumilfulin
- Příspěvky: 109
- Registrován: 12 led 2010, 01:00
poustis se do programovani MCU a podle otazek mas mysleni windowsaka. Na to zapomen. Musis se smirit s tim ze programvani MCU je vzdy zavisle od typu MCU i od schematu zapojeni. To tak je. Ccko neni az tak univerzalni jak ocekavas.
Funkce v C najdes ale spis takove ktere nejsou zavisle na HW (vypocet CRC,...) ale stejne vetsinou budes muset fci prizpusobit na svuj HW. Neco jako driver pro obsluhu klavesnice nehledej pro vsechny procesory.
Tak jak na tu klavesnici. Jsou dva zakladni zpusoby jak na klavesnici:
- detekce stisku pres preruseni, to bud vyvola zmena na portu. To myslim ze mega16 umi, nebo pres HW detekovat stisk na nejaky INTx. Vyhoda je ze program se o klavesnici stara pouze pokude dojde ke stisku, jinak muze delat neco jineho
- SW. proste jednou za cas (treba 50ms) oskenujes klavesnici zda neni nahodou stisknuta. Jednodussi pro pochopeni zacatecnika, ale zbytecne se spotrebovava cas i tehdy kdy ke stisku nedojde.
Moje doporuceni zni: udelej to SW abys pochopil co MCU chce a jak pracuje, jak na zakmity,... a pak to preklop do verze pod prerusenim.
Googluj, nejsi sam kdo resil klavesnici pod AVR tak hura nekomu na jabka.
Funkce v C najdes ale spis takove ktere nejsou zavisle na HW (vypocet CRC,...) ale stejne vetsinou budes muset fci prizpusobit na svuj HW. Neco jako driver pro obsluhu klavesnice nehledej pro vsechny procesory.
Tak jak na tu klavesnici. Jsou dva zakladni zpusoby jak na klavesnici:
- detekce stisku pres preruseni, to bud vyvola zmena na portu. To myslim ze mega16 umi, nebo pres HW detekovat stisk na nejaky INTx. Vyhoda je ze program se o klavesnici stara pouze pokude dojde ke stisku, jinak muze delat neco jineho
- SW. proste jednou za cas (treba 50ms) oskenujes klavesnici zda neni nahodou stisknuta. Jednodussi pro pochopeni zacatecnika, ale zbytecne se spotrebovava cas i tehdy kdy ke stisku nedojde.
Moje doporuceni zni: udelej to SW abys pochopil co MCU chce a jak pracuje, jak na zakmity,... a pak to preklop do verze pod prerusenim.
Googluj, nejsi sam kdo resil klavesnici pod AVR tak hura nekomu na jabka.
zdravim,
sry, ze som neodpovedal, dlhsie som bol mimo netu...
Dakujem za rady, kodovy zamok som uz "sprovoznil"
Teraz sa zahravam s myslienkou pripojit na to este maly displej. Mam k dispozicii znakovy, 2x20, oznacenie PowerTip PC2002-B.
Datasheet priamo na stiahnutie:
obsahuje radic ST7066U (ten je ale kompatibilny s HD44780). Ako inicializujem LCD? Vsade na nete som nasiel len programy v Assemblery, potrebujem ale nieco, co je pisane v C.
Ak by niekto o niecom vedel, budem vdacny.
sry, ze som neodpovedal, dlhsie som bol mimo netu...
Dakujem za rady, kodovy zamok som uz "sprovoznil"
![Smile :)](./images/smilies/icon_smile.gif)
Datasheet priamo na stiahnutie:
Kód: Vybrat vše
http://www.google.sk/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http%3A%2F%2Fsmanuals.ru%2Ffiles.html%3Fdatasheet%3D446341%2Fdata-PC2002-B&rct=j&q=pc2002-b&ei=leQBTZC4Jcbxsgb479iFCg&usg=AFQjCNGXtpz7BfjKO3CKR3Bi7siyqu4BmA&sig2=5VYuCcmXFRkuE8gQRrKZ_Q&cad=rja
Ak by niekto o niecom vedel, budem vdacny.
OK. Tak nato ze o tom ako funguju mcu a vobec procesory, si sa vybral velmi zle. mcu nieje C# v ktorom sa naucis kodit za 2 dni. C a C++ pre MCU sa na klasicke C a C++ podobaju len syntaxou a standardnymi kniznicami (tie by si mal zacat pouzivat az ked budes vediet o co v tom celom MCU svete vlastne ide).
Co sa tyka toho displaya tak tebe treba vediet aky kontroler je v nom pouzity. Vyrobca udava ze je tam pouzity ST7066U.
http://www.crystalfontz.com/controllers/ST7066U.pdf
tento datasheet sa v podstate deli na 2 casti. prva je prepojenie lcd a kontrolera a druha je prepojenie kontrolera mcu.
prajem vela uspechov a pevnych nervov![Wink ;)](./images/smilies/icon_wink.gif)
Co sa tyka toho displaya tak tebe treba vediet aky kontroler je v nom pouzity. Vyrobca udava ze je tam pouzity ST7066U.
http://www.crystalfontz.com/controllers/ST7066U.pdf
tento datasheet sa v podstate deli na 2 casti. prva je prepojenie lcd a kontrolera a druha je prepojenie kontrolera mcu.
prajem vela uspechov a pevnych nervov
![Wink ;)](./images/smilies/icon_wink.gif)
najskor by som chcel popriat vsetkym stastne a vesele ![Wink ;)](./images/smilies/icon_wink.gif)
a teraz k problemu.. ako mozem zapisat data do pamate IO? Pouzivam AtMega16. Pocas behu programu si mozem zmenit heslo. No ked vypnem napajanie, tak sa program spusti odznova a do kodu sa ulozi prednastaveny kod, nie ten, ktory sa v predchadzajucom behu programu zadal ako novy.
Ako je teda mozne po zmene kodu tento ulozit do pamate svaba?
Program by sa potom zmenil tak, aby sa do premennej nacitala hodnota, ktora je ulozena v pamati svaba.
![Wink ;)](./images/smilies/icon_wink.gif)
a teraz k problemu.. ako mozem zapisat data do pamate IO? Pouzivam AtMega16. Pocas behu programu si mozem zmenit heslo. No ked vypnem napajanie, tak sa program spusti odznova a do kodu sa ulozi prednastaveny kod, nie ten, ktory sa v predchadzajucom behu programu zadal ako novy.
Ako je teda mozne po zmene kodu tento ulozit do pamate svaba?
Program by sa potom zmenil tak, aby sa do premennej nacitala hodnota, ktora je ulozena v pamati svaba.
Popis práce s EEPROM je zde:
http://www.atmel.com/dyn/resources/prod ... oc8154.pdf
strana 18, kapitola 7.4
Pokud používáte WinAVR, tak v knihovně jsou funkce:
Detailní popis funckí je v dokumentaci WinAVR.
http://www.atmel.com/dyn/resources/prod ... oc8154.pdf
strana 18, kapitola 7.4
Pokud používáte WinAVR, tak v knihovně jsou funkce:
Kód: Vybrat vše
void paramStore (u08 *parameters, u08 *memaddr, u16 sizebytes);
u08 paramLoad (u08 *parameters, u08 *memaddr, u16 sizebytes);
Detailní popis funckí je v dokumentaci WinAVR.