ATmega128 ICR1 – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

ATmega128 ICR1 – Mikrokontroléry – Fórum – Programujte.comATmega128 ICR1 – Mikrokontroléry – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
GeorgeW0
Newbie
6. 8. 2012   #1
-
0
-

Dobry den. Potreboval bych poradit s capturingem vstupu PD4 ICR1 (Input Capture Register). Podle katalogu a informaci na netu jsem nastavil Timer1 a povolil preruseni pro capturing. Funguje to tak, ze kdyz prijde signal precte se hodnota timeru1 a nasledne se vymaze v obsluze preuseni. Tak mi to i "funguje".  Problem je v tom, ze se vobcas precte nejaky nesmysl a to bud 654500 a neco okolo toho nebo treba 4, 10, 15 a podobne. Na vstup PD4 krmim 555 dle: http://mcu.cz/news.php?… Puvodne jsem si myslel ze ta 555 ma nekde nejaky zakmit proto jsem tam dal i 74LS14 aby byli ty hrany "cisty" ale zmena zadna. Ted si nevim rady. Prikladam i hruby vypis jak to mam udelane. Pouzivam knihovny Pascal Stang. Nejsem profik, ale vobcas neco sesmolim :-DDDD

incializace:
// for 11,0592MHz crystal
// 0 = STOP (Timer not counting)
// 1 = CLOCK  tics= 11,0592MHz
// 2 = CLOCK/8  tics= 13,824MHz 
// 3 = CLOCK/64  tics= 172,8kHz 
// 4 = CLOCK/256 tics= 43200Hz 
// 5 = CLOCK/1024 tics= 10800Hz
// 6 = External Clock on T(x) pin (falling edge)
// 7 = External Clock on T(x) pin (rising edge)

timer1SetPrescaler(TIMER_CLK_DIV1);    
// timer1SetPrescaler(TIMER_CLK_DIV8);

timerAttach(TIMER1OVERFLOW_INT,serviceLocalTimer1);
timerAttach(TIMER1INPUTCAPTURE_INT, serviceLocalTimer1Capture);

sbi(TCCR1B,ICES1);   // v TCCR1B urcuje zda reakce na vzestupnou nebo sestupnou hranu ICR1
cbi(TIMSK,  OCIE1A); // Disable compare A
cbi(TIMSK,  OCIE1B); // Disable compare B
sbi(TIMSK, TICIE1);    // ENABLE Capture input PD4 Timer1 !!
sbi(TIMSK, TOIE1);     // ENABLE Interupt pri preteceni TIMERU 1 !!

void serviceLocalTimer1Capture (void)
{

cbi(TIMSK, TICIE1); // DISABLE Capture input PD4 Timer1 !!
captureTime = ICR1;

TCNT1 = 0;

sbi(TIMSK, TICIE1); // ENABLE Capture input PD4 Timer1 !!
TCNT1 = 0;

}

void serviceLocalTimer1 (void)
{
// nepouzito

}


Jednou za "cas" zobrazuji captureTime na LCD displeji .... vetsinou zobrazuje stejnou hodnotu ale obcas je tam totalni nesmysl i nekolikrat po sobe captureTime je u16.

Dekuji za nejaky podnet    

Nahlásit jako SPAM
IP: 90.177.83.–
Reklama
Reklama
KIIV+42
God of flame
6. 8. 2012   #2
-
0
-

muze to pretect, nebo nestihas vypsat hodnotu dostatecne rychle a treba v pulce tam padne nove mereni... moznosti je spousta

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hlucheucho+10
Posthunter
6. 8. 2012   #3
-
0
-

#1 GeorgeW
Pro čtení/zápis 16-bitových registrů se musí dodržovat procedura, která je v datasheetu popsána.
Pokud nekorektně obsluhuješ přerušení, může dojít k pozměnění dat pro LCD
Hrany z 555 bývají někdy "chlupatý". Pomůže malý kondenzátor připojený na jeho výstupu (do 100pF)
Pozor na kvalitu napájení 555 a procesoru, je nutné použít 100nF kondenzátory co nejblíže napájecích vývodů obou

Nahlásit jako SPAM
IP: 195.178.67.–
GeorgeW0
Newbie
6. 8. 2012   #4
-
0
-

Doplním, že tu 555 mam na univerzálním nepájivém polu. Mam tam i blokovani napajeni 555 primo na ni. Ještě jsem tam dal 33u kondenzátor. Nemam osciloskop takže nedovedu posoudit co z 555 "leze". Začínám se přiklánět k tomu, že to bude tim zbastlením a že si to na dlouhých přívodech občas zakmitá ... Dík za nasměrování. Aspon vim, že neni chyba v obsluze časovače :-D

Nahlásit jako SPAM
IP: 90.177.83.–
GeorgeW0
Newbie
6. 8. 2012   #5
-
0
-

RE: Pro čtení/zápis 16-bitových registrů se musí dodržovat procedura, která je v datasheetu popsána.
Ano to vím. Také je tam poznámka, že C kompilátor WinAVR to provede dobře ... snad ;-D

Nahlásit jako SPAM
IP: 90.177.83.–
hlucheucho+10
Posthunter
6. 8. 2012   #6
-
0
-

S WinAVR nemám zkušenosti, používám Atmel AVR Studio. Bez problémů jsem takto u ATmega 8 měřil periodu síte a přes compare registry řídil triak a MPX LED displeje.

Na to jak to dělá se můžeš podívat, bývá k dispozici výsledný kód v assembleru.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV+42
God of flame
6. 8. 2012   #7
-
0
-

urcite aspon zablokuj prepisovani promenne captureTime dokud neni spolehlive vypsana... pak teprve muzes resit dalsi

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
GeorgeW0
Newbie
6. 8. 2012   #8
-
0
-

Dobře, vyzkouším zablokovat captureTime. Zrovna dělám plošný spoj s tou 555 fotocestou, takže to bude trošku dýl trvat. WinAVR je GCC pro windovs. (Externí překladač místo toho Toolchainu) Starší verze AVR Studia to potřebavali pokud člověk chtěl tvořit v C a ne v asembleru. Myslím, že ten Toolchain je stejně nějaká jejich firemni verze GCC :-) Asembler moc nemusim ;-DDDD to uz když je moooc ouha .... Se spokojím bohatě s C na ty moje potřeby ..... Uvidim jestli to dělá ta 555 ...... Jinak diky za odpovědi :-)

Nahlásit jako SPAM
IP: 90.177.83.–
GeorgeW0
Newbie
7. 8. 2012   #9
-
0
-

   

No tak jsem si vyrobil tu desku s 555. Docela hodně se to zlepšilo, ale i při zablokování plnění captureTime to cca do 5 vteřin hodilo tak dva tři nesmysle. Navic jsem zjistil ze ta 555 je docela dobrej přijímač všeho možného. Po včerejším trápení jsem to vzdal a z programovatelného TTL oscilátoru IQEXO-3 ženu jeho signál do kondenzátoru 68-330p (prazdná - plna studna). Na druhé straně je usměrňovač - dvě diody 1n4148 pralelně kondenzátor 33u a 1k odpor - na něm je cca 200-600mV(68-330p) a po zesílení OZ LM358 to ženu do ATmegy 128 na AD převodník nastavený na 10b  a ten zobrazuji. Je to stabilní na poslední desetimístné číslo +-3. Zkoušel jsem kolem toho všechno možné a nedá se to jen tak rozhodit. Jen přímým dotykem na kondenzátor. To splňuje i odolnost proti rušení docela dobře. Takže nakonec jsem to vyřešil úplně jinak.   Vrtá mi hlavou jak to s tou 555 mohlo někomu chodit

Nahlásit jako SPAM
IP: 90.177.83.–
hlucheucho+10
Posthunter
7. 8. 2012   #10
-
0
-

nerozumím čeho se mělo dosáhnout. Asi by to chtělo vidět schéma a trochu více podrobností o cíli, kterého mělo být dosženo.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV+42
God of flame
7. 8. 2012   #11
-
0
-

to bude nejakej spatnej navrh s 555... chytat vsechno to nemuze pokud mas dobre zapojeny - vsechno chytaj ruzny nepripojeny vstupy a tak..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
GeorgeW0
Newbie
7. 8. 2012   #12
-
0
-

Schéma s 555 jsem dával zde: http://mcu.cz/news.php?… a dokonce jsem zkoušel i toto: http://njhurst.com/…watersensor/

Teď už je dosaženo cíle. Má to být kapacitní měření vody ve studni. Nakonec to mám takhle:

připojené na ADC0 a chodí to jak víno   Je to vykouslá část měření a už jsem to i ted prakticky vyzkoušel na studni. Můžu se kolem toho pohybovat a nezkresluje to. Jen pevným uchopením sondy rukou se změní hodnoty. Teď si jdu pohrát s přepočtama.
Ještě doplním, že to obdobně používá nějaký přesný měřič kapacity jehož servisní schéma jsem našel na eservice .....
Děkuji za odpovědi.

Nahlásit jako SPAM
IP: 90.177.83.–
hlucheucho+10
Posthunter
7. 8. 2012   #13
-
0
-

#12 GeorgeW
že je tam diodový (nelineární) usměrňovač, tak výst. napětí nebude přímo úměrné výšce hladiny. U toho 555 je na straně sondy vše na vysokých impedancích, proto je to choulostivý. Ten 555 by měl být bezprostředně u sondy a ta by měla být udělaná tak, že izolovaný vodič je uvnitř kovové trubky připojené na GND aby fungovala současně jako stínění.

Co si koupit něco profesionálního s proudovým výstupem 4 - 20mA? Používali jsme to u MVE na hladinu před turbínou. Dodavatele si už nevzpomenu.

Nahlásit jako SPAM
IP: 188.95.60.–
GeorgeW0
Newbie
7. 8. 2012   #14
-
0
-

   

Ano vím, že profesionální sondy jsou trošku někde jinde. Je to otázka financí. Když už by na to přišlo určitě bych si domů nepořídil za ty peníze kapacitní sondu, ale tlakovou. S těma jsem měl zase možnost se seznámit. Jsou přesnější ale o cca 20% dražší. ale to už se nebavíme o částce do 200kč, ale tak od 5000kč výše. Je mi jasné, že dosahují řádově vyšší přesnosti, ale otázkou je zda je to až tak nutné vědět, že mám ve studni 1000 nebo 1020 litrů. Kdyby to bylo nutné, pořídil bych si profi. Člověk, který se zabývá těmito možnostmi pro svoji potřebu nepotřebuje měřící sondu těchto veličin přesnou. Stačí mu vědět, že má ve studni (uvažuji tento případ) 20% vody což dostačuje na to aby věděl co si může dovolit. Samozřejmě jsem přemýšlel i nad jinýma možnostma ... třeba jazýčkové relé v trubce a paralelně k nim odpory . Plovák by nesl magnet který by spínal tyto jazýčkový relátka a podle výsledného odporu vědět jak na tom je. Myslím, že toto zapojení dle zkoušek je daleko přesnější jak jazýčková relátka .... ale méně přesné jak profi snímač. Jen mě hodně zklamala ta 555 k tomuto účelu. Sondu mám úplně jednoduchou. 4m plastový trubky na konci zatavenou. Uprostřed je měděný vodič. K ní je z venku zatím měděný drát (čekám na nerezový) a má kapacitu 98p bez vody a při 1m vodního sloupce a 0,9m průměru skruže má kapacitu cca 200p. Myslím, že jsou to dostatečné hodnoty pro trošku  rozumné zařízení, které poví jak a co. Nepotřebuji měřit 1mm úbytku, ale vědět že tam "něco je" a zatím co jsem zkoušel s tím zapojením, tak ty hodnoty sedí a jsou opakovatelné.   Ale můžu se mýlit žejo  

Nahlásit jako SPAM
IP: 90.177.83.–
hlucheucho+10
Posthunter
7. 8. 2012   #15
-
0
-

právě ta plastová trubka je problém, 555 za to nemůže. Výsledek může ovlivnit i statická elektřina, je to velká plocha a velké impedance na vstupu.

Elektricky nejjednodušší je plovák který tahá za potenciometr

hu

Nahlásit jako SPAM
IP: 188.95.60.–
GeorgeW0
Newbie
8. 8. 2012   #16
-
0
-

No ta 555 už házela falešné impulzy na stole bez připojení té sondy. Sem tam dával kondenzátory 100p+330p a sem tam si to hodilo falešnej impulz. Zablokované jsem to měl i dle rad odtud ale bohužel občas si to naházelo ty falešný impulzy.
Plošný spoj je zde:

Nahlásit jako SPAM
IP: 90.177.83.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

PCF8583 Atmega128 — založil GeorgeW

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý