Frekvencia előállítása

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Hallo

Szeretnék csinálni egy olyan programot amiben 1Hz- tól 255Hz-ig lehetne állítani 1Hz lépésekben a frekit gombnyomásra. Már napok óta többször is elolvastam a fórumnak erről szóló részét De nem tudok 100Hz-nél kissebbet generálni. Láttam hogy kapu48 is próbált 50Hz-t csinálni de az egy kicsit megfogott és még mindig nem nagyon értek részeket ebből a pwm generálásból.

Örülnék ha pár dolgot elmagyaráznátok és lehet már én is meg tudnám csinálni :D

"Tccr1a = &B01100011" ez mit takar? Ezzel a prescaler-t lehet állítani?
"Const Timer_tick = 1000000000 /(_xtal / Prescale) * 2" Ebben mit jelent az "_xtal"?

Meg hogy mit kell mivel osztani meg szorozni még nemnagyon tudom. Az AvrCalc-al még ismerkedem.

Ezzel programozok: AVR-Duino alappanel (ATMega168) 16kHz-en

Köszi előre is!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Duino: 16 MHz!

Az AVRCalc segitsegevel lesd meg a legkisebb frekit...

De hol itt a PWM?

Az OverFlow segitsegevel hadveresen + szoftveresen is eloallithato!
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Igen nincs benne pwm csak eddig nem voltam tökéletesen tisztában a pwm fogalmával :oops:

Így már minden ok kösz a segítséget.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Nézd meg az aktuális Atmega adatlapját:
http://www.atmel.com/dyn/resources/prod ... oc7530.pdf
127. oldaltól.
14.11.1 TCCR1A – Timer/Counter1 Control Register A–el többek között a kimeneti pin-ek funkcióját lehet beállítani.
14.11.2 TCCR1B – Timer/Counter1 Control Register B –ben az "cs10, cs11, cs12" bitekel lehet a prescaler-t állítani. A Táblázat szerint.
Mivel programfutás közben akarjuk PWM tulajdonságait változtatni ezért a direkt regiszter, írassa a legg kézenfekvőbb.
Az „_xtal” változó a te esetedben = „$crystal = 16000000” értékével.

Az idézet program nem kimondottan a „100Hz-nél kisebb” frekik előállítására készült!
De ha a "Table 14-5. Clock Select Bit Description" táblázat szerint:
„1 0 1 clkI/O/1024 (From prescaler)” állítasz be még az is megvalósítható!
:wink:
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Ok
Kösz a segítséget.
Még nem negyon értem amit írtál de legalább van miből kiindulnom, ezekszerint nem sok esélyem van 100hz alatt pontosan generálni.
Ha ezzel az avr-el nem lehet megoldani akkor valami más típussal vagy valami külső eszközzel nem lehetséges?
Avatar
Roland
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2009. augusztus 12. szerda, 6:00

Hozzászólás Szerző: Roland »

Nem erre való de bascomban a sound utasítás tud 100Hz nél alacsonyabb jelet kiadni, scope-al néztem. De egyébként frekit átszámolod periódusidővé és ha csak négyszög jel kell akkor csak simán ki be kapcsolgatod a pint, szerintem ez a legegyszerűbb.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

A „Sound” parancs átka, hogy lefogja a processzort.
Szerintem a legegyszerűbb :
Timer1-et beállítod 1000Hz-es megszakításra.
A megszakító rutinban elszámolsz 10-ig, és átbillented a kimenetet, és nullázod a számlálót. 1000Hz/10= 100Hz
Evvel a képlettel akár 10Hz-t is elő állíthatsz. 1000Hz/100=10Hz
1000Hz-es lépésekben állithatod az osztót.
Természetesen ha kisebb lépésköz kel használhatsz nagyobb alap frekvenciát.
Mondjuk: 10 000Hz / 110 = 90.9 ~ 91Hz.
Következő lépés: 10 000/111= 90.09Hz
Kisebb frekiket még pontosabban számolhatsz: 10000/5000=2Hz
10000/3333=3.0003Hz

Ez már elég pontos beállitást tesz lehetővé?
:wink:
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2011. június 25. szombat, 11:03-kor.
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Roland én is ezt próbáltam de kb 100hz fölött már valami nem stimmel mert 0-tól 8000-ig mászkál a fordulatszámméró mutatója mint az őrült. De csak akkor ha változót használok a várakozási időhöz, ha fixen beírom hogy 1ms akkor jól működik. Bár ez így még mindig elég pontatlan mert ugye amennyit elérek 1ms-el, azt 2ms-el csak feleannyi ésígytovább.
Sajnos még műszerem nincs a freki mérésére ezért használok fordulatszámmérőt, de a hónapban biztos beszerzek valamit mert keserves így dolgozni vele.

A Timer1-es megoldás jólesz szerintem, de ezt hogy csináljam? "A megszakító rutinban elszámolsz 10-ig"
Igen elég pontos lesz :D csak 1hz-s lépések kellenek egyenlőre.

Bocs hogy ami nektek alap azt még nem tudom, de csak egy hete kezdtem el foglalkozni az avr-el és nem találtam semmi segítséget a frekveniákról.

Kösz és üdv.
Avatar
Roland
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2009. augusztus 12. szerda, 6:00

Hozzászólás Szerző: Roland »

Allspark írta:Roland én is ezt próbáltam de kb 100hz fölött már valami nem stimmel mert 0-tól 8000-ig mászkál a fordulatszámméró mutatója mint az őrült. De csak akkor ha változót használok a várakozási időhöz, ha fixen beírom hogy 1ms akkor jól működik. Bár ez így még mindig elég pontatlan mert ugye amennyit elérek 1ms-el, azt 2ms-el csak feleannyi ésígytovább.
Sajnos még műszerem nincs a freki mérésére ezért használok fordulatszámmérőt, de a hónapban biztos beszerzek valamit mert keserves így dolgozni vele.

A Timer1-es megoldás jólesz szerintem, de ezt hogy csináljam? "A megszakító rutinban elszámolsz 10-ig"
Igen elég pontos lesz :D csak 1hz-s lépések kellenek egyenlőre.

Bocs hogy ami nektek alap azt még nem tudom, de csak egy hete kezdtem el foglalkozni az avr-el és nem találtam semmi segítséget a frekveniákról.

Kösz és üdv.

A timer-es megszakításos megoldás engem is érdekelne (én is kezdő vagyok).

Amúgy a minap a sound parancs használatával csináltam egy boci boci tarkás dallamcsengőt :) majd kibővítettem a megy a gőzössel :) és már is 48%-ig telelett a chip. Tényleg nagyon zabálja a memóriát. Sajnos a Beethoven 9. szimfóniája már nem fért bele a 4k-ba :D
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ajánlom, szertetel a Bascom könyv „Egyéb időzítések” C. fejezetét!
Csak ennyivel bővíted:

Kód: Egész kijelölése

$regfile = "M168def.dat"                                    'Chip
$crystal = 16000000                                         'Sebesség


Config Pinb.1 = Output
Config Timer1 = Timer , Prescale = 64
Const Timer1pre = 65511                                     '10000Hz

Dim Wtime As Byte
Dim Inen As Word , Edig As Word
Inen = 0                                                    'Ez lesz a számlálo
Edig = 1000                                                 'Ez lesz az osztó

Stop Timer1
Timer1 = Timer1pre

On Timer1 Pulse:
Start Timer1

Wtime = 100

Enable Interrupts
Enable Timer1

Do
'.....
  Waitms Wtime
Loop

Pulse:
  Stop Timer1
  Timer1 = Timer1pre
  Start Timer1
  Inen = Inen + 1                                           'Számol
  If Inen = Edig Then          '10 000 / 1000 = 10Hz
   Toggle Portb.1                                           'Itt lesz a kimenő freki
   Inen = 0                                                 'számlálót nulázuk
  End If

Return

End
:roll:
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2009. szeptember 2. szerda, 21:22-kor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Frekimérő, oszcilloszkóp a PCben van. Hangkártyának hívják.... :P
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Viszont a még fiatalon halható freki felső határa állítólag 20 000Hz!
Ezért zeni hangok előállítására már nem jó az alap 10 000Hz .
Inkább úgy 1MHz alap frekit osztanák megfelelő értékekkel.
Sajnos a zenét csak hallgatni szeretem, a létrehozásához már nem értek!
:cry:
Ui.: A program íráshoz csak fantázia kel + szorgalom + kitartás!
:twisted:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Csecsemők: 22-24 kHz!
Avatar
Roland
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2009. augusztus 12. szerda, 6:00

Hozzászólás Szerző: Roland »

Robert írta:Csecsemők: 22-24 kHz!
Azt meg hogy vizsgálták? megkérdezték őket, hogy "Hallod?" :twisted:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Gondolom úgy, hogy ha a gyertmeknél valahonnan hang jön, akkor abba az irányba fordul....

De még nem vagyok gyakorló apuka, aki kipróbálhatná:). és a környéken sincxs most éppen a kezdeti feltételeknek megfelelő egyed...
Válasz küldése