Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem MCU- Vytvoření zvuku

Zdravím, mám menší problém, se kterým bych potřeboval pomoci.
Potřeboval bych naprogramovat přes MCU jednočip 8051 zvuk o frekvenci 450 Hz a délky 10s. Potřebuji prostě dostat jako výsledek hexa číslo, které zadám jako délku trvání Th aTl.
Předem díky moc.

Předmět Autor Datum
Tak si naprogramuj, co je na tom tazke? V slucke si budes menit nejaky GPIO alebo pouzijes nejaky ca…
MM.. 08.05.2017 15:00
MM..
Delka trvani Th = Tl = (1/450)/2 sekund = 1,11111ms
MM.. 08.05.2017 15:01
MM..
No potřebuji to pomocí 16 nebo 8bit časovače, tj. TMOD
Domes430 08.05.2017 15:10
Domes430
Už to nejspíš mám, pro frekvenci 450 Hz mi vyšlo nějakých Th=FB h a TL=9C; a pro 500Hz TH=FC a TL=18…
Domes430 08.05.2017 15:12
Domes430
Hodnoty zavisia od tvojej frekvencie timeru. Delku tonu resis tak ze po 10sekundach ten timer/vystu…
MM.. 08.05.2017 15:30
MM..
Ak mas 12MHz clock ( a timer je /12) a ak po kazdom preteceni timera sa invertuje vystup tak potom s…
MM.. 08.05.2017 15:41
MM..
Ano, do zapojení bych použil 12 MHz krystal, jen jsem spíš chtěl pomoct se zapsáním programu. Posled…
Domes430 08.05.2017 15:48
Domes430
Take veci sa robia najlepsie naprogramovanim stavoveho automatu (viz google ze co to je). Drzis si s…
MM.. 08.05.2017 15:52
MM..
Je to semestrální projekt na střední škole, ne na vysoké. Podmínka je, že program musí být psán v MC…
Domes430 08.05.2017 16:08
Domes430
Ked nemozes pouzit delay tak potom si pocitaj prerusenia od nejakeho casovaca, ak sa neda casoavc na… poslední
MM.. 08.05.2017 16:35
MM..
Ale pre 450Hz mi vyslo FB A9 (-1111 decimalne a prevedene na hex), neviem odkial si nabral FB9C
MM.. 08.05.2017 15:47
MM..

Ano, do zapojení bych použil 12 MHz krystal, jen jsem spíš chtěl pomoct se zapsáním programu. Poslední dobou jsem se v tom ztrácel a teď bych to potřeboval dát vše dohromady. Pracuji na projektu semaforu pro chodce jako semestrální projekt. Potřebuji sepsat program pomocí časů z časovače, nikoliv z knihovny "Delay". Na klasické křižovatce dělám semafory do všech směrů, potřebuji tedy jen program, ve kterém po stisknutí tlačítka spustím program, v jednom směru se rozsvítí zelené diody a v dalším červené po obou stranách.

CHtěl jsem zapojení doplnit o zvukovou signalizaci která právě na přechodech bývá. Potřebuji tedy na 10 sekund rozsvítit zelené diody pro jeden směr, a po 10 sekundách je rozsvítit a místo nich spustit červené.

Take veci sa robia najlepsie naprogramovanim stavoveho automatu (viz google ze co to je). Drzis si stav v nejakej premennej, a podla toho v jakom si stave robis nejake veci, napr. pocitas si prerusenia od timeru a az napocitas do hura, tak zmenis stav. program bezi stale, nespusta sa tlacitkom.
To ta mali snad naucit v skole cez ten semester, chjo.

P.S: inac ak ten ton bude generovat HW sam, tak mozes pouzit aj delay teoreticky. Ale neni normalne robit takym sposobom uC firmware.

Je to semestrální projekt na střední škole, ne na vysoké. Podmínka je, že program musí být psán v MCU a časy musí být vytvořeny jen pomocí časovačů. Vím, že by se dalo použít spoustu jiných možností, ale to teď jde v mém případě z cesty.

Ale asi si to nebudu komplikovat. Zadání je libovolné a je už jen na mě, jestli udělám rovnou cestu s přechodem uprostřed, nebo křižovatku se čtyřmi směry. Protože je tu ten problém, že když pro jednu stranu zavolám zelené diody a zvuk pro signál VOLNO, tak automaticky na druhé straně musí být použití druhý reproduktor pro signál STOP a ty zvuky by se prolínali a nebylo by slyšet, co je co.

Takže svoji vyrobenou desku s křižovatkou, na které jsem chtěl projekt realizovat předělám asi tak, že místo 4 přechodů do 4 směrů udělám přechody jen 2 na svislé ose, tím pádem mi bude stačit jeden reproduktor a zavolám jen zelené diody zároveň se zvukem pro VOLNO a po 10 sekundách přesný opak.

Říkám to správně ? Nezní to jako blbost ?

Ked nemozes pouzit delay tak potom si pocitaj prerusenia od nejakeho casovaca, ak sa neda casoavc nastavit na tak dlhy cas, alebo ak nemas volny casovac. CPU tak moze robit nieco ine a v slucke len budes testovat ci sa uz napocitalo dostatocne.
Tak sa robia timery vseobecne v OS. Mas len 1 HW casovac, ale mozes si tiky casovaca pocitat aj v 100 roznych premennych a tym mas k dispozicii 100 roznych casov od momentu ked si dane pocitadlo (premennu) vynuloval az po teraz. (v skutocnosti ale nebyva 100 pocitadiel ale je len 1pocitadlo porovnava sa rozdiel stav pocitadla aktualny minus ulozeny na zaciatku. Pozor na ovwerflow, aritmetika musi byt stejne bitova ako to pocitadlo)

Zpět do poradny Odpovědět na původní otázku Nahoru