Čau, učím se programovat AVRka v C, zvládl jsem rosvítit LEDku i ji rozblikat, ale nepovedlo se mi použít tlačítko. Jde mi jen o to, že když stisknu tlačítko, rozsvítí se LEDka, pustím tlačítko, LEDka zhasne. Zkoušel jsem to podle tohoto návodu: karlovyvary.ok1kvk.cz/web/index. … ad-tlaitko
ale nepovedlo se, ledky jenom strašne rychle blikaly (skoro nepostřehnutelne) a když jsem zmáčkl tlačítko tak svítili normálně.
Možná to bylo tím, že v návodu to nahravaji do Atmegy8 a ja do ATtiny2313, ale podle mě by v tom neměl být moc velký rozdíl, protože blikání s LEDKou mi fungovalo. Nemoli byste mi na ukázku předložit nějaký jednoduchý prográmek s komenty ? budu vám vděčný, protože se s tím trápím už 3 den.
administrator: přejmenováno z "Jak na tlačítkov C"
jak jsem psal dělal jsem to podle toho odkazovaného navodu a ten program mi nefunguje, dela to co jsem popsal, napadlo me jestli to neni tim že mam špatně nastaveny oscilator nebo tak něco
int main (void) //hlavní funkce
{
unsigned char prom; //nadefinujeme si proměnnou typu unsigned char se jménem “prom”
//to znamená, že v paměti RAM vznikne místo (8 bitů) kam můžeme
//ukládat data
DDRB = 0xff; //(0xff = 0b11111111) -> Piny 0 - 7 portu “B” budou výstupní
DDRD = 0; //Port “D” bude vstupní (tlačítko je připojeno k portu “D”)
while (1) // Nekonečná smyčka (dokud 1 = pořád)
{
prom=PIND; //do proměnné “prom” uložíme stav na portu “D”
//(tam kde je 5 V bude “1” a kde je 0 V bude “0”)
prom=prom&0b00000100; //vymaskujeme pouze tlačítko “1”
//(pokud bylo na PD2 5 V bude výsledek 0b00000100
//jinak bude výsledek “0”
if(prom==0) //pokud se proměnná "prom" rovná nule - tlačítko je stisknuté
{
PORTB = LED; //Rozsviť vybrané ledky
}
else //jinak (pokud se proměnná "prom" nerovná nule - tlačítko není stisknuté
{
PORTB = 0; //zhasni všechny ledky
}
} //Konec cyklu "while (1)" - program skočí zpět na jeho začátek
}
Tohle je ten program, měl by být správně, ale stejně mi nefunguje
možná trapná otázka, ale kám má přijít zapojit ten pull up rezistor ? myslel jsem, že se má dát? myslel jsem, že se má dát mezi pin a 1 kontakt tlačítka, ale dělá to samé (ledka rychle blíká…)
Jo našel jsem si to zapojil a funguje to, díky moc za pmoc, mám jen poslední dotaz, ty pull up rezistory se musí používat u všech tlačítek, nebo se to dá nějak obejít v programu, popřípadě v pojistkach ?