# ATMEL mikrokontrolleri >  INT2

## kvaris

Sveiki!

Drosi vien par to jau ir runats, bet nu pajautasu vel. Kadas vertibas jaraksta mcucr, emcucr, gifr un gicr registros, lai stradatu partraukums, signalam uz int2 kajas uzkapjot no 0 uz 1? SEI komanda ari ir lietota. Piemerus esmu meklejis interneta un datasheeta, visiem bitiem it ka vertibas pareizas, bet nesanak. Doma vienkarsa - int2 kajai uzlecot augsa, iedegas LED, kas tiek barota no PORTB.

Izmantoju Atmega 8515
Liels paldies.

----------


## kabis

Ja nav vajadzīgs to diodi ieslēgt precīzi laikā, tad var arī ārējo pārtaukumu neizmantot. Uztaisi programmā mūžīgo ciklu, kurā ir 1 if. Ja ieeja ir uz zemi, tad izslēdz diodi, ja nē, tad ieslēdz.

----------


## Delfins

neesmu ASM spec, bet ka es darītu, ja neietu ASM kods - uztaisītu C/C++ kodu un paskatītos asembleju.

----------


## kvaris

Vispār pašu diodi man nevajadzēs spīdināt, es tik gribēju iemācīties normāli izpildīt pārtraukuma procedūru. Programma darīs galu galā kaut ko citu.

----------


## Delfins

VMLAB esi debugojis kodu?
varbūt tev pins resetojās

----------


## kvaris

Es to kodu rakstu kā arī programmēju ar AVR Studio 4. Bet kā kodā var simulēt ārējo pārtraukumu? Vai pins jānokonfigurē kā inputs un jāsūta 1 uz pinu?

----------


## Delfins

C kodā tā, ārējais pārtrauktums:


```
// Enable INT0 External Interrupt
GICR |= 1<<INT0;

// Falling-Edge Triggered INT0
MCUCR |= 1<<ISC01;
```

 spiežot pogu (pinu savienojot ar kādu no līmeņiem), nostrādā pārtrauktums.
Man tā bij uz 4 pogām un viss darbojās

Re kur var izplēst no kāda projekta "pogas kodu"
http://fab.cba.mit.edu/classes/MIT/863. ... cho.44.asm

PS: kāpēc ASMā raksti?

----------


## kvaris

Vispar jau C rakstit laikam vajadzetu, bet kaut ka saku ASMaa rakst''it un iepatikās  :: 

Bet tāds jautājums - ko nozīmē tas, ja, pieliekot spriegumu INT2 kājai, interrupts neizpildās, bet, pieskaroties šai kājai ar PIRKSTU, interrupts izpildās tūlīt pat?   ::

----------


## jeecha

Neesmu AVR speciaalists (lietoju PICus un nedaudz ARMus) bet visdriizaak to ka pins "karaajas" gaisaa - respektiivi tam nav iesleegts "weak pull-up" (vai kaa nu to AVR graamataas sauc, un ja tas ir pieejams konkreetajam pinam) un arii aarpusee pins netiek pievilkts ne pie zemes ne pie baroshanas caur pretestiibu. Vai arii kaareiz pins pashaa chipaa ir sakonfigureets lai pievelkas uz baroshanu un tu vinjam padod iekshaa baroshanas spriegumu kas protams neko nemaina jo vinsh jau taadaa liimenii ir.

Starp citu ja tu pogu vai sleedzi pa taisno sleegsi klaat pinam uz kuru tev reakcija notiek interruptaa tad tev papildus vajadzees arii kaadu "de-bounce" (kaut vai prastaako variantu ar kondensatoru ja kontroliera ieejai ir shmita trigeris, vai arii kaadu "softisku" risinaajumu kas paseko liidzi lai sleedzha drebelis netiek ignoreets), preteejaa gadiijumaa tev interrupts noraustiisies uz katru spiedienu ne vienu vien reizi deelj pogas/sleedzha kontaktu leekaashanas.

----------


## kvaris

Sveiki!

Es caur pretestību INT2 kāju pievilku pie zemes, tagad iet, ka prieks!  ::   ::

----------

