 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Sre Jul 05, 2006 7:52 am Naslov sporočila: 'Počasnost' EXT interrupta |
|
|
Tile PICi so me začeli malce zaj****. Je to normalno, da se zunanji interrupt proži šele po 20-50us pri 8MHz clocku? Gre za 12F serijo (12F683).
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
micabauc Član


Pridružen-a: Tor 03 Jun 2003 7:12 Prispevkov: 177 Aktiv.: 0.75 Kraj: Celje
|
Objavljeno: Sre Jul 05, 2006 9:50 pm Naslov sporočila: |
|
|
Lahko, če imaš v programu izključene interrupte v kakšni rutini. Ali pa, če si že v interrupt rutini in dokler se ne izvede, pač ni nove prekinitve.
|
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Sre Jul 05, 2006 10:36 pm Naslov sporočila: |
|
|
Saj ravno to je. Programa v glavni zanki ni (samo zanka: goto zanka), koda v interruptu se pa izvede po tako dolgem času...
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Jul 06, 2006 9:29 am Naslov sporočila: |
|
|
Po cem pa sklepas, da traja tako dolgo do interrupta ? Sprasujem zato, ker imas najbrz na voljo osciloskop/analizator in lahko objavis prikaz clocka, eksternega impulza in spremembe stanja, s katero opazujes interrupt. Morda bi bila napaka razvida iz tega (napacno delovanje clocka, neprimerna oblika impulza / neustrezen pull-up, itd.).
|
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Čet Jul 06, 2006 10:32 am Naslov sporočila: |
|
|
20 us je zelo kratek čas. Kako ugotoviš, da gre za zamudo take dolžine?
Jur
|
|
Nazaj na vrh |
|
 |
oversc0re Član

Pridružen-a: Tor 13 Sep 2005 15:20 Prispevkov: 460 Aktiv.: 1.94 Kraj: Radomlje
|
Objavljeno: Čet Jul 06, 2006 10:34 am Naslov sporočila: |
|
|
Meni se to niti ne zdi tako veliko...
S pici se sicer že dolgo ne ukvarjam, ampak v datasheetu piše: Internal instruction cycle clock (FOSC/4)
Pri clocku 8Mhz, je to 0.5us. Čip naj bi bil single instruction cycle razen branchev, kar pomeni, da v 20us naredi 40 inštrukcij. Če računaš, da nekaj časa preteče za detekcijo interrupta, nekaj za dokončanje trenutne inštrukcije (ok, to je drobiž), potem pa kar nekaj za pospravljanje registrov na stack in pa branch na subrutino in potem moraš še nastavit kakšen port za detekcijo interrupta, je to hitro nekaj 10us.
Lp, M@ic
_________________ The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992) |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jul 06, 2006 11:43 am Naslov sporočila: |
|
|
Za opazovanje tega 'pojava' sem uporabil borisz-jev USB osciloskop - logični analizator. Problem je, da želim s PICem komunicirat pri hitrosti tam nekje 30kHz (po svojem protokolu) in moram zaznavati pulze čim prej. Zdaj pa se mi dogaja, da PIC zažene prekinitev in še ne konča, ko pride že naslednji pulz, ki ga pa izpusti. Stvar sem delno rešil tako, da v zanki enostavno čakam na pulz in potem delam naprej, a bi mi s prekinitvami bolj ustrezalo...
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Čet Jul 06, 2006 11:46 am Naslov sporočila: |
|
|
Samo ideja, kaj pa če bi protokol malček prilagodil in sicer startni bit malo daljšega trajanja, potem pa nadaljuješ 30kHz ....
|
|
Nazaj na vrh |
|
 |
oversc0re Član

Pridružen-a: Tor 13 Sep 2005 15:20 Prispevkov: 460 Aktiv.: 1.94 Kraj: Radomlje
|
Objavljeno: Čet Jul 06, 2006 12:07 pm Naslov sporočila: |
|
|
NeoTO je napisal/a: |
Za opazovanje tega 'pojava' sem uporabil borisz-jev USB osciloskop - logični analizator. Problem je, da želim s PICem komunicirat pri hitrosti tam nekje 30kHz (po svojem protokolu) in moram zaznavati pulze čim prej. Zdaj pa se mi dogaja, da PIC zažene prekinitev in še ne konča, ko pride že naslednji pulz, ki ga pa izpusti. Stvar sem delno rešil tako, da v zanki enostavno čakam na pulz in potem delam naprej, a bi mi s prekinitvami bolj ustrezalo... |
Imel sem podobne težave z ARMom na 60MHz, kjer sem rabil hitrost 1Mb/s. Analiza asemblerske kode je pokazala, da prevajalnik dela precej neumno kodo. Ko sem kritične procedure napisal v assemblerju se je hitrost skoraj potrojila. V tvojem primeru sicer nimaš prav dosti rezerve, a kakšno mikrosekundo, bi z asemblersko kodo sigurno prihranil.
_________________ The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992) |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Čet Jul 06, 2006 12:14 pm Naslov sporočila: |
|
|
Kako pa veš, da ni zakasnitev od usb osciloskopa?
Jur
|
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jul 06, 2006 12:14 pm Naslov sporočila: |
|
|
bungee je napisal/a: |
Samo ideja, kaj pa če bi protokol malček prilagodil in sicer startni bit malo daljšega trajanja, potem pa nadaljuješ 30kHz .... |
V bistvu gre za takšno zadevo: Primarno navitje transformatorja s feritnim jedrom vzbujam s PIC + MOSFET kombinacijo, napetost na sekundarju pa usmerim ter uporabim za napajanje vezja. Ker potrebujem tudi komunikacijo, sem prišel na idejo, da uporabim kar prenos preko transformatorja in čisto enostavno frekvenčno modulacijo - 1 dolgo trajanje med impulzi, 0 - kratek čas. Ti impulzi so kratki, da ne obremenjujem MOSFETa in tuljave s kratkim stikom po prehodnem pojavu in jih moram zaznati na sekundarni strani. Trenutno stvar deluje, a bom moral uporabiti dodatni mikrokontroler, ki bo delal samo dekodiranje teh impulzev...
ps: tako kompliciram zato, ker se pri meni sekundarno navitje s polovico feritnega jerdra vrti s 1000-2000 obr/min....
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jul 06, 2006 12:16 pm Naslov sporočila: |
|
|
jur je napisal/a: |
Kako pa veš, da ni zakasnitev od usb osciloskopa?
Jur |
Če le-ta sampla s frekvenco 1 MHz, potem dvomim, da je zaradi njega...
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jul 06, 2006 12:17 pm Naslov sporočila: |
|
|
oversc0re je napisal/a: |
NeoTO je napisal/a: |
Za opazovanje tega 'pojava' sem uporabil borisz-jev USB osciloskop - logični analizator. Problem je, da želim s PICem komunicirat pri hitrosti tam nekje 30kHz (po svojem protokolu) in moram zaznavati pulze čim prej. Zdaj pa se mi dogaja, da PIC zažene prekinitev in še ne konča, ko pride že naslednji pulz, ki ga pa izpusti. Stvar sem delno rešil tako, da v zanki enostavno čakam na pulz in potem delam naprej, a bi mi s prekinitvami bolj ustrezalo... |
Imel sem podobne težave z ARMom na 60MHz, kjer sem rabil hitrost 1Mb/s. Analiza asemblerske kode je pokazala, da prevajalnik dela precej neumno kodo. Ko sem kritične procedure napisal v assemblerju se je hitrost skoraj potrojila. V tvojem primeru sicer nimaš prav dosti rezerve, a kakšno mikrosekundo, bi z asemblersko kodo sigurno prihranil. |
Po mojem bo tudi nekaj takega. Pišem v C-ju, pa še zelo neCejevsko arhitekturo PICev uporabljam... Bom poskusil tudi sam v assemblerju to napisat (ko bo čas )
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
jjakob Član

Pridružen-a: Pet 19 Nov 2004 14:12 Prispevkov: 1348 Aktiv.: 5.69
|
Objavljeno: Čet Jul 06, 2006 12:22 pm Naslov sporočila: |
|
|
NeoTO je napisal/a: |
ker se pri meni sekundarno navitje s polovico feritnega jerdra vrti s 1000-2000 obr/min....  |
Hmmm..... Propeler ura?
|
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Čet Jul 06, 2006 12:34 pm Naslov sporočila: |
|
|
Microchipov priročnik: PIC micro MID-RANGE MCU FAMILY ima na strani 8-10 sliko: Figure 8-2: INT Pin and Other External Interrupt Timing. Okoli slike je v tekstu povedano vse. Interrupt latency = 3-4 instruction cycle times.
Priložena je slika (brez teksta).
Jur
Opis: |
|
 Download |
Ime datoteke: |
int.JPG |
Velikost datoteke: |
67.44 KB |
Downloadano: |
27 krat |
Nazadnje urejal/a jur Čet Jul 06, 2006 12:38 pm; skupaj popravljeno 4 krat |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|