|
|
Elektronika.lt portalo forumas
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 2024 11 14, 07:10. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Interuptai
|
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
|
|
|
Puslapis 1 iš 4 Pereiti prie 1, 2, 3, 4 Toliau |
|
|
Interuptai |
Parašytas: 2006 06 20, 21:36 |
|
|
|
Norėčiau su AVR padaryti taip, kad paspaudus mygtuką pradėtu vykti kita programa (pvz pradėtų kitaip plykčioti šviesos diodai). Kai pabandžiau tai padaryti su ciklu, tai man kaip ir viskas veikė, bet pats blykčiojimas neveikė, nes išėjo ciklas cikle. Galvoju gal man panaudot interuptus (pertrauktys)? Kaip suprantu, pertrauktim galima panaudoti tik 16 ir 17 ATmegos16 kojas? Gal yra kitas būdas man visą tai padaryti, nenaudojant pertraukčių? |
|
|
|
|
|
Interuptai |
Parašytas: 2006 06 20, 23:18 |
|
|
|
tai zodziu pakopink savo programa arba jos dali ir tada ziuresim ka ten blogai darai. Diodu mirkciojimui interuptu praktiskai nereikia. |
|
|
|
|
|
Interuptai |
Parašytas: 2006 06 21, 11:40 |
|
|
|
mano galva interuptai nors ir nebutini bet geras tonas. o siaip galima tiesiog portus tikrint. ir bounce'inima sutvarkyt.
dar karta paskaicius problema jei norima is vienos programos persokt i kita, tai tikrai interuptai geriausia iseitis. |
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 10, 17:02 |
|
|
|
Būtų gerai, jei kas nors parodytų kokį pavyzdėlį su interuptais. Negaliu aš jau be jų Naudoju Win AVR. Interuptai bus naudojami ne šviesos diodams perjunginėti... |
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 10, 23:49 |
|
|
|
prasom:
Kodas: |
#include <avr\io.h>
#include <avr\iom16.h>
#include <avr\interrupt.h>
#define outp(a, b) b = a
uint8_t led;
ISR(INT0_vect) { /* signal handler for external interrupt int0 */
led = 0x01;
}
ISR(INT1_vect) { /* signal handler for external interrupt int1 */
led = 0x00;
}
int main(void) {
outp(0x01, DDRB); /* use PortB for output (LED) */
outp(0x00, DDRD); /* use PortD for input (switches) */
outp((1<<INT0)|(1<<INT1), GICR); // enable external int0, int1
sei(); /* enable interrupts */
led = 0x01;
for (;;) {
outp(led, PORTB);
} /* loop forever */
}
|
|
|
Paskutinį kartą redagavo Dreifas, 2006 10 11, 09:35. Redaguota 1 kartą |
|
|
|
|
Interuptai |
Parašytas: 2006 10 11, 07:19 |
|
|
|
Šitą jau bandžiau, bet man niekaip nepavyko sukompiliuoti Atmegai16. |
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 11, 09:25 |
|
|
|
Pataisiau ana teksta. Vietoj GIMSK reikai naudoti GICR registra. ir includinau atmega16.
Pabandziau - kompiliuojasi |
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 11, 18:33 |
|
|
|
Nelabai suprantu, kaip tas kodas veikia. Gerai būtų, jei pakomentuotumėt lietuviškai Sukompiliavau, įrašiau, tai ant PORTB pirmos kojos LEDas šviečia ir viskas. Nereguoja į nieka... |
|
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 11, 20:38 |
|
|
|
Na nezinau. Kodas paprastas. jeigu anglu bent kiek kerti, tai viskas graziai aprasyta AVRLIBC dokumentacijoj. Isverciau komentarus, gal bus aiskiau kas. Esme tame kad chemoj turi prijungti mygtukus prie INT0 ir INT1 isvadu i zeme. Pasizaisk su AVR studio arba su VMLAB simuliatoriumi.
Kodas: |
#include <avr\io.h>
#include <avr\iom16.h>
#include <avr\interrupt.h>
#define outp(a, b) b = a
uint8_t led;
/* paprograme apdorojanti pertraukimus
kai nuspaudziamas mygtukas esantis ant INT0 kojos
tada led reiksmei priskiriama 0x01 reiksme - LED ijungiamas */
ISR(INT0_vect) {
led = 0x01;
}
/* paprograme apdorojanti pertraukimus
kai nuspaudziamas mygtukas esantis ant INT1 kojos
tada led reiksmei priskiriama 0x00 reiksme - LED isjungiamas */
ISR(INT1_vect) { /* signal handler for external interrupt int1 */
led = 0x00;
}
int main(void) {
/* PortB nustatomas isvedimui (LED) */
outp(0x01, DDRB);
/* PortD nustatomas ivedimui (mygtukams) */
outp(0x00, DDRD);
/* ijungiam int0, int1 pertraukimus*/
outp((1<<INT0)|(1<<INT1), GICR);
/* ijungiam gloablini pertraukimu palaikyma */
sei();
/**pradine LED reiksme - ijungtas/
led = 0x01;
for (;;) {
/* amzinas ciklas. led reiksme keiciama pertraukimo paprogramese */
outp(led, PORTB);
}
}
|
|
|
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 12, 09:30 |
|
|
|
Komentarų prašiau, nes man kažko šis kodas nefunkcionuoja. Kaip suprantu, INT0 yra 16 koja, o INT1 yra 17 koja. Padavus žemę (-) į vieną iš šių kojų, niekas nepasikeičia. LEDas ant PORTB, kaip švietė, taip šviečia. Nesuprantu, kodėl nereaguoja. Kur gali būti problema? |
|
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 12, 10:58 |
|
|
|
Kadangi pradejau tau padeti tai ir uzbaigsiu zodziu paleidau as pas saves ant simuliatoriaus ir priverciau veikti. Ten kode paziurek as injungiau vidinius pullup rezistorius (outp(0xFF, PORTD);). Dabar bandyk tikrai veiks.
Kodas: |
#include <avr\io.h>
#include <avr\iom16.h>
#include <avr\interrupt.h>
#define outp(a, b) b = a
uint8_t led;
/* paprograme apdorojanti pertraukimus
kai nuspaudziamas mygtukas esantis ant INT0 kojos
tada led reiksmei priskiriama 0x01 reiksme - LED ijungiamas */
ISR(INT0_vect) {
led = 0x01;
}
/* paprograme apdorojanti pertraukimus
kai nuspaudziamas mygtukas esantis ant INT1 kojos
tada led reiksmei priskiriama 0x00 reiksme - LED isjungiamas */
ISR(INT1_vect) { /* signal handler for external interrupt int1 */
led = 0x00;
}
int main(void) {
/* PortB nustatomas isvedimui (LED) */
outp(0x01, DDRB);
/* PortD nustatomas ivedimui (mygtukams) */
outp(0x00, DDRD);
/*!!!Nustatom vidini pullup!!!*/
outp(0xFF, PORTD);
/* ijungiam int0, int1 pertraukimus*/
outp((1<<INT0)|(1<<INT1), GICR);
/* ijungiam gloablini pertraukimu palaikyma */
sei();
/**pradine LED reiksme - ijungtas*/
led = 0x00;
for (;;) {
/* amzinas ciklas. led reiksme keiciama pertraukimo paprogramese */
outp(led, PORTB);
}
}
|
|
|
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 12, 14:43 |
|
|
|
Sukompiliavau ir įrašiau, bet nereaguoja į nieką. Nesuprantu |
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 12, 14:54 |
|
|
|
na man ant tokios schemos veikia.
|
|
|
|
|
|
Interuptai |
Parašytas: 2006 10 12, 18:49 |
|
|
|
Ačiū, veikia. Nors netaip kaip turėtų |
|
|
|
|
|
Interuptai |
Parašytas: 2006 12 17, 20:55 |
|
|
|
Ar gali interuptas įvykti be išorinnių pokyčių portuose, o įvykus kokiem veiksniam. Pvz pasiekus tam tikrą kintamojo reikšmę? |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods |
|
|
|