Založen: Dec 11, 2015 Příspěvky: 163 Bydliště: Slovensko,Bratislava
Zaslal: st březen 30 2016, 20:01 Předmět: AVR PCINT prerušenia
Dobrý deň PCINT prerušenia sa generuje pri zmene úrovne logického signálu z 1-0 alebo 0-1 a mne v hlave vrtaju tieto otazky
1. je možne aby sa mi program v ISR vykonal len pre zmenu z 1 do 0 ? teda zatlačím tlačítko vygeneruje sa prerušenie vykoná sa program v ISR a keď tlačítko pustím tak pre zmenu z 0 do 1 síce sa prerušenie vygeneruje ale program vo vnútri ISR to bude ignorovať
zatiaľ som to skušal obijsť pomocou 2 tlacidiel
kód:
ISR(PCINT1_vect)
{
while (1)
{
if(!(PINC & (1<<PC2)))
{
i++;
if(i>=10)
i = 0;
break;
}
}
}
tlačítkom PC1 sa generuje prerušenie raz keď ho zatlačím prechod z 1 do 0 a vnori sa do cyklusu while a teda keď PC1 pustím tak prechod z 0 do 1 by sa mal ignorovať teda prerušenie sa vykonáva tak nemôže byť znovu vygenerované ? alebo zle tomu rozumiem no a cyklus sa bude vykonávať dovtedy až kým nezatlačím tlačítko PC2 a inkrementuje sa mi i
Problém je v tom že moje úvahy asi su zle pretože mne to ani s dvoma tlačítkami nefunguje teda i sa inkrementuje aj pri prechode z 1 do 0 aj z 0 do 1
Budto použij int na pinech AVR 2 nebo 3, u kterých se dá nastavit na kterou hranu reagují nebo u toho pcint po vstupu do obsluhy int zkontroluj v jakém je pin stavu. Např. když je v jedničce, tak byl před int v nule a do obsluhy se vstupuje jako reakce na vzestupnou hranu.
Ale obecně není dobré navěsit výstup mech spínače-tlačítka(které generují zákmity) na vstup s interuptem.
Založen: Dec 11, 2015 Příspěvky: 163 Bydliště: Slovensko,Bratislava
Zaslal: čt březen 31 2016, 9:15 Předmět:
Zakmity budú ošetrené schmittovym preklapacim obvodom len to testujem na vývojovej doske a tam tlačítka nemam zapojené na INT preto má zaujalo či sa dá aj pomocou PCINT to uskutočniť
nevim, zkus třeba v podprogramu přerušení hned na jeho začátku po jeho aktivaci (z 1 do 0) změnit reakci na hranu z 0 do 1 (vždycky nastavit na opačnou reakci, než na kterou se to přerušení právě vyvolalo), to se dělá asi v registru EICRA nebo EICRB
a do podprogramu přerušení dej podmínku:
IF (reakce z 1 do 0) potom // test v registrech EICRA nebo EICRB
proveď svůj kód
ELSE
neproveď nic
je mi divný, že chceš vyvolávat i přerušení z 0 do 1 a nechceš s tím nic provádět
zdržovat se v podprogramu přerušení smyčkou while asi nebude to pravé ořechové, ten má být co nejrychleji obsloužen a hurá pryč
Založen: Dec 11, 2015 Příspěvky: 163 Bydliště: Slovensko,Bratislava
Zaslal: čt březen 31 2016, 17:49 Předmět:
ani tento kód nie je práve orechové robí to asi nasledujúce ak pred tým to počítalo 0 2 4 6 tak teraz to počíta 1 3 5 7 9 skúsim sa pozrieť na registri EICRA a EICRB
Založen: Jan 14, 2014 Příspěvky: 610 Bydliště: Ašsko
Zaslal: čt březen 31 2016, 18:20 Předmět:
V datasheetu si najdi popis, lze využít většinou varianty přerušení vzestupnou, sestupnou hranou nebo změnou stavu.
Zákmity lze ošetřit buď čekací smyčkou (a kontrolou stavu), nebo po dobu zákmitů nepovolovat další přerušení. U mechanických talčítek to bývá cca 20ms (ale není to pravidlem). Zákmity Ti Schmittův obvod nezlikviduje.
Jirka
Založen: Apr 22, 2006 Příspěvky: 296 Bydliště: Hradec Králové
Zaslal: po duben 11 2016, 16:01 Předmět:
Hodnoty výstupů bych neměnil v obsluze přerušení, ale nastavil v TCCR1A změnu úrovně při compare match - bity COM1A0 a COM1B0 na 1 (platí pro ATmega8, nevím jaký používáš procesor)
Založen: Dec 11, 2015 Příspěvky: 163 Bydliště: Slovensko,Bratislava
Zaslal: po duben 11 2016, 16:13 Předmět:
Atmega328p ja ani nechcem meniť hodnotu vytupu v obsluhe to je len skúška či to funguje a je nastavene ok a ďalej môžem nato naväzovať program problém je že to nejde a nejde a neviem kde robím chybu
A co ti není jasné, že máš na obou výstupech stejnou frekvenci? Vždyť je to jeden čítač, tak nemůže mít dvě různé frekvence, jen dvě různé střídy nebo různou fázi. Koukni se na ty výstupy osciloskopem, budou navzájem posunuté.
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
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.