programovanie - kodovy zamok

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
ferooo
Příspěvky: 7
Registrován: 01 pro 2010, 01:00

programovanie - kodovy zamok

#1 Příspěvek od ferooo »

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

Uživatelský avatar
Burajko
Příspěvky: 1803
Registrován: 21 srp 2009, 02:00

#2 Příspěvek od Burajko »

Zacal bz som niecim jednoduchsim. :wink:
Už druhý krát strihám a furt je to krátke

Uživatelský avatar
Banda
Příspěvky: 1170
Registrován: 22 bře 2005, 01:00
Bydliště: OV

#3 Příspěvek od Banda »

Můžeš použít přerušení + potřebuješ snímat multiplexovanou klávesnici (takže snímat úrovně na pinech).
Začít můžeš vývojovým diagramem.
Na netu se těchto programů musí válet spousty.
Druhou otázku nechápu.

Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 02:00
Bydliště: Vysočina

#4 Příspěvek od Chenzee »

Program neumí zastavit. Pokud potřebuješ zastavit vykonávání programu,musíš zkrátka procesor něčím zabavit (třeba počítej do 10 a po dopočítání začni znovu :-) nebo třeba NOP, GOTO $-1. Vyšší jazyky toto možná dělají pomocí nějakého příkazu :nevim:
Žádnej učenej z nebe nespadl ...

Uživatelský avatar
bohumilfulin
Příspěvky: 109
Registrován: 12 led 2010, 01:00

#5 Příspěvek od bohumilfulin »

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.

Uživatelský avatar
ferooo
Příspěvky: 7
Registrován: 01 pro 2010, 01:00

#6 Příspěvek od ferooo »

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:

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

Uživatelský avatar
majsi
Příspěvky: 51
Registrován: 23 led 2010, 01:00

#7 Příspěvek od majsi »

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

Uživatelský avatar
ferooo
Příspěvky: 7
Registrován: 01 pro 2010, 01:00

#8 Příspěvek od ferooo »

najskor by som chcel popriat vsetkym stastne a vesele ;)
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.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#9 Příspěvek od Andrea »

Zapiš si ho do interní EEPROM. V C na to určitě bude nějaká knihovna.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#10 Příspěvek od Atlan »

jj pri zapnuti nacitat kod z eeprom do ram a potom uz len porovnavat zo zadanym, pripadne po zmene ulozit do eeprom.

Inak na pevno by som tam doplnil nejaky 10miestny kod (ktory by to vratil do povodneho stavu s defold kodom napr 0000 (predpokladam ze castozadavany kod bude do max 6 cisel/znakov)

Uživatelský avatar
ferooo
Příspěvky: 7
Registrován: 01 pro 2010, 01:00

#11 Příspěvek od ferooo »

neviete ake su prikazy na zapisovanie/citanie z eeprom? Alebo nejaky dobry link, kde by som sa o tom dozvedel viac.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#12 Příspěvek od AB1 »

neviete ake su prikazy na zapisovanie/citanie z eeprom?
To záleží na tom, který jazyk používáš.
Avr-gcc?
CodeVision?
IAR?

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#13 Příspěvek od mtajovsky »

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:

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.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#14 Příspěvek od AB1 »

Pokud používáte WinAVR, tak v knihovně jsou funkce:
kód:
void paramStore (u08 *parameters, u08 *memaddr, u16 sizebytes);
u08 paramLoad (u08 *parameters, u08 *memaddr, u16 sizebytes);
Nenašel jsem je tam.
Ostatně pro práci s eeprom mají poněkud exotické názvy.

Uživatelský avatar
majsi
Příspěvky: 51
Registrován: 23 led 2010, 01:00

#15 Příspěvek od majsi »

tie funkcie su z kniznice AVRlib, bola to dobra kniznica len skoda ze skoncil jej vyvoj. Ak by mal niekto zaujem mam nejaku verziu tejto kniznice.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“