AVR - deklaracia ISR v inom subore

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 09:00

Zdravim,
AVRStudio 6.2, Atmega8

Chcem presunut deklaraciu ISR (TIMER0_OVF_vect) z main.c do ineho ceckoveho suboru. Akonahle to urobim, ISR prestane fungovat.
Nastavujem v nom len jeden flag a main-e vykonam nejaku akciu a zhodim ho.
Kompilator po presune ISR nevyhlasi ziahnu chybu ani warning. Treba nieco specialne nastavit ? Ide to vobec ?
Diky
0

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 988
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa budvar10 » 20 Dec 2017, 09:18

Určite to ide, ten súbor musí byť súčasťou projektu.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 09:51

Samozrejme ze subor je sucastou projektu. Len ked ho presuniem, tak bohuzial flag zostava stale na nule. Tak ako ho zadeklarujem na zaciatku.
0

ado130
Okoloidúci
Okoloidúci
Príspevky: 19
Dátum registrácie: 28 Okt 2010, 00:00

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa ado130 » 20 Dec 2017, 10:57

Neviem, či to môže súvisieť, každopádne je daný flag deklarovaný ako volatile?
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 10:58

jasne !! To su veci , ktore pouzivam davno. Bez toho by mi to neslo ani v main-e.
mam aj includy na io.h a interrupt.h a nic.

Skusim este vypnut optimalizaciu.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 17:34

Tak nepomohlo ani vypnutie optimalizacii. Nemate niekto nejaky napad ?
Diky
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2572
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa maskrtnik01 » 20 Dec 2017, 18:38

Ako máte tú premennú, ktorá je zdieľaná medzi viacerými súbormi, deklarovanú? Je možné, že proste v pamäti existujú dve tieto premenné, a preto sa dáta neprenášajú?
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 18:57

mam main.c. V nom include timer.h. V timer.h je deklarovana premenna doDigit ako volatile static unsigned char. Dalej mam timer.c kde je include na timer.h. Dalej tu chcem mat ISR na timer overflow a tam to konci :-)
Ked mam ISR v main.c tak je vsetko OK
0

martin knocik
Ultimate člen
Ultimate člen
Príspevky: 1639
Dátum registrácie: 23 Jan 2008, 00:00
Bydlisko: Trenčianska Turná
Vek: 33
Kontaktovať používateľa:

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa martin knocik » 20 Dec 2017, 19:05

Pravdupovediac, ked som programoval atmegy, neodarilo sa mi dostať ISR() do ineho suboru ako main.c tak aby fungoval. Vľetky normalne funkcie a premenné sa dali presunuť mino main.c (nezabudnuť na klučove slovo extern) ISR nie je štandardna súčasť C jazyka, tal to asi zavisi od kompilatora.

Napr na texas procakoch mi finguje mam prerušenie mimo main.c. Napr v súbore komunikacia.h si deklarujem

Kód: Vybrať všetko

extern __interrupt void i2c_int1a_isr(void); 
v komunikacia.c si definujem celu rutinu prerusenia ale už bez extern klúčového slova a následne includnem komunikacia.h do main.c
0
http://mkbci.com

FEL UNIZA 2015, Ing.

ľudstvo je vírus ktorý napadol Zem

nerobme si ťažkú hlavu z debilov čo nám ani po členky nesiahajú, buďme radi že my dačo dokážeme a smejme sa im akí sú sprostí

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 19:12

Napriklad v c++ sa mi podarilo dat ISR do objektu. Mozno podobne by to islo aj v c. Pozriem ten c++ kod. Bolo to uz davnejsie
0

vega33
Okoloidúci
Okoloidúci
Príspevky: 38
Dátum registrácie: 05 Dec 2013, 21:38
Bydlisko: Pata (pri Seredi)

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa vega33 » 20 Dec 2017, 20:01

Bezne pouzivam ISR v inom subore a nemal som ziadny problem......podla toho co pises, by to malo byt ok. Este je mozne,ze z nejakeho ineho dovodu sa prerusenie nevykona, ale ISR v inom subore bez problemov funguje.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 20 Dec 2017, 21:33

Tiez sa mi to zda divne. Pouzival som usart zo zawinovej knizky o AVR a tam je ties ISR v inom subore ako main a ide to. Skusim vutvorit novy projekt iba s tymto a postupne pridavat funkcie. Uvidim co mi to stopne.
0

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa OM0XA » 21 Dec 2017, 09:38

skus projekt iba zlinkovat a pozri co sa stane, ci to bude v poriadku. Ak tam nebude ziaden zadrhel, tak by to mal aj kompilator skompilovat bez problemov.
Nepoznam sice avr-studio, nepouzivam to, ale snad sa to da.. :-)
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 21 Dec 2017, 10:32

Pozriem sa na to podvecer. Diky !!
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa xmilos » 21 Dec 2017, 10:57

Prave som to odskusal, ISR() tamn da, aj ked je v inom subore.
ISR tam neda, ked v "podsubore" nemas #include <interrupt.h>
Mrkni do *.lss , najdes odpoved a navod ako slusne pisat kod.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 21 Dec 2017, 11:01

interrupt.h mam pre istotu aj v main aj vo vedlajsom subore. Na tie lss kuknem.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: AVR - deklaracia ISR v inom subore

Príspevok od používateľa dan21 » 21 Dec 2017, 15:29

Takze skusal som program zo zawinovej knizky (str.20, priklad 1.) . Vsetko v jednom subore - slape to OK.
Presunul som deklaraciu pocitadla i do test.h a v test.c mam obsluhu ISR. Vsetko slape OK.

Takze problem bude v povodnom programe. Skusim postupne pridavat jednotlive funkcie a uvidim co mi to tam robi paseku !
0

Napísať odpoveď