Atmega16 generovani analogove hodnoty pwm signalem na vystupu ADC – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Atmega16 generovani analogove hodnoty pwm signalem na vystupu ADC – Mikrokontroléry – Fórum – Programujte.comAtmega16 generovani analogove hodnoty pwm signalem na vystupu ADC – Mikrokontroléry – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Hanisss0
Newbie
3. 5. 2011   #1
-
0
-

Zdravim, potreboval bych pomoct, potrebuji na vystupu ADC7 (porty nastavene) priradit pwm signalem 0-5V. Nevim jak ten PWM nastavit aby bylo brano jako 0-5V ani ten prevod moc nechapu. Koukam do toho a hledam neco cele dopoledne a nejsem schopny nic najit:-( (zacatecnik, prosim o trpelivost se mnou:-) )

Nahlásit jako SPAM
IP: 89.29.123.–
Reklama
Reklama
KIIV+42
God of flame
3. 5. 2011   #2
-
0
-

pwm je samo o sobe digitalni - 0V nebo 5V... ale pokud pouzijes vhodny filtr napriklad RC clanek - muzes z toho dostat i ruzne napeti
(jinak je to vsechno o vykonu - stale sepnuto = 100% vykonu, strida 1:1 => 50% ... a tak dale...)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hanisss0
Newbie
3. 5. 2011   #3
-
0
-

Diky za rychle odpovedi, budu jich ted par potrebovat. ja jsem dobre pochopil ten servomotor, tam je perioda dlouha 20 ms pri 50Hz takze jsem za frekvenci PWM dosadil 50hz, s delickou 64 mi vyslo ICR1 3455, tak jsem si rozdelil periodu 20 ms na 3455 dilku takze pro 1 ms je to 173 a pro 2 ms 345 a posilane hodnoty prepocitavam na tento interval a je to v cajku.

Tady ale nemam danou periodu tak jsem z toho zmateny:D pro fast pwm tam je vypocet frekvence pwm, kdyz dosadim frekvenci krystalu 11059200, delicku treba 64 a ocr0 je 256 vyjde mi 675Hz. timto tak nejak koncim:D Nevim jak douha je perioda...nebo pockat. Takze ja tam budu posilat hodnoty 0-256!! takze prepoctu tech 0-1023 co mam v AVr na 0-256, je to spravne? A co tedy ovlivnuje ta frekvence. Ja mam i knizku v pdf na programovani ATMega16 a je to tam popsane, ale nerozumim tomuto a nastaveni bitu 5 a 4. je to o chovani OC0 a s tim jestli je to vystup ale nepochopil jsem to:-(

Za vystupem ACD7 mam RC clanek a potom ten operacni zesilovac, takze to je v pohode. Problem je, ze mi jeden clovek napsal toto: "Máš nějaký zvláštní důvod proč pin ADC7? Tam totiž nejde použít hw pwm, musel bys to generovat programově.
HW výstupy použitelné pro pwm jsou OC0, OC1A a OC1B." No ve schematu je ale OC2, ICP, OC1A (chapu, tam mam ten muj servomotor a posilam mu OCR1A), OC1B, INT1, INT0....OC0 tam neni, takze to ma jako hodnotu uvnitr a neni to automaticky vystup? Takze jen v programu poslu generovanou hodnotu OC0 na ADC7? Taky se ted divim proc to bylo navrzeno v ADC7 jako vystup....:/

Velice dekuji za trpelivost v pripade prilis stupidnich otazek!! Vazne se snazim sam nejdriv vse pochopit, vyhledat a potom se az ptat.

Nahlásit jako SPAM
IP: 89.29.123.–
xhans690
Návštěvník
3. 5. 2011   #4
-
0
-

ja bych se zucastnil par poznamkama
1) ADC7 NENI vystup ale vstup. Jestli to chces brat jako vystup tak pouze jako PA7, port A bit 7. Tedy ma-li to byt "tvrdy" vystup musis nastavit 7. bit v DDRA na 1
2) frekvence zmen ti bude udavat "cistotu" vystupniho signalu za RC filtrem. Da se rict ze bude platit, cim vyssi frekvence, tim cistejsi ( = hladsi) signal na vystupu
3) chovani OCx podle bitu znamena toto. Mas naprogramovany citac, ktery ti na zaklade hodnoty v TCNTx nahazuje/shazuje OCx. Tedy dle datasheetu 0,0 = nic s vystupem OCx nedela, 0,1 = hodi pulz (doufam, ze se nepletu) na OCx, 1,0 = shodi OCx, 1,1 = nahodi OCx. Jenze tohle te nezajima, protoze ty budes pracovat s PA7, takze nechas nastaveni 0,0.
4) ty potrebujes generovat PWM v SW, tedy asi nejlip nastavit citac na CTC rezim, povolit preruseni od COMPARE a od OVERFLOW. Pri udalosti COMPARE treba nahodis PA7, pri udalosti OVERFLOW shodis PA7, nebo naopak

Nahlásit jako SPAM
IP: 81.30.248.–
Hanisss0
Newbie
3. 5. 2011   #5
-
0
-

jj, diky!!!


1. - ano je nastaven v ddr na vystup. myslel sem si to tak (2. a 3.).

Takze pwm rezimy nepouzivat. ale CTC. Mno skoda, tem PWM jakztakz rozumim, jak budu delat PWM podle CTC, uz mi z toho puka hlava...mno nic nejaky prikladek by nebyl? Pro nezasveceneho cloveka je to fakt docela dzungle, zrejme jsem to podcenil.

Nahlásit jako SPAM
IP: 89.29.123.–
KIIV+42
God of flame
3. 5. 2011   #6
-
0
-

To Hanisss : taky muzes zmenit pin, na kterem to chces generovat

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hanisss0
Newbie
3. 5. 2011   #7
-
0
-

To KIIV : takze jde to? tak ja ted nevim, mam delat normalne fast pwm a jde to pak hodit na ten adc7 nebo ne?

Nahlásit jako SPAM
IP: 89.29.123.–
xhans690
Návštěvník
3. 5. 2011   #8
-
0
-

To Hanisss :
Muzes pouzit i PWM rezim, pouze nepripojis OCx vystup, ale v prerusenich obslouzis jiny pin. Ale nezkousel jsem jestli je generovano preruseni compare pri PWM rezimu

Nahlásit jako SPAM
IP: 81.30.248.–
Hanisss0
Newbie
3. 5. 2011   #9
-
0
-

Prosim o pomoc s temi piny,

void init_PWM1(void) //nastaveni pwm
{
TCCR0 = 01001001;

OCR0 = 0;
TCNT0 = 0;
}

void PWM1(int pulse) //funkce
{
OCR0 = pulse;

}

int main(void)
{
PWM1(read_ADC1) //cte hodnotu z prevodniku, to uz mi funguje, tuto hodnotu chci poslat zas pryc
//takze ted je na vystupu OCR0 hodnota z ADC1, tu rovnici z 0-1023 na 0-256 si tam dopisu o to nejde, jen nevim jak mam nastavit ty preruseni a zmenit pin???

Nahlásit jako SPAM
IP: 89.29.123.–
Hanisss0
Newbie
3. 5. 2011   #10
-
0
-

chybi mi tam zavorka a strednik, drobnosti...diky za pomoc...

Nahlásit jako SPAM
IP: 89.29.123.–
xhans690
Návštěvník
3. 5. 2011   #11
-
0
-

projdi si datasheet k procesoru, kolem citacu
je tam jeden registr TIMSK - tam si zvolis ktere preruseni chces pouzivat
tedy ve tvem pripade to bude TIMSK|=(1<<OCIE0)|(1<<TOIE0)
v hlavnim programu pak musis povolit globalne preruseni prikazem sei()
musis pouzit knihovnu # include <avr/interrupt.h>
a samotnou obsluhu preruseni udelas pres
ISR (TIMER0_COMP_vect) pro udalost kdy TCNT0 je rovno OCR0
ISR(TIMER0_OVF_vect) pro udalost preteceni TCNT0

Nahlásit jako SPAM
IP: 81.30.248.–
Hanisss0
Newbie
5. 5. 2011   #12
-
0
-

To xhans69 : jj. uz by to melo byt hotove diky. A prosim te jeste jednu vec. Kdyz mam hodnoty co mi jdou do ADC prevodniku, docela skacou, ten prubeh by mel byt jako plynulejsi, daly by se ty skoky nejak eliminovat nebo jen nejakou funkcickou linearizovat trosku. Zas to moc nejde, kdyz potrebuju aktualni hodnoty nemuzu cekat az pobere 50 a vyhodnoti...nevite jak na to? diky

Nahlásit jako SPAM
IP: 89.29.123.–
xhans690
Návštěvník
5. 5. 2011   #13
-
0
-

To Hanisss :
to je ale problem vstupniho signalu. Da se to filtrovat budto SW tim ze poberes treba 10 hodnot a zprumerujes, zas tak pomale to neni a asi nepotrebujes extra rychlost vzhledem k prodleve na RC filtru na PWM vystupu, nebo HW, treba kondikem vhodne kapacity

jinak male upozorneni na co jsem pri hrani s ADC prisel ja. Jestli pouzivas vice vstupu, tak po prepnuti na jiny vstup je potreba chvilku pockat a pak teprve spustit mereni. Jinak to dela bordel a ukazuje nesmysly. Viz http://programujte.com/?akce=diskuze&kam=vlakno&tema=16631-m8-a-2-kanaly-z-adc-ovlivnujou-se

Nahlásit jako SPAM
IP: 81.30.248.–
Hanisss0
Newbie
26. 5. 2011   #14
-
0
-

cauec, mam jeden dotaz k tomu preruseni...kdyz tam povolim to preruseni...nemuze to prerusit i buffery? mam tam nejake vypocty a at nastavim a zavolam kterykoliv z nich, chova se to porad stejne....jestli to neprerusuje program takze se to nepocita....

Nahlásit jako SPAM
IP: 147.229.132.–
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, 1 host

 

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