Zaslal: čt leden 16 2014, 11:46 Předmět: Čtení vstupu Atmega
Dobrý den,
předem se omlouvám za svůj velice triviální dotaz, ale už si fakt nevím rady. Jsem úplný začátečník s uC, včera jsem si koupil Atmegu8 a zkoušel nějaké základní věci (blikač, bin. hodiny...). Výstupy mi fungovaly pěkně, ale za celý den se mi nepodařilo rozjet vstup (třeba tlačítko). Přijde mi to jako tak jednoduchá věc, že váhám, jestli spíš nemám port nějak částečně odpálený.
V céčku:
kód:
DDRD = 0; //vstupní
PORTD= 1; //Připojí Pull=Upy
while(1)
PORTB=PORTD; // Na B by mely svítit ledky podle stavu na portu D
S pull-up rezistory očekávám 1 pokud je nožička "ve vzduchu" a 0 pokud je připojena ke kostře.
Při dalších pokusech mi nakonec Atmega přestala komunikovat po ISP, tak jsem koupil jinou a u té všechno funguje. Takže byl buďto problém s PUD, jak říkáš, nebo byla už před tím částečně v háji. Někdy ji zkusím vyresetovat přes paralelní programování a zkusím, co to udělá. Díky za odpověď.
Založen: Apr 02, 2011 Příspěvky: 18093 Bydliště: Nový Bydžov
Zaslal: čt leden 16 2014, 19:51 Předmět:
Když chceš přes port zapisovat i číst nastřídačku, musíš před čtením do portu nějakým způsobem zapsat a nebo nastavit FFH. Platí to u kupy jednočipů. Představ si to jako že každej bit portu má "záchytnej D klopák", kterej se mění instrukcema typu OUT. Při instrukcích typu IN podle jejich typu čteš buď záchytnej klopák a nebo přímo fyzickou nohu švába. Má to 2 úskalí, pokud byla někdy předem do D klopáků zapsaná nula, tak IN nejde, musí se do D klopáků zapsat 1. Na druhou stranu, pokud bys četl přímo nohu portu zatíženou třeba přechodem BE posilujícího tranzistoru, byly by špatně logický úrovně na noze portu a četl bys stále 0. Tohle platí u Intel 51 i Atmel 51 řady a u jiných to bude podobný. Chce to si načíst, jak jsou u konkrétního typu porty řešený.
Jirka
Děkuji všem za komentáře. Jak jsem poprvé jásal, neměl jsem pravdu. "Fungovalo" to, protože jsem měl slabý napájecí zdroj a vstupní pin měl v mém kódu resetovat binární hodiny (poklesem napětí se zresetoval celý procesor, takže to plnilo svou úlohu, pin ale ve zkutečnosti nefungoval). Vše vyřešilo čtení z PIND. Už mi to nádherně jede.
Teď už je mi vše jasné. Jsem poněkud rozladěn, že jsem čtení z PORTD viděl v několika na sobě nezávislých návodech pro začátečníky. Dost mě to naštvalo. Dnes má každej potřebu psát na internet a dělat chytráka a není si schopnej ani pořádně ověřit funkčnost svého kódu...
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
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.