Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 09 06, 00:21. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
Sveiki, ne per seniausiai pradejau nagrineti atmega16 ir priejau prie uzmigdimo funkcijos, Uzmigdiziau ja ir negaliu pazadinti. Matomai kazko truksta kode.. Zinau kad pertraukties, bet kaip ji tur atrodyti ir ku ja irasyti nezinau. :/ Gal kas padetumet, nes konkretaus paprasto pavyzdio nerandu..
Tikslas: Programa ijungineja diodus kas 6s ir uzmiega, pazadinama INT0 aukstu lygiu...
Parasiau sitaip, tai pertrauktis veikai, nes lempute uzgesineja, bet is miego busenos visviena nepabunda.. Turit kas kokiu minciu.. Gla zinot kaip pilnai atrodo uzmigdymo kodas, nes per tas bibliotekas neaisku kas vyksta..
Ir dar toks pakeitimas, pasirodo reikai ne aukst olygio o zemo ant INT0
Parasiau sitaip, tai pertrauktis veikai, nes lempute uzgesineja, bet is miego busenos visviena nepabunda.. Turit kas kokiu minciu.. Gla zinot kaip pilnai atrodo uzmigdymo kodas, nes per tas bibliotekas neaisku kas vyksta..
Nenaudok biblioteku, nes nieks tau ir nepaaiskins kas ten toj tavo proceduroj ivyksta.
Pamanyk rašo:
Ir dar toks pakeitimas, pasirodo reikai ne aukst olygio o zemo ant INT0
Skiedi... Matosi programa ne pats rasei, nes net komentaras idetas kada buna sugeneruojamas interruptas.
Skiedi... Matosi programa ne pats rasei, nes net komentaras idetas kada buna sugeneruojamas interruptas.
Jai pazvelgtumet i mano pirma kodo varianta sprastumet, kur pakeitimai ir kame, o kad nukopinau ir nerasiau dvi eilutes "so"? Neto klausiu, klausiu ar mokat, turit kas koda kuris veikia, uzmigdo ir zadina. Ar bent jau suprantat kaip daroma ir galite paaiskint. Dirbu su AVR studio ir jis deja nepalaiko sleep() funkcijos, kurios man reikai todel naudojuosi biblioteka
Tu geriau papasakok kaip tu zinai, kad pertrauktis suveike, jei tu ir pries uzmiegant ir pertraukties proceduroj irasei PORTB = 0x00;
Buvau paleides be sleepNow() ir uzsidegus LED paspadus pertraukti jie uzgesdavo, o jei us sleepNow(), tai dar pries uzmiegant paleidi pertraukti per pirmas 3 s ir uzgesta ledai, tacaiu kai uzmiega, tai jau nepabunda paspaudus pertraukti
Issiaiskinau, dar karta perskaites datasheeta. Pasirodo Power down galiam pazadinti tik Low leveliu, pakeites pertraukties nustatymus, viska paleidau. Aciu visiem uz pagalba ir patarimus . Kodo geras veikaintis variantas:
Kodas:
void sleepNow()
{
MCUCR|=(1<<SM1);// Power down
MCUCR|=(1<<SE);// Sleep enable
asm volatile ("sleep"::);
}
ISR(INT0_vect)
{
PORTB = 0x00; //turn off led
MCUCR&=~(1<<SE);// Sleep disable
}
int main(void)
{
GICR|=(1<<INT0); //External Interrupt Request 0 Enable
MCUCR|=(0<<ISC00)|(0<<ISC01); //The low level of INT0 generates an interrupt request.