-
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
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
- wzmacniacz mocy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
- Hiszpania bez pradu
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
Najnowsze wątki
- 2025-06-02 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-06-01 jaki kretyn boziu uśpić :)
- 2025-06-01 Zdolny to legalnego prowadzenia samochodu w Anglii wykluczony z komisji wyborczej w Białymstoku
- 2025-06-01 nie ustąpiła moturowi?
- 2025-05-31 Skoro jest tak dobrze i TANIO to dlaczego jeszcze nie jeździmy na takich akumulatorach?
- 2025-05-31 Warszawa => IT Data Analyst (obszar Power BI) <=
- 2025-05-31 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-05-31 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-05-31 Gdańsk => PHP Developer <=
- 2025-05-31 Lublin => Delphi Programmer <=
- 2025-05-31 co to za obcęgi? [OT]
- 2025-05-30 Rondo :)
- 2025-05-30 Warszawa => Senior Account Manager <=
- 2025-05-30 Warszawa => Senior C++ Developer (analiza numeryczna i modelowanie) <=
- 2025-05-30 Gdańsk => Team Lead Data Engineer (Snowflake) <=