Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 28 odgovora
  • 9.975 pregleda

Najnovija ↓

Re: Programiranje atmega8 15.05.2014. u 17:56 · pre 151 mesec #21
Moze li neko da mi posalje fuse za ovaj atmega imam problem sa taktom jer bez externog oscilatora nije hteo da mi prepozna, pa sam stavio kvarcni na 4mhz onda sam ucitao program samo da mi pusti "1" na portc i to je radilo, pa sam probao sa blinkom i tu se javlja problem, onda sam se malo igrao sa fuse bit pomocu ds sam postavio bite da mi radi na 1mhz internim oscilatorom ali to nije radilo kad skinem kvarcni, onda sam probao jos neke kombinacije na kraju sam morao da pravim 1MHZ sa 555 tajmerom da bi ga uopste pony prepoznao ... Vise se nebih igrao sa tim pa molim da mi neko posalje podesavanja za 4mhz interni oscilator jer ocigledno negde gresim ,

Cudno mi je to sto odmah po prvom ukljucivanju nije imao fabricki takt od 1mhz ,
Da li je problem u tome sto je moj atmega u tqfp kucistu ?
Potpis
"Bitno je stalno postavljati pitanja "
Re: Programiranje atmega8 28.05.2014. u 13:27 · pre 151 mesec #22
Ne vidim gde gresim a ovde mi program staje :

Code:
while(PIND & (1<<PIND0)) || PIND & (1<<PIND1)) == 0


kad je samo jedan uslov onda radi
Potpis
"Bitno je stalno postavljati pitanja "
Re: Programiranje atmega8 28.05.2014. u 14:14 · pre 151 mesec #23
Zaejbo si sa zagradama.
Citav uslov za while mora biti u zagradama.

Kod tebe je to samo ono sto je prije || operacije.
Treba npr. ovako:

while(((PIND & (1<<PIND0)) || PIND & (1<<PIND1)) == 0)

Ovo bi trebalo da je sintakticki ispravno, ali ne znam da li si to htio.
U svakom slucaju, prekontrolisi i vodi racuna o prioretetu operatora i da na kraju imas isto lijevih koliko i desnih zagrada :)
Sviđa mi se1
Re: Programiranje atmega8 28.05.2014. u 20:02 · pre 151 mesec #24
Kad se malo glava ohladila bilo je logicno da to ovako treba da pise

Code:

while(((PINC & (1<<PINC4)) && PINC & (1<<PINC5)) != 0)
    {
    } // Vrti se u praznoj petlji dok se ne stisne neki od tastera na c4 ili c5

Potpis
"Bitno je stalno postavljati pitanja "
Re: Programiranje atmega8 31.05.2014. u 12:51 · pre 151 mesec #25
Moze li program nakon externog prekida da se vrati na ono mesto sa koga je gl. program prekinut ? Sta treba da dodam ?
Code:
ISR(INT0_vect)
{
    TCCR2 &= ~(1 << COM21);
    lcd_clrscr();
    while (okW&&tast1W!=0)
    {lcd_string("    STOP\n");
        lcd_string(" OK-nast 1-kraj");
        _delay_ms(100);
        lcd_clrscr();
        lcd_home();
    }
    
    if (tast1W==0)
    {lcd_clrscr();
        lcd_string(" Motanje zavrseno\n");
        sprintf(namot_ch," Namotano %d",namotano);
        lcd_string(namot_ch);
        while(1)
        {}}
        return;
    }
Potpis
"Bitno je stalno postavljati pitanja "
Re: Programiranje atmega8 31.05.2014. u 13:46 · pre 151 mesec #26
Uvek se tamo i vraća. Ne treba ništa da dodaješ. Nije ti dobra ova obrada prekida. U funkciji u kojoj obrađuješ prekid obavljaš samo najneophodnije stvari (npr. postaviš neki flag da se prekid uopšte desio, uvećaš/umanjiš neki brojač itd). Potom se prekidna rutina napušta i izvršavanje se nastavlja od one tačke na kojoj si bio pre nego se prekid desio. Stvar tvog koda u glavnom programu je da obradi dalje to što je prekid doneo.
Potpis
gorankg
Re: Programiranje atmega8 31.05.2014. u 15:07 · pre 151 mesec #27
Citat:
Milan_95: Moze li program nakon externog prekida da se vrati na ono mesto sa koga je gl. program prekinut ? Sta treba da dodam ?

Poslije prekida program ce se sam vratiti tamo gdje ga je prekid omeo.
Medjutim, u zavisnosti sta se odvijalo u prekidnoj rutini, odredjeni registri/flagovi (pogledaj npr. STATUS REGISTER) u procesoru mogu biti promjenjeni.
Da bi obezbedio da se po povratku iz prekidne rutine u glavni program procesor nalazi u istom stanju u kome je bio prije nego je prekinut, to prva stvar koju moras uraditi po ulasku u prekidnu rutinu je da sacuvas stanje STATUS registra (i eventualno nekih drugih koji ce se promjeniti u prekidnoj rutini), i neposredno prije povratka iz prekidne rutine u glavni program vratis ta stanja u svoje pripadajuce registre.

Ne znam koji kompajler koristis, i to moze biti rjeseno automatski u kompajleru, a i ne mora.
U slucaju da jeste, kompajler ce sam dodati to u tvoj kod, a u slucaju da nije - moras sam.
Cak i kad jeste, ne mora znaciti da automatski dodaje za sve moguce registre, mozda samo za STATUS.
Pogledaj dokumentaciju kompajlera i pogledaj datasheet mikrokontrolera za vise detalja.
Re: Programiranje atmega8 31.05.2014. u 15:59 · pre 151 mesec #28
Ipak je sve bilo ok samo se zaturilo jedno lcd_clrscr koje je cistilo display a nije trebalo pa sam ja pomislio da nakon rutine uC tu zavrsi svoj program , ipak hvala , znam da ovi prekidi trebaju da budu mnogo mnogo kraci ali u ovom slucaju pozivom tog prekida trebam da blokiram bukvalno sve delove uredjaja i nije mi bitno vreme koje je potrebno da se sve to izvrsi i vrati u gl. program ..
Potpis
"Bitno je stalno postavljati pitanja "
Re: Programiranje atmega8 12.06.2014. u 23:37 · pre 150 meseci #29
Zahvalio bih se svima koji su mi pomogli na bilo koji nacim , motalica je zavrsena , sve radi kako je zamisljeno , danas sam se malo igrao i isprobavao sasvim lepo slaze tanku zicu tipa 0,1mm ... ako se neko odluci da pravi nesto slicno tu sam da pomognem ...
Potpis
"Bitno je stalno postavljati pitanja "
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme