-
Received: by 10.52.70.173 with SMTP id n13mr1213788vdu.15.1349369400013; Thu, 04 Oct
2012 09:50:00 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.70.173 with SMTP id n13mr1213788vdu.15.1349369400013; Thu, 04 Oct
2012 09:50:00 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin2!goblin.stu.neva.ru!xlned.com!feeder7.xlned.com!news2.euro.net!
209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!216.196.98.1
42.MISMATCH!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.gi
ganews.com!l8no24712446qao.0!news-out.google.com!e10ni165558057qan.0!nntp.googl
e.com!l8no25223103qao.0!postnews.google.com!p5g2000vbl.googlegroups.com!not-for
-mail
Newsgroups: pl.misc.elektronika
Date: Thu, 4 Oct 2012 09:49:59 -0700 (PDT)
Complaints-To: g...@g...com
Injection-Info: p5g2000vbl.googlegroups.com; posting-host=80.109.193.38;
posting-account=LtRNCAoAAAACVwjGJC66ygSl50zdeDtv
NNTP-Posting-Host: 80.109.193.38
References: <506d9da7$0$26696$65785112@news.neostrada.pl>
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET
CLR 3.0.30729; Media Center PC 6.0; .NET4.0C),gzip(gfe)
Message-ID: <5...@p...googlegroups.com>
Subject: Re: WinAVR, jak zmienić funkcję obsługi przerwania w trakcie wykonywania
programu
From: Marcin <m...@o...pl>
Injection-Date: Thu, 04 Oct 2012 16:50:00 +0000
Content-Type: text/plain; charset=ISO-8859-1
Lines: 92
Xref: news-archive.icm.edu.pl pl.misc.elektronika:636191
[ ukryj nagłówki ]Witam,
do zmiany "w locie" cu wykonuje sie w przerwaniu dobrze sie
wykorzystuje wskaznik do funkcji.
Zadeklaruj sobie zmienna typu wskaznik do funkcji w pliku, gdzie masz
obsluge przerwania . Dodatkowo, w tym samym pliku stworz funkcje
SetIrqHandler(), ktorej parameterm jest wskaznik na funkcje.
W samym przerwaniu wywolujesz funkcje przez jej wskaznik.
na szybko cos podobnego do:
static void(*pIrqHandler)(void);
/** @file main.c */
// zmienna globalna dla tego pliku, niedostpena z innych modulow
static void (*pIrqHandler)(void);
// funkcja do inicjalizacji wskaznika do funkcji, exportowana w irq.h
void SetIrqHandler(void( *pNewHandler)(void))
{
pIrqHandler = pNewHandler;
}
/**
to wlasciwa funkcja przerwania SIGNAL (SIG_OVERFLOW1)
ale nie mam WinAvr zeby calosc kompilowac, testowalam
poprawnosc skladni na Yagarto
*/
//SIGNAL (SIG_OVERFLOW1)
void Doirq(void)
{
pIrqHandler();
}
/****************************/
int EnableIrq()
{
return 0;
}
int DisableIrq()
{
return 0;
}
void f1(void)
{
// zrob cos
}
void f2(void)
{
// zrob co innego
}
void main1 (void)
{
StandardowaInicjalizacja();
SetIrqHandler(f1);
EnableIrq();
while(1)
{
// zrob co trzeba
// a jak dojdziesz ze irq ma robic co innego to:
// to tylko do testow, normalnie funkcja wywolana przez
hardware irq
Doirq();
DisableIrq();
SetIrqHandler(f1);
EnableIrg();
// to tylko do testow, normalnie funkcja wywolana przez
hardware irq
Doirq();
// kontynuuj z main
}
}
mankament jaki widze, to to ze obsluga przerwania wydluzy sie o
wywolanie kolejnej funkcji oraz odlozy troche na stos.
Ogowlnie, wskazniki do funkcji to bardzo uzyteczna rzecz, np. tablica
takich wskaznikow zastepuje swietnie skomplikowane if czy switch no i
mozna zmieniac je podczas dzialania programu
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=