-
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
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
- Puszka w ziemię
- T-1000 was here
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
Najnowsze wątki
- 2025-02-17 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-02-17 Chrzanów => Programista NodeJS <=
- 2025-02-17 Warszawa => Node.js / Fullstack Developer <=
- 2025-02-17 Białystok => System Architect (Java background) <=
- 2025-02-17 Białystok => Solution Architect (Java background) <=
- 2025-02-17 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2025-02-17 Gdańsk => PHP Developer <=
- 2025-02-17 Warszawa => Senior ASP.NET Developer <=
- 2025-02-17 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-17 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-02-17 Odśnieżanie samochodu
- 2025-02-17 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-17 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-17 Pompiarze...
- 2025-02-16 PV teraz