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


Pridružen-a: Ned 20 Jul 2008 1:00 Prispevkov: 588 Aktiv.: 2.86 Kraj: Koper
|
Objavljeno: Pon Mar 03, 2014 1:17 pm Naslov sporočila: |
|
|
veter je napisal/a: |
Hvala za izčrpen odgovor.
Temperatura:
Že sedaj ločim izpis na celi del in decimalni del, branje dallasovega temp. senzorja sem izvedel s pomočjo programa na forumu Bascom.
Linija ni predolga, ker vse skupaj razvijam na Mega Pin plošči, so senzorji kar tam priključeni ,neposredno na ploščo.
Sam vedno bolj sumim da je kriva prekinitev zaradi ure, medtem ko bere Dallasa.
Kaj lahko naredim v tem primeru?
Nobenega izhodišča pa nimam, kaj bi lahko bilo narobe pri izpisu dneva v tednu...
Hvala za vsa mnenja in nasvete. |
Princip delovanja dalasa je:
Pošlješ mu ukaz za čitanje senzorjev, dalas dokler ne opravi meritve drži 1wire linijo nizko
v glavni zanki kontroliraš 1wire vodilo, da postane visoko in prečitaš retultat iz dalasa
Vse tiste rutine v basic avr kakor tiste codevision avr so zanič saj uporabljajo delay na mesto, da bi uporabili zgoraj napisano. Res pa je, da se ne da drugače, če jih imaš parazitsko napajane ... |
|
Nazaj na vrh |
|
 |
protoncek Član

Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 42.79 Kraj: Mengeš
|
Objavljeno: Pon Mar 03, 2014 1:59 pm Naslov sporočila: |
|
|
No, jaz te stvari ne rešujem s pavzo, niti z branjem vodila, ampak preprosto tako, da vsakič najprej preberem DS, nato takoj spet pošljem ukaz za konverzijo. In ker berem recimo na 1s ali celo na 2 sek, ima DS ogromno časa, da naredi svoje. Edina finta pri tem sistemu je da je treba ob zagonu na začetku programa nekje poslati ukaz za konverzijo, potem pa izvesti začetne zadeve ( izpis LCD...), kar mora trajati najmanj pol sekunde. V skrajnem primeru je prvi rezultat temperature 85 stopinj. Ja, pa prikaz temperature zaostaja za "pravo" za tisto sekundo ali dve. Pa kaj...
glede branja: kaj pa če bi branje dallasa izvajal v prekinitvi? ali pa takrat, ko bereš onemogoči prekinitve, če niso kritične za delovanje kakšne ure... (disable interrupts, prebereš DS ter spet enable interrupts). |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
Objavljeno: Pon Mar 03, 2014 2:04 pm Naslov sporočila: |
|
|
Hmm, tole postaja komplicirano.
Si bom naredi len nov programček, ki bo samo meril čas, ter meril tri temeprature, tako kot v zgoraj opisanem primeru.
Bom videl, če se bo isto dogajalo.
Če bi prekinil timer med branjem Dallasa.
Bojim se da bo to vplivalo na točnost ure potem? |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
Objavljeno: Pon Mar 03, 2014 8:22 pm Naslov sporočila: |
|
|
Lep pozdrav!
Obogaten sem za novo spoznanje.
V programu sem diseblal TIMER, tako da ura nič več ne dela, samo merjenje temperature.
Po dveh urah tesitranja je zaslon OK.
Torej je kriv TIMER1.
Sedaj pa težava, kako narediti merjenje temperature in uro? Žal nimam možnosti za zunanji čip za merjenje časa... |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.71 Kraj: Kranj - struževo
|
Objavljeno: Pon Mar 03, 2014 8:33 pm Naslov sporočila: |
|
|
A mikro nima nobenega timerja več? samo enega? _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
Objavljeno: Pon Mar 03, 2014 8:43 pm Naslov sporočila: |
|
|
uC je Atmega32 in če sem prav prebral ima še TIMER0 in TIMER2, ki pa sta 8 bitna.
Ker nisem najbolj vešč v teh zadevah, bi prosi lza nasvet glede tega.
Sem izbral narobni TIMER morda? |
|
Nazaj na vrh |
|
 |
protoncek Član

Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 42.79 Kraj: Mengeš
|
Objavljeno: Pon Mar 03, 2014 8:50 pm Naslov sporočila: |
|
|
Ena izmed možnosti je da v prekinitveni rutini timerja (tam kjer šteješ uro) spotoma postaviš eno zastavico na ena, recimo "branjetemp=1". Potem v glavnem programu izvedeš branje dallasa samo pod pogojem ,da je ta "branjetemp" enaka ena , torej nekako v smislu:
Koda: |
if branjetemp=1 then
branjetemp=0
izvedeš branje dallasa
end if
|
Tako ti bo dallas vedno bral takoj po izhodu iz prekinitve, ne pa kadarkoli, posledično ne bo prihajalo do napak, seveda če imaš timer nastavljen na tako dolg čas, da med dvema prekinitvama to lahko izvede. |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
Objavljeno: Pon Mar 03, 2014 8:54 pm Naslov sporočila: |
|
|
Hvala za koristen namig.
Bom skušal narediti nekaj v tej smeri. |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5529 Aktiv.: 24.06 Kraj: Domzale
|
Objavljeno: Pon Mar 03, 2014 11:02 pm Naslov sporočila: |
|
|
veter je napisal/a: |
Torej je kriv TIMER1. |
Kriv je programer .
V interrupt rutine ne tlači same programske kode, ampak le postavljaj flage in nato kodo izvajaj v main rutini (da ti zadeva ne zastaja v interruptih in podira timingov).
LP, g _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
Objavljeno: Pon Mar 03, 2014 11:08 pm Naslov sporočila: |
|
|
Dober večer,
po dobrih dveh urah delovanja je zaslon še vedno tak kot mora biti, po zaslugi zgoraj omenjenega nasveta.
Iskrena hvala.
Upam, da bo tako tudi jutri zjutraj, bom pustil napravo delovati celo noč. |
|
Nazaj na vrh |
|
 |
KlemenTegel Član

Pridružen-a: Sre 26 Mar 2014 14:25 Prispevkov: 28 Aktiv.: 0.20
|
Objavljeno: Pet Apr 04, 2014 10:51 am Naslov sporočila: |
|
|
veter je napisal/a: |
Sam vedno bolj sumim da je kriva prekinitev zaradi ure, medtem ko bere Dallasa.
Kaj lahko naredim v tem primeru?
|
Živ!
Kako šteješ sekunde(milisekunde ali kaj drugega) v prekinitveni rutini za timer?
Koliko časa porabiš v prekinitvi(koliko ukazov in katere izvajaš)?
Izpis ure izvajaš v isti rutini kot ostali izpis na GLCD?
Spremenljivke, ki se spreminjajo v prekinitvah, izpisujejo pa v glavni zanki jaz ponavadi "buferiram", torej ne izpisujem tiste, ki jo posodablja prekinitev, ampak drugo, ki se posodobi na začetku rutine za izpis na GLCD..
Preizkusi, sporoči kako je šlo
L.P. _________________ L.P.
Klemen Tegel |
|
Nazaj na vrh |
|
 |
KlemenTegel Član

Pridružen-a: Sre 26 Mar 2014 14:25 Prispevkov: 28 Aktiv.: 0.20
|
Objavljeno: Pet Apr 04, 2014 10:52 am Naslov sporočila: |
|
|
Ha, nisem pogledal druge strani teme
L.P. _________________ L.P.
Klemen Tegel |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
Objavljeno: Sob Apr 12, 2014 7:34 pm Naslov sporočila: |
|
|
Pozdravljen!
V tem času sem prešel na Xmega, ki ima svojo uro, tako da mislim da bom to težavo s tem odpravil.
Vseeno veliko koristnih nasvetov, ki jih bom upošteval pri nadaljnem programiranju.
Hvala. |
|
Nazaj na vrh |
|
 |
KlemenTegel Član

Pridružen-a: Sre 26 Mar 2014 14:25 Prispevkov: 28 Aktiv.: 0.20
|
Objavljeno: Sob Apr 12, 2014 10:35 pm Naslov sporočila: |
|
|
Kateri programator pa uporabljaš za programiranje XMege? _________________ L.P.
Klemen Tegel |
|
Nazaj na vrh |
|
 |
veter Član

Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 138 Aktiv.: 0.58 Kraj: Bled
|
|
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: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|