Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

ATMEGA AVR teorie mikropočítačů
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Teorie
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
anonym






PříspěvekZaslal: čt září 03 2009, 10:48    Předmět: ATMEGA AVR teorie mikropočítačů Citovat

Dobrý den, prosím Vás o osvětlení absolutního základu:

V textu knihy se píše:
Jádro AVR se skládá ze třiceti dvou stejných osmibitových registrů, které mohou obsahovat data a adresy.

tzn.
1 bit je stav: buď 0 nebo 1

klasické desítkové číslo 0-9 je vyjádřeno 4 bity

1 registr AVR je 8 bitů, tedy jeden registr dokáže vyjádřit 2 čísla v desítkové soustavě...

32 registrů * 2 čísla(v jednom registru)= celkem 64 čísel v hodnotě v desítkové soustavě dokáže obsáhnout AVR

vykládám si to prosím správně?

A to, že mohou obsahovat data a adresy znamená prosím co? Jak si to může začátečník představit?

děkuji moc a nezlobte se za tyto základy, čtu knihu pana Vladimíra Váni a chci chápat všechno....

hezký den
Návrat nahoru
anonym






PříspěvekZaslal: čt září 03 2009, 11:14    Předmět: Citovat

8-bitový registr může obsahovat dekadicky čísla 0 až 255 (hexadecimálně to je 0 - FFh). Nebo to můžou být čísla -128 až +127, to když se pracuje se znaménkovou aritmetikou ve dvojkovém doplňku. Když dva registry spojíš (16 bitů), tak do nich můžeš uložit čísla 0 až 65535 nebo -32768 až +32767. Čtyři registry (32-bitů) už pojmou čísla od 0 do 4294967295 nebo - 2147483648 až + 2147483647. AVR má těch registrů 32 a je na programátorovi, jak je použije, jestli každý zvlášť nebo některé po dvou, po třech, čtyřech... AVR jako takové je ale 8 bitový procesor, takže umí naráz pracovat jen s 8-bitovým číslem/registrem a v omezené míře s 16-bit číslem/dvojicí registrů. Takže operace třeba s 32-bit číslem ve 4 registrech už si musí programátor nějak ošetřit pomocí operací s jedním/dvěma registry.

Každá data, uložená v paměti nebo jiném adresním prostoru, musí mít svoji adresu, ta říká, kde se nacházejí. Registr může tedy obsahovat samotná data nebo jejich adresu. Adresa je také jen číslo, stejně jako jiná data, určující je, jak to číslo použiješ, jestli třeba jako hodnotu nějaké proměnné nebo jako adresu té proměnné v paměti.
Takže třeba číslo 25, může být den v týdnu nebo adresa, na které je den v týdnu uložen v paměti, nebo třeba číslo registru, ve kterém je uložen den v týdnu Smile
Návrat nahoru
anonym






PříspěvekZaslal: čt září 03 2009, 12:16    Předmět: Citovat

Děkuji mooc za odpověď!

8-bitový registr může obsahovat dekadicky čísla 0 až 255 (hexadecimálně to je 0 - FFh). Nebo to můžou být čísla -128 až +127, to když se pracuje se znaménkovou aritmetikou ve dvojkovém doplňku.
při té variantě 0 až 255 to znamená, že osmibitový registr pracuje, respektive musím používat při výpočtech pouze čísla například:
0 1 2 12 55 254 158 a nesmím použít číslo: 256
je to správně, prosím?

Když dva registry spojíš (16 bitů), tak do nich můžeš uložit čísla 0 až 65535 nebo -32768 až +32767.
Tedy pokud v programu použiji INTEGER nebo jiné deklarace proměnných,
děje se to, o čem píšete, že se spojí dva registry nebo zůstane jeden, atd?
Je to správně, prosím? Je to o používání INTEGER, BYTE, WORD, atd...


Každá data, uložená v paměti nebo jiném adresním prostoru, musí mít svoji adresu, ta říká, kde se nacházejí.
budíž Smile

Registr může tedy obsahovat samotná data nebo jejich adresu. Adresa je také jen číslo, stejně jako jiná data, určující je, jak to číslo použiješ, jestli třeba jako hodnotu nějaké proměnné nebo jako adresu té proměnné v paměti.
To je zatím pro mne nejméně hmatatelné a těžko pochopitelné. Nevím, kolik dat registr spolkne, jak si to představit. Jeden registr může mít jen jednu proměnnou nebo dvě, případně kolik, prosím?

Takže třeba číslo 25, může být den v týdnu nebo adresa, na které je den v týdnu uložen v paměti, nebo třeba číslo registru, ve kterém je uložen den v týdnu
Pokud je 25 uloženo jako den v týdnu, kde je uloženo to číslo 25?
Pokud je 25 adresa, na které je den v týdnu uložen v paměti, tak v paměti EEPROM nebo FLASH?
A je tento den v týdnu uložen pod nějakým názvem proměnné, tak se na té paměti pozná, že jde o den v týnu a ne například o měsíc, je to pravda, prosím?


nebo třeba číslo registru, ve kterém je uložen den v týdnu
Takže program poukáže na jeden z osmibitových registrů, z těch 32 registrů, co AVR mají a tam najdu tento den v týdnu....jinak řečeno v celém tomto registru je uloženo pouze toto číslo "25" ? To se mi zdá jako špatná moje úvaha. Protože tam těch čísel může být víc, takže v jednom registru může být uloženo více proměnných?


děkuji moc, pokud si kdokoliv najde chvilku toto přečíst....!
Návrat nahoru
taky-anonym
Neregistrovaný





PříspěvekZaslal: čt září 03 2009, 12:35    Předmět: Citovat

Anonym napsal(a):
...
1 registr AVR je 8 bitů, tedy jeden registr dokáže vyjádřit 2 čísla v desítkové soustavě...


Asi tě plete kódování BCD. V kódě BCD (Binary Coded Decimal - binárně kódované desítkové číslo) se opravdu na číslo třeba 99 spotřebuje 8 bitů, ale takové kódování je spíš pro lidi, aby jedním pohledem viděli z těch bitů, o jaké číslo se jedná. Tak jsou tam rovnou zakódované desítkové číslice. Ovšem 4 bity dokážou vyjádřit 16 možností, 8 bitů 16x16 možností, a v BCD je využito 100 možností a 156 je oběť za luxus přehlednosti.
Počítače včetně AVR takový luxus nepotřebují a použití binárních čísel je efektivnější a daleko nejčastější.
Návrat nahoru
anonym






PříspěvekZaslal: čt září 03 2009, 12:35    Předmět: Citovat

Ještě doplním k předchozímu svému příspěvku toto:

Našel jsem na internetu toto dovysvětlení:

Datové registry jsou používány pro uložení číselných hodnot, jako jsou integer a hodnoty s pohyblivou desetinnou čárkou.
Kolik se prosím do jednoho registru AVR vleze těchto číselných hodnot?Například integer?Kolik čísel, pokud bych chtěl takto představu zhmotnit?

Adresové registry v sobě uchovávají adresy a používají se instrukce pro nepřímý přístup do paměti počítače.
To koumám, to teď nechápu vůbec
Návrat nahoru
anonym






PříspěvekZaslal: čt září 03 2009, 12:51    Předmět: Citovat

tady michalino....

Děkuji za osvětlení...

do jednoho registru AVR tedy můžu uložit :
jedno číslo 99
nebo
dvě čísla: 9 a 9
nebo jedno číslo: 9
v tomto binárně kódovaném desítkovém tvaru...

nebo X-čísel, mnohem více čísel, v binární podobě.....

je to tak prosím?

A jak píšete:
Ovšem 4 bity dokážou vyjádřit 16 možností, 8 bitů 16x16 možností, a v BCD je využito 100 možností a 156 je oběť za luxus přehlednosti.
jak to chápu:
4 bity dokáží vyjádřit 16 možností čísla pomocí nul a jedniček
8 bitů 16x16 možností, chápu
kde se vzalo těch 156 jako oběž za luxus přehlednosti, prosím?

děkuji
Návrat nahoru
anonym






PříspěvekZaslal: čt září 03 2009, 13:24    Předmět: Citovat

Tak ještě jednou, do jednoho 8-bit registru jde uložit jedno číslo z rozsahu 0 až 255. Co to číslo znamená, je věc programátora, nikoliv pojídače koláčků, ten neví, co to je registr.
Návrat nahoru
popopepe



Založen: Oct 26, 2005
Příspěvky: 548

PříspěvekZaslal: čt září 03 2009, 13:33    Předmět: Citovat

Anonym napsal(a):
Ještě doplním k předchozímu svému příspěvku toto:

Našel jsem na internetu toto dovysvětlení:

Datové registry jsou používány pro uložení číselných hodnot, jako jsou integer a hodnoty s pohyblivou desetinnou čárkou.
Kolik se prosím do jednoho registru AVR vleze těchto číselných hodnot?Například integer?Kolik čísel, pokud bych chtěl takto představu zhmotnit?

Adresové registry v sobě uchovávají adresy a používají se instrukce pro nepřímý přístup do paměti počítače.
To koumám, to teď nechápu vůbec


Procesor je obvod, který umí zpracovat pouze binární čísla. Jestli je to byte, integer, string, či cokoliv jiného, je mu zcela volné. Tohle si vymysleli lidé, aby si nějak ulehčili situaci. Najdi a nastuduj si základy práce ve dvojkové soustavě a Booleovu algebru. Takže do 8 bitů se dá nakládat 2 na osmou informací, tedy 256. Protože však existuje i nula, horní číslo může být pouze 255. Pokud těch bitů bude 16, tak je dvě na šestnáctou... atd..
Jinak k tomu, proč jednou adresa, a jednou data v registru.. zkoukni někde základy práce mikroprocesorů, ukazatel adresy, akumulátor, registry a pod. Ono toho je docela dost..
Prostě registr je jenom místo v RAM paměti, kam si procesor odkládá nějaká data. Jednou si tam například odloží adresu nějaké proměnné, kterou vypočítal, aby jí měl dostupnou až jí bude potřebovat, jednou si tam odloží přímo hodnotu nějakého výsledku, který chceš zpracovat. Tohle vše ale dělá program, který ty napíšeš. Procesor sám nevymyslí ani prd...
Uvědom si, že ten kus křemíku vše dělá krok za krokem, v rytmu oscilátoru, který ho taktuje. Jedna instrukce za druhou, tak jak jsi napsal program. Instrukcí myslím instrukci assembleru, nikoliv Bascomu. Když v Bascomu napíšeš "print a", tak je to několik desítek instrukcí assembleru.
Aby jsi se nemusel zabývat právě regisstry, typy procesorů,jejich instrukční sadou a pod, byly vymyšleny jazyky jako Basic, C a podobně. Zde se dá napsat program velmi rychle. Po té ho ten Bascom nebo C zkompiluje do podoby binární, potřebné pro ten procesor. Výsledný program bude vždy delší, pomalejší a hůře optimalizovaný než ten, který napíše někdo v asssemleru a bude dělat to samé. To už je prostě daň za použití Bascomu a td..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: čt září 03 2009, 14:33    Předmět: Citovat

michalino:

Popopepe, anonyme, děkuji Vám za obsáhlé rady. Nechci být žádný zarytý znalec a profesionál v oblasti asembleru, nechci být ani pojídač koláčků(nejspíše to ve Vaší hantýrce má souvislost s cookies, tedy balíčkem informací, které mi bascom předloží , aniž bych musel znát podstatu věci). Chci o tom vědět více a sedím nad tím, zajímám se o to a jsou pro mne cenné rady ty, které píšete. Popopepe, děkuji velmi za obsáhlou odpověď, která mi vše mnohem více ztmelila a anonyme, děkuji za trpělivost a všechna detailní vysvětlení k této věci:

čtu zároveň knihy a internet, kde si dávám věci dokupy,ale pro mne jako dosavadního požírače koláčku je toho opravdu hodne:

Vladimír Váňa - Mikrokontrolery ATMEL AVR popis mikrokontroleru,
architektura a instrukční soubor
a
Jiří Pinker - mikroprocesory a mikropočítače

je toho fakt hodně, teď se dostávám k adresovacím módům a jsem z toho jelen.......
Návrat nahoru
jezevec
Hlavní moderátor


Založen: Jun 13, 2004
Příspěvky: 5669
Bydliště: Břeclavsko

PříspěvekZaslal: čt září 03 2009, 14:52    Předmět: Citovat

Jedna praktická rada, prozatím se vybodni na teorii, postav si jednoduchou bastl desku a na netu nebo v knize si najdi nějaký jednoduchý prográmek s popisem, třeba zapínaní a vypínání LEDky tlačítkem. Snaž se pochopit jeho funkci a pak mírně modifikovat. Je lepší si to jednou zkusit než o tom stokrát číst. Postupně si zažiješ různé pojmy a definice a pak i ta teorie bude najednou snadno pochopitelná. Programátor doporučuji raději profesionální než nějaký bastl. Není nic horšího než když ti program nefunguje, bádat jestli je to chybou v programu, nebo nefunkčním programátorem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
anonym






PříspěvekZaslal: čt září 03 2009, 14:57    Předmět: Citovat

Právě, že se pohybuju už v míře zvládnutých tlačítek, diod, MAX232, serva, lcd, nicméně nechci zabřednout v povrchnost a chci jít více do hloubky, vyzkoušel jsem si , že programátor funguje dobře, že příkazy fungují taky dobře...nejsem nijak daleko, pouze mám odzkoušené základní funkce a chci jít hlouběji...chci dokázat pracovat s použitím bitů a dostat tak maličko více železo pod kontrolu....

a to mi právě není jasné, jak bity fungují, jak se adresují registry na místo v paměti rom nebo flash a cílem tohoto snažení má být ať už za pomocí bascomu dokázat maličko více ovlivňovat seriovou komunikaci, ukládání dat, přerušení, apod...

až tohle zvládnu, přejdu na cečko, dříve nechci....bojím se

děkuji Vám za příspěvek jezevče....
Návrat nahoru
takyanonym
Neregistrovaný





PříspěvekZaslal: čt září 03 2009, 15:10    Předmět: Citovat

Hlavně si ujasni rozdíl mezi číslem a číslicí. Číslo je nějaká kvantita, číslice potom znaky, kterými se ta kvantita vyjadřuje v konkrétní číselné soustavě.
V registrech je to binární soustava, číslice 0 a 1. Když sčítáš v akumulátoru 7+5, v něm se sčítá 0000 0111 + 0000 0101, výsledek 00001100. Když chceš BCD kód, bývají na to instrukce DAA - Decimal Adjust Accumulator. Tato instrukce přičte ke 4 bitům hodnotu 6, pokud jejich aktuální hodnota je větší než 9. Takže:
0000 1100 + 0000 0110 = 0001 0010
Na tento výsledek se nedíváš jako na číslo (kvantitu) 18, ale zakódované číslice "1" a "2".
Hlavní je, aby programátor věděl, s čím zachází a co chce dosáhnout. Wink
Návrat nahoru
popopepe



Založen: Oct 26, 2005
Příspěvky: 548

PříspěvekZaslal: čt září 03 2009, 15:20    Předmět: Citovat

Anonym napsal(a):
Právě, že se pohybuju už v míře zvládnutých tlačítek, diod, MAX232, serva, lcd, nicméně nechci zabřednout v povrchnost a chci jít více do hloubky, vyzkoušel jsem si , že programátor funguje dobře, že příkazy fungují taky dobře...nejsem nijak daleko, pouze mám odzkoušené základní funkce a chci jít hlouběji...chci dokázat pracovat s použitím bitů a dostat tak maličko více železo pod kontrolu....

a to mi právě není jasné, jak bity fungují, jak se adresují registry na místo v paměti rom nebo flash a cílem tohoto snažení má být ať už za pomocí bascomu dokázat maličko více ovlivňovat seriovou komunikaci, ukládání dat, přerušení, apod...

až tohle zvládnu, přejdu na cečko, dříve nechci....bojím se

děkuji Vám za příspěvek jezevče....

Céčko je určitě zdaleka nejrozšířenější jazyk pro tyhle malé mršky, ale je to taky jazyk stejného kalibru jako Bascom. Má jinou syntaxi, má spoustu odlišností, ale pozor, assembler to není. Pořád to budeš kompilovat z C do bináru, a výsledek bude zase různý podle toho, jak jsi šikovně napsal program, a jak někdo v tom C kompileru napsal jednotlivé knihovny pro kompilaci.
Co uděláš v C, uděláš pravděpodobně i v Bascomu. Jinak spíš doporučuji soustředit se pořádně na jeden jazyk, a ten zvládnout včetně jeho detailů. Pak nebudeš mít povětšinou potřebu vůbec šahat jinam (kromě nějakých výjimek, kdy program musí být přesně optimalizován například kvůli času, a nepomůže ti ani C ani Bascom, půjdeš na to assemblerem).
Ideální je samozřejmě assembler, má to jednu vadu, musíš myslet jako procesor Smile
C je určitě dobrá volba.
Bascom je vynikající svou jednoduchostí a pochopitelností. A pokud se tím nehodláš živit, ale pouze bavit, je Bascom skvělá volba.
Práci s bity, byte a podobně budeš potřebovat u každého jazyka, je to jedno. To se prostě naučit musíš. Jinak neprogramuješ, ale opisuješ příklady. Pokud ti není alespoň zhruba jasné, jak to vlastně uvnitř toho procesoru funguje, tím bych začal. A pak bych teprve volil, v čem to napsat a jak to do toho procesoru dostat. Hodně zdaru..
Jinak si stáhni datasheet k nějaké Atmega, a máš tam všechny instrukce, všechny registry, jak který pracuje a dělá, to je dobrý studijní materiál...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: čt září 03 2009, 17:20    Předmět: Citovat

Popopepe, takyanonyme,

děkuji Vám za příspěvky. Budu na ty věci myslet při další četbě a studiu architektury AVR a jsou to věci, které mi rozhodně hodně pomáhají, například ten součet čísel, jak se oběvuje v AVR a jak ho chápeme my...vidíme my.

Děkuji za návody k přístupu k této věci.

Bascom a Céčko, že jsou podobné...hmmm..ano, v jistém směru to tak chápu. Nechci se ovšem ptát, kterým jazykem člověk dokáže více udělat...to bych tady rozpoutal bitvu minimálně na dva tábory...jen mě těší, že pokud přilnu k bascomu...nebude nutné se učit céčko... i když ve vývojařských firmách chtějí spíše céčkaře, že...

děkuji Vám!!
Návrat nahoru
popopepe



Založen: Oct 26, 2005
Příspěvky: 548

PříspěvekZaslal: čt září 03 2009, 17:37    Předmět: Citovat

Anonym napsal(a):
Popopepe, takyanonyme,

děkuji Vám za příspěvky. Budu na ty věci myslet při další četbě a studiu architektury AVR a jsou to věci, které mi rozhodně hodně pomáhají, například ten součet čísel, jak se oběvuje v AVR a jak ho chápeme my...vidíme my.

Děkuji za návody k přístupu k této věci.

Bascom a Céčko, že jsou podobné...hmmm..ano, v jistém směru to tak chápu. Nechci se ovšem ptát, kterým jazykem člověk dokáže více udělat...to bych tady rozpoutal bitvu minimálně na dva tábory...jen mě těší, že pokud přilnu k bascomu...nebude nutné se učit céčko... i když ve vývojařských firmách chtějí spíše céčkaře, že...

děkuji Vám!!


Pokud se tím hodláš živit, uč se C a assembler.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Teorie Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.24 sekund