Ked spustis debuger, tak sa ti miesto okna Solutin explorer (zvycajne na pravej strane) objavi okno IO View a na nom dole mas zalozky IO view, Procesor....atd.Ked das Procesor,tak tam su registre a IO view ti ukazuje periferie.
Příspěvky odeslané z IP adresy 195.168.55.–
Alebo mozes este na zaciatku projektu dat
#ifdef F_CPU
#undef F_CPU
#endif
#define F_CPU=10000000L
Project->Propertis (Alt+F7) tam najdi AVR/GNU C Compilers ->Symbols
na pravej strane (defined symbols) daj pridat a napis F_CPU=hodnota pis to bez medzier.
#1 Prochis
Ked chcete riadit jas LED diody da sa na to pouzit tzv. PWM. Nepisete o jaky procesor sa jedna a ani ake je zapojenie. Vacsina MCU ma priamo zabudovanu PWM jednotku,ale v pripade tzv. knight rider efektu to bude o niecom trosku inom.Predpokladam,ze budete mat pripojenych niekolko led k mcu a tu budete musiet riadit kazdu samostatne....tzn. pocet "PWM"xpocet LED. PWM v uvodzovkach preto,lebo to bude potrebne riesit pre kazdu led samostatne a to programovo, co asi nebude tak moc jednoduche pre zaciatocnika.
#1 Guiseppe
Suhlasim s KIIV. Najskor si musis nastudovat ako procesor pracuje, ako sa pristupuje k datam.Co to znamena baza...atd. Co sa tyka toho mov AH,2 v podstate si si odpovedal sam....je to kod sluzby ktora sa ma vykonat v preruseni int 21h. Toto prerusenie ma rozne sluzbi a jednotlive udaje k nim su odovzdavane v registroch. V tomto pripade je vypisovany znak odovzdavany v dl registry a sluzba je v AH registry. Kazde prerusenie ma svoju dokumenaciu a tam je presne popisane co a v akom formate sa odovzdava.
Ked som to tak rychlo prebehol,tak na zaciatku inicializujes max:=0 a help:=0. V podmienkach if (riadky 26-37) priradujes VZDY max:=help t.j. ze max sa vzdy rovna 0 a pri vypocte uhlov mas a/max, b/max,c/max co JE DELENIE NULOU!!!.
To vega33 : Opravujem...ten register je EIFR.... :)
To Attiny - externi preruseni : Pricin vyvolania prerusenia 2x za sebou je niekolko,ale predpokladam,ze pocas prenosu sa nastavi flag INTF1 v GIFR. Tento bit je potrebne pred skoncenim prerusenia znulovat zapisanim log.1 do GIFR registra.
Rovnako tak existuje fcia na posun v subore.Myslim,ze sa volala seek(),alebo tak nejako,ale tiez len pre binarku.To znamena otvorit subor ako binarny,presunut sa na pozadovanu poziciu a zapisuj co sa ti ziada....:)
Urobit viacurovnove menu nie je az taky problem,ako sa zda.Pouzivam na to struktury a tabulky.Funkcia je stale rovnaka a vyuzivam rekurzivne volanie (dufam,ze som pouzil spravny vyraz) jednej a tej istej funkcie.Tym padom zaplnis programovu pamat len jeden raz kodom a tabulkou dat a pomocne data sa ukladaju na zasobnik
.
Tato zalezitost je zlozita a zalezi od toho,co chces kopirovat.Je k tomu treba velmi vela skusenosti a poznat zlozenie exe suboru...absolutne neodporucam a vobec neviem odhadnut,k comu by to bolo dobre.
Suhlasim s KIIV....chyba je presne tam,kde napisal.Treba si nastudovat CO to vlastne DLL je a na co sluzi.To co chces samozrejme nejde,ale da sa cast kodu vynat do DLL a ked najdes novsiu kniznicu,tak len prepises samotny DLL subor....samozrejme za dodrzania urcitych podmienok.
Ked pouzijes internu,alebo externu referenciu treba dan na vyvod Aref kondenzator voci zemi.Pri prepnuti na internu tam potom namerias dane napatie.Rovnako tak mozes pouzit stabilnejsiu ext.referenciu a koniec potaku zapojit na nu....
Kedze pouzivas prerusenie pri cakani na stlacenie kontaktu, zakmit ti moze sposobit nastavenie bitu INTF0 v GIFR registry a po skonceni rutiny prerusenia tento bit aktivuje znovu prerusenie - toto by mohlo sposobovat vyvolanie rutiny 2x. Pred ukoncenim prerusovacej rutiny skus tento bit deaktivovat - vid datasheet.
Pani, z vlastnej skusenosti....displeje s radicom HD44780 (co je vacsina znakovych LCD) potrebuju pri inicializacii "dlhe" casy - priblizne 20mS. Potom uz mozes ist podla udajov v katalogu. Pokial sa LCD nezinicializuje a je to sw, hladajte chybu vzdy v inicializacnej rutine.
Keďže sa jedná len o fragmenty kódu,je to dosť vytrhnuté z kontextu.Predpokladám,že máš správne nastavené adresy ukladania obslužných programov (ORG). Podla toho, že rutina USART0_RXC končí príkazom reti,predpokladám,že sa jedná o prerušenie.V prerušení už netestuj RXC bit,ale len prečítaj data z UDR registra.Použiť smyčku čakajúcu na bit HW v prerušení je nebezpečné.