igrat cijeli dan :)
- Vote on answer
- posted
prije 9 godina
igrat cijeli dan :)
Koju komunikaciju koristi barometar? I2C?
-- Let There Be Light Custom LED driveri prema specifikacijama
Chupo
Da. Usput, kolika je brzina samplovanja analognog (ili digitalnog) ulaza na ard
u EEPROM i par if petlji.
Preko zvucne si komunicirao s I2C senzorom?? Ili spominjes neki drugi sklop gdje si zvucnu koristio ko A/D pretvarac?
Frekvencija sample-iranja se odnosi na broj kompletnih uzoraka u sekundi a ti spominjes trajanje 'jedinice' - jednog bita u paketu podataka koji su rezultat jednog sampleiranja.
Maximalna frekvencija sample-iranja pise u datasheet-u svakog mikrokontrolera - za ATMega8 je ona npr. 15 kSPS tj. 15 hiljada sampleova u sekundi (kilo samples per second).
Medjutim tebe ne zanima podatak o maximalnoj frekvenciji sample-iranja nego te zanima maximalni bitrate koji se jos moze koristiti u I2C komunikaciji.
Na ovom linku:
ti je rjesenje za Arduino.
Ovdje:
mozes vidjeti da maximalni I2C bitrate ovisi o jos nekim stvarima ali da se koristenjem bit-banging rutine pisane u assembleru mogu postici jos duplo vece brzine nego koristenjem ugradjenom I2C hardware-a.
Tebi znaci maximalna frekvencija sample-iranja ne znaci nista jer je meteoroloskoj stanici dosta da ocita jedan podatak svakih nekoliko sekunda (li se mozda varam?).
Sta tocno podrazumijevas pod: 'Vec sad vidim da mi arduino propusta podatke'? Zelis reci da I2C komunikacija uopce ne radi?
-- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
Uf vidim da sam sve zbrljao zajedno u hrpu nerazumljivih gluposti.
aja radi. Spojio sam ju kablom u mikrofon na kompjuteru i program na kompju
d 52 bita.
A sta generira taj signal? U stanici je isto neki mikrokontroler. Imas source od tog programa?
Znaci ti si, da bi procitao informaciju koju meteoroloska stanica salje u digitalnom obliku, koristio mikrokontrolerovu A/D pretvorbu? To se ne radi tako nego se takvi podaci (koji su digitalni) citaju uzastopnim ocitavanjem stanja (high/low) i tu ne treba A/D pretvarac.
Kopiraj ovdje:
dio programa pomocu kojega si pokusao ocitati informaciju koju salje meteoroloska stanica.
Kako je kodirana informacija u tih 52 bita? Tih 52 bita je definirano s bitrate-om i nakon detektiranja prve promjene (ili sekvence koja oznacava START) moras u pelji ocitavati stanje na ulazu u trenucima cim je moguce blize sredini svakog impulsa.
-- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
ke.
radi preko kompjutera. Ovako izgleda jedan paket
Mislio sam da je mozda neki izgradjen uredjaj.
Cini se vrlo jednostavno (ako znas interpretirati podatke) - koliko vidim (s obzirom da kazes da su na pocetku 4 nule) su nule kodirane kao 'dugi low pa dugi high' a jedinice kao 'kratki low pa dugi high'. Nije to problem dekodirati, ne bi bio problem ni da je signal par 100 kHz.
Kazes da je trajanje kratkog impulsa unutar 'jedinice' 500 us? Znaci da bi onda trebalo moci detektirati pravokutni signal od samo 2 kHz a to nije problem. Ako koristis interni oscilator pa mikrokontroler stavis na samo 4 MHz onda se u vremenu od 500 us izvrsi 2000 instrukcija a to je daleko vise nego je dovoljno da vise puta u toku 'kratkog impulsa' ocitas stanje i obavis sve sta treba da bi detektirao trenutni bit kojeg stanica salje. A da ne govorim ako stavis kristal pa frekvenciju mikrokontrolera dignes na 12 ili 16 MHz.
-- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
Evo Atmelov dokument gdje je opisano kako se to radi:
a ovdje imas i primjer gotovog programa:
-- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
Javi ako bude kakvih problema.
-- Let There Be Light Custom LED driveri prema specifikacijama
Chupo
o.
Hehe :-))
-- Let There Be Light Custom LED driveri prema specifikacijama
Chupo
cap3 = ICR3L; cap3 |= (unsigned int)ICR3H
Timer se vrti non-stop, nikada se ne zaustavlja niti se restira nego se vrti ukrug (0xffff + 0x0001 = 0x0000). U ovom dijelu programa kojeg si ovdje kopirao se nakon detekcije rastuceg brida sprema ranije procitana vrijednost timer-a i s TCCR3B &= ~BIT(6); se podesava da se sljedeci interrupt generira na padajucem bridu signala a taj se dogadjaj obradjuje u:
else //else falling edge { width = rising - prev3; period = cap3 - prev3; prev3 = cap3; TCCR3B |= BIT(6); //select rising edge trigger }
Tu se na osnovu prethodno spremljenog timestamp-a od rastuceg brida i prethodno spremljenog timestamp-a od padajuceg brida racuna sirina impulsa, a na osnovu vrijednosti procitane u ovom prolazu i ranije spremljenog timestamp-a se racuna ukupno trajanje periode pa se nakon toga s TCCR3B |= BIT(6); podesava da se sljedeci interrupt ponvo generira kod rastuceg brida.
Zbog cega nije potrebno resetirati il izaustavljati timer mozes najbolje shvatiti ako zamislis da ima samo 8 bitova pa da moze imati frijednosti samo od 0 do 255 (0x00 - 0xff). Recimo da se je capture interrupt generirao dok je timer imao vrijednosti 254 pa se je sljedeci put generirao nakon 4 ciklusa povecavanja timera. Nakon 4 ciklusa ce timer imati vrijednost 2 (254, 255, 0, 1, 2). Vrijeme izmedju ta dva dogadjaja s timestamp-ovima 254 i 002 ce se racunati kao:
002 - 254To ce se izracunati tako da se broju 2 doda negativna vrijednst od broja 254 koja ce se dobiti s dvojnim komplementrom a to je:
254 = 11111110 cpl(254) = 00000001 dvojni_cpl(254) = 00000001 + 1 = 00000010 = 2Prema tome, trajanje ce se izracunati kao 2 + 2 = 4 a to je upravo ispravna vrijednost. Na istom principu radi i izracunavanje trajanja kad je timer 16 bitni a ne 8 bitni registar. Jedino na sta treba obratiti paznju je da vrijeme izmedju 2 generirana interrupt-a mora biti manje od (2 na n-tu) ciklusa timera, gdje je n broj bitova za spremanje vrijednosti do koje broji taj timer. S obzirom da timer za input capture ima 16 bitova, znaci da se brzina brojenja mora podesiti tako da se za vrijeme jedne periode impulsa kojeg mjerimo, taj timer nikada ne poveca 65536 puta.
-- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
U ovom slucaju ne treba jer ocitavanje i spremanje podataka koje salje stanica nece zauzimati niti par postotaka processorskog vremena.
-- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
On Saturday, March 14, 2015 at 11:11:17 AM UTC+1, vaso wrote:
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.