Tiny85 - konfigurace PWM v Bascomu

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

Tiny85 - konfigurace PWM v Bascomu

#1 Příspěvek od josido »

v bascomu jsem mel cvicny programek na pwm pro procesor, co jsem mel zrovna v supliku, tedy mega32...konfigurace vypadala takhle:
rem nastaveni PWM radice na 2400Hz, vystup bude na PIND.5, tedy OC1A
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 8

v kodu jsem pak pouzival prirazeni hodnoty:
Pwm1a = hodnota

ted jsem chtel program predelat pro tiny85, ale kdyz pouziju tuhle deklaraci, tak to nefunguje. konkretne nefunguje prirazeni pro pwm1a. zjisitl jsem, ze pwm0a lze pouzit, takze asi je jen jeden pwm port u tohoto cipu, ale zaboha nevim, jak upravit radek config timer1....kde mi to porad hlasi chybu a na jakem pinu vystup bude. koukal jsem do manualu, ale njsem z toho nejak mooudrej. urcite to bude tim, ze jeden procesor ma na orzdil od druheo nejake timery a jine nema nebo tak neco, ale fakt nevim.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#2 Příspěvek od Andrea »

Co tak si o těch procesorech něco přečíst, třeba datašíty? Nebo jak chceš programovat jednočip, když ani netušíš, jaké má nebo nemá čítače?

Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#3 Příspěvek od josido »

Andrea píše:Co tak si o těch procesorech něco přečíst, třeba datašíty? Nebo jak chceš programovat jednočip, když ani netušíš, jaké má nebo nemá čítače?
myslim, ze na tohle jsem upozornil, ze tomu nerozumim
koukal jsem do manualu, ale njsem z toho nejak mooudrej
takze prosim o konstruktivni radu. kdyz s tim nekdo zacina, tak mu navod nepomuze. privital bych odpoved typu ten tvuj cip nema tenhle casovac, proto musis pouzit tuhle deklaraci atd... ja s tema cislama zkousel laborovat, ale k nicemu sem nedospel. bohuzel se to ucim sam, takze tvoje rada je mi vis tak k cemu...a zbytecne zaplnuje forum. mozna ze ho zbytecne zaplnuju i ja, ale alespon s konkretnim problemem, ktery muze poslouzit dost dobre stejnym "defum" jak jsem ja.

Uživatelský avatar
endthe
Příspěvky: 56
Registrován: 07 bře 2009, 01:00
Bydliště: Brno
Kontaktovat uživatele:

#4 Příspěvek od endthe »

tvoje mega32 ma Timer_counter 1 tudiz muzes pouzit PWM na portech D

staci si projit nastaveni bitu pro rizeni PWM

dale musis urcit ICR1 (zalezi na volbe krystalu, preddelicky a zvolem typu PWM)


datasheet na megu32 http://www.atmel.com/dyn/resources/prod ... oc2503.pdf

PWM tam najdes na str.98

jinak pro OC1A

to napr bude

Kód: Vybrat vše

ICR3=20000; // f=50Hz f=fxtal/N*TOP  N=8 ICR1=TOP

TCCR1A|=(0<<COM1A0)|(1<<COM1A1)|(0<<COM1B0)|(0<<COM1B1)|(1<<WGM11)|(0<<WGM10); // fazove korigovana PWM (0<<WGM11)|(1<<WGM10)
ale zalezi na tobe jak to potrebujes. vysvetlovat vyznami jednotlivych bitu ti nebudu to najdes v datasheetu a pokud aspon trosku davas anglictinu tak to zvladnes precist.

jinak v bascomu nedelam delam v C takze si to musis prekopak a doporucuju prejit na AVR Studio popripade Code Vision.

potom muzes podobne problemi hledat napr zde:
http://winavr.scienceprog.com/avr-gcc-t ... inavr.html
http://winavr.scienceprog.com/avr-gcc-t ... inavr.html

Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#5 Příspěvek od josido »

to endthe> diky za prispevek, ktery neco napovida narozdil od predchoziho. co se tyka pouziti, tak z manualu jsem vycetl, ze to ma nejaky interni krystal 8MHz, tak v ramci eliminace externich soucastek bych rad vyuzil jej. jedine, co potrebuji je pouziti funkce pulsin, ktera bude merit delku impulsu na jednom vstupnim pinu. dale bude vystup na pinu na kterem je mozno provozovat hw pwm. prave ze jsem u te megy nejak moc nepochopil, jak se urcuji ty vystupi a ktera deklarace co urcuje. jen ze timer1 je mozny provozovat s pwm. slo by to nejak vice objasnit pro blbeho? dekuji.

Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#6 Příspěvek od josido »

jinak pokud bych chtel prejit na ten jazyk c, je nejaky volny prekladac? ja vim, ze jsem si kdysi stahoval verzi avr studia, ktere ma integorvano nejake to free c, ale vubec mi to nejak neslo rozjet. je nekde cesky popsane, jak s timhle zacit?

Uživatelský avatar
endthe
Příspěvky: 56
Registrován: 07 bře 2009, 01:00
Bydliště: Brno
Kontaktovat uživatele:

#7 Příspěvek od endthe »

primo ze stranek http://www.atmel.com/forms/software_dow ... 6Setup.exe (po kratkem vyplneni formulare) stahnes nejnovejsi AVR studio

potom nainstaluj


pak stahni http://sourceforge.net/project/showfile ... _id=668059


nainstaluj


do AVR studia se ti prida gcc (programovani v C)

pak pust AVR zaloz projekt gcc a programujes ;)

Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#8 Příspěvek od josido »

ok, tak uz to stahuju, ale stejne uvidime, jak se v tom budu orientovat. kazdopadne porad plati ten muj prvni problem...jak tedy implementovat ten funkcni program co mam pro mega32 na tiny85. jde o to, ze bych chtel pouzit interni krystal (to se asi nastavuje konfiguracnima bitama a tusim podle navodu je interni 8mhz krystal standartne). pak mit jeden vstup, kterym budu merit pomoci pulsin sirku pulsu. dalsi stezejni vec je nastavit jeden pin od tiny85 jako vystup a aby se na nem objevovala pwm. potrebuju trochu postrcit, ale jak urcim na jaky pin pujde vystup, to je asi dano temi vystupy? navod rika, ze ma tiny85 dva timery:
- 8-bit Timer/Counter with Prescaler and Two PWM Channels
- 8-bit High Speed Timer/Counter with Separate Prescaler
a v tech registrech se nevyznam, na kterem pinu tedy co najdu? jde to pospat nejak pro troubu?

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#9 Příspěvek od Andrea »

Anglickým obrázkům taky nerozumíš? Máš tam napsáno, co je na které nožičce.
A ten oscilátor uvnitř, není krystal, je to RC oscilátor, takže od něj nečekej přesnou ani stabilní frekvenci.
Přílohy
tiny25.gif
(16.33 KiB) Staženo 81 x

Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#10 Příspěvek od josido »

no nejde o to jestli rozumim nebo nerozumim, ce le to nemuzu dat dohromady. kdyz jsem delal ten prvni programek s mega32, tak jsem nekde v nejakem prikladu vyhrabal deklaraci:

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 8

tu jsem pochopil, ze pro regulaci pwm bude pouzit timer1 z rozlisenim 8 bitu, pocitanim dolu, porovnavat to bude s A a predelic urcil nejaou frekvenci. dal jsem si myslel, ze ten porovnavaci registr A je nejaka vazba na pin OC1A (1=timer 1, A = compare A) a podle schema obvodu to odpovidalo pind.5. takze porovnavat se bude s registrem Compare1a pro ktery ma bascom ekvivalent zapisu Pwm1a, ktery tedy urcuje hodnotu k porovani.
na pin d.5 jsem pripojill ledku a kdyz jsem nastavoval ruznou hodnotu, tak se menila intenzita jejiho svitu.

takze jsem to chtel zkusit predelat pro mensi cip, tedy tiny85. koukal jsem, ze ma taky timer1, takze jsem nastavil:
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 8

a myslel jsem, ze nastavenim pwm1a, tedy oc1a bude vystup na pinu b.1 podle vyse uvedenoho obvrazku. ovsem u deklarace mi prekladac hlasi invalid parametr or value pro deklaraci a pro prirazeni hodnoty chybu prirazeni. tak jsem zkusil prepsat pwm1a na pwm1b a ta druha chyba zmizela, ale porad u te deklarace je ta stejna chyba. rikal jsem si, ze zmenim podle B compare a na B a budu to mit na pinu b.4 ale porad to hlasi chybu. vubec nevim, jak si to mam polopaticky vysvetlit...teda jestli je nejake jednoduche vysvetlneni

Uživatelský avatar
endthe
Příspěvky: 56
Registrován: 07 bře 2009, 01:00
Bydliště: Brno
Kontaktovat uživatele:

#11 Příspěvek od endthe »


Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#12 Příspěvek od josido »

no v tom cecku na to cumim jak puk na vrata...asi mam bordel v tech registrech. najde se dobra vila, co mi to objasni?

Uživatelský avatar
josido
Příspěvky: 73
Registrován: 26 bře 2009, 01:00

#13 Příspěvek od josido »

tak nevim, jestli jsem to dobre pochopil, kazdopadne jsem si zrovna vybral blbej jednocip...tedy tiny85, pac ma jen 8-bitove timery. takze ta syntaxe nebyla uplne presna, musel jsem upravit:
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 8
sptane tam totiz bylo navic Pwm= 8 (myslim, ze se to zadava pouze u 16-ti bitoveho timeru, nebot si tim parametrem vybirame rozliseni 8,9 nebo 10bitu, coz u 8-bitoveho timeru dost dobre nejde)

dale pak prirazeni vystupu odpovida pouzitemu kompatatoru, tedy compare A, budu nastavovat hodnoty pwm0a= hodnota.

kompilator to schroustal, tak snad to je dobre a ma to svou logiku. vystup by mel byt na pinu B.0, ktery odpovida OC0A.

nebo se v necem pletu?

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“