Generowanie przebiegu prostokątnego 1kHz z zmiennym wypełnieniem na Atmel 89c2051
atmel i przebieg prostokatny
From: "Turysta" <mjleg17_at_nospam_w.pl>
Subject: atmel i przebieg prostokatny
Date: Wed, 4 Jul 2001 13:40:58 +0200
Witam
Ktos moze ma pomysl na generowanie na nozce scalaka przebiegu prostokatnego
o roznym wypelnieniu.
Konkretnie chodzi o czestotliwosc generacji 1kHz lecz o zmiennym
wypelnieniu (np. 80% jedynki 20% zera, 30% jedynki 70%zera).
Procesor to oczywiscie Atmel 89c2051 z tym ze liczniki wewnetrze mam
wykorzystane do obslugi transmisji szeregowej.
Zegar 12MHz.
Bylbym wdzieczny za wszelka pomoc w rozwiazaniu problemu.
P.S. Rozumiem ze ma to postac
loop: Delay ...
clr P1.4
Delay ...
setb P1.4
ljmp loop
Z tym ze nie bardzo wiem jak zrobic sensowne opoznienie.
Pozdrawiam
Mariusz
mjankows_at_nospam_staszic.sns.waw.pl
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Wed, 4 Jul 2001 13:48:58 +0200
"Turysta" <mjleg17_at_nospam_w.pl> wrote in message news:9huvcm$sgk$1_at_nospam_h1.uw.edu.pl...
...
Procesor to oczywiscie Atmel 89c2051 z tym ze liczniki wewnetrze mam
wykorzystane do obslugi transmisji szeregowej.
...
oba timery masz wykorzystane do transmisji szeregowej ?
do czego drugi, do timeoutow ?
P.S. Rozumiem ze ma to postac
loop: Delay ...
clr P1.4
Delay ...
setb P1.4
ljmp loop
Z tym ze nie bardzo wiem jak zrobic sensowne opoznienie.
jesli uzywasz przerwan to w ten sposob nie zrobisz stalego opoznienia
procedura przerwan pojawaiajaca sie w przypadkowych momentach
zaburzy czas delaya o ile to ma byc zwykla petla
jest chcesz miec rowny przebieg to chyba najlepiej na przerwaniu od timera
Andrzej
From: "Turysta" <mjleg17_at_nospam_w.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Wed, 4 Jul 2001 14:19:14 +0200
Użytkownik Andy <anok_at_nospam_ceti.pl> w wiadomości do grup dyskusyjnych
napisał:9huvrt$21s$1_at_nospam_news.tpi.pl...
"Turysta" <mjleg17_at_nospam_w.pl> wrote in message
news:9huvcm$sgk$1_at_nospam_h1.uw.edu.pl...
...
Procesor to oczywiscie Atmel 89c2051 z tym ze liczniki wewnetrze mam
wykorzystane do obslugi transmisji szeregowej.
...
oba timery masz wykorzystane do transmisji szeregowej ?
do czego drugi, do timeoutow ?
P.S. Rozumiem ze ma to postac
loop: Delay ...
clr P1.4
Delay ...
setb P1.4
ljmp loop
Z tym ze nie bardzo wiem jak zrobic sensowne opoznienie.
jesli uzywasz przerwan to w ten sposob nie zrobisz stalego opoznienia
procedura przerwan pojawaiajaca sie w przypadkowych momentach
zaburzy czas delaya o ile to ma byc zwykla petla
nie uzywam przerwan, chodzi mi na razie o sam zarys lub pomysl wyliczenia
czestotliwosci dla przebiegu
i metody na generowanie roznego wypelnienia.
Co do samego przebiegu to wydaje mi sie ze wiem jak, ale nie potrafie
przeskoczyc wypelnienia
jest chcesz miec rowny przebieg to chyba najlepiej na przerwaniu od timera
wlasnie na rownym mi nie zalezy, tylko na takim gdzie zmienie wartosc
opoznienia (no wlasnie nie wiem jak) i bede mial inne wypelnienie prostokata
Andrzej
Mariusz
From: "Bzyk" <janosik_at_nospam_com.pl>
Subject: Odp: atmel i przebieg prostokatny
Date: Wed, 4 Jul 2001 14:40:22 +0200
wlasnie na rownym mi nie zalezy, tylko na takim gdzie zmienie wartosc
opoznienia (no wlasnie nie wiem jak) i bede mial inne wypelnienie
prostokata
;x=wypełnienie
;a dowolny rejestr R16-R32
ldi a,x
delay1: inc a
cp1 a,255
brne delay1
ldi a,x
delay2: dec a
cpi a,0
brne delay
przy różnym wypełnieniu x częstotliwość masz stałą.
Może trzeba będzie coś dopieścić w kodzie ale zarys jest.
Bzyk
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Wed, 04 Jul 2001 14:57:57 +0200
Kolega ten, tego....lekko przesadził.....wypisując rozkazy AVR-a ;)
PWM (bo generalnie tak toto się zwie) programowo robię tak:
- dekrementuję jakiś licznik w przerwaniu i sprawdzam jego wartość
- jak jest równy wartości zadanej to załączam
- jak licznik jest = 0 to zawsze wyłączam
W ten sposób zmieniając wartość z którą porównuję inkrementowany licznik
zmieniam wypełnienie przebiegu.
Częstotliwość zaś i rozdzielczość PWM-a dobieram zmieniając zakres
dekrementacji licznika oraz jej częstotliwość.
Cała procedura zajmuje bardzo niewiele miejsca i czasu, więc nie ma
problemu z podwieszeniem jej pod jakieś okresowe przerwanie (np:
wyświetlacz). Jeśli jednak nie można użyć przerwania...hmm...pojawiają się
kłopoty. Można w pętli przewijać procedurę wraz z dekrementowaniem liczika,
ale wtedy każde wtrącenie przerwana zniekształca przebieg. Coś za coś.
--
PZD, Irek.N. (ALIAS)
From: "Bzyk" <janosik_at_nospam_com.pl>
Subject: Odp: atmel i przebieg prostokatny
Date: Wed, 4 Jul 2001 15:20:08 +0200
Użytkownik Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl> w wiadomości
do grup dyskusyjnych napisał:3B4312D5.928A8AE5_at_nospam_multispedytor.com.pl...
Kolega ten, tego....lekko przesadził.....wypisując rozkazy AVR-a ;)
A co? asembler be...
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Wed, 04 Jul 2001 15:34:22 +0200
A co? asembler be...
Ależ gdzież tam....najlepszy....tyle że kolega pisał o 2051 ;)
Swoją drogą wysłałem mu exampla, ale raczył był powrócić z hasłem _User
unknown_ :(
--
PZD, Irek.N. (ALIAS)
From: "Turysta" <mjleg17_at_nospam_w.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Thu, 5 Jul 2001 09:10:20 +0200
Jesli kolega wysylal do mnie to jesli mozna prosic jeszcze raz tylko ze pod
adres
mjankows_at_nospam_staszic.sns.waw.pl
ten z listy ma pulapke antyspamowa.
Pozdrawiam
Mariusz
Użytkownik Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl> w wiadomości
do grup dyskusyjnych napisał:3B431B5E.C3F4D846_at_nospam_multispedytor.com.pl...
A co? asembler be...
Ależ gdzież tam....najlepszy....tyle że kolega pisał o 2051 ;)
Swoją drogą wysłałem mu exampla, ale raczył był powrócić z hasłem _User
unknown_ :(
--
> PZD, Irek.N. (ALIAS)
>
>
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: atmel i przebieg prostokatny
Date: Thu, 05 Jul 2001 20:45:53 GMT
On Wed, 04 Jul 2001 14:57:57 +0200, Ireneusz Niemczyk wrote:
Kolega ten, tego....lekko przesadził.....wypisując rozkazy AVR-a ;)
PWM (bo generalnie tak toto się zwie) programowo robię tak:
- dekrementuję jakiś licznik w przerwaniu i sprawdzam jego wartość
- jak jest równy wartości zadanej to załączam
- jak licznik jest = 0 to zawsze wyłączam
W ten sposób zmieniając wartość z którą porównuję inkrementowany licznik
zmieniam wypełnienie przebiegu.
Częstotliwość zaś i rozdzielczość PWM-a dobieram zmieniając zakres
dekrementacji licznika oraz jej częstotliwość.
Taaa - tylko ze w ten sposob to mozesz sobie wypelniac 50Hz.
Bo jakbys chcial wypelniac powiedzmy 2kHz, w dodatku na 500 mozliwych
ustawieniach i jeszcze np w 4 kanalach ... uj, to sie juz nie da :-)
P.S. Dobrze sie to robi z uzyciem kosci 8254/53 jak kto ma tyle
miejsca
PPS. Jest taka odmiana programu jak komus na czestotliwosci zalezy
ze zamiast dla np 4/10 wysylac kolejno 1111000000, wysylamy
1010010100. Najgorsze ze wtedy czestotliwosc sie zmienia ..
J.
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Fri, 06 Jul 2001 11:27:04 +0200
Taaa - tylko ze w ten sposob to mozesz sobie wypelniac 50Hz.
Bo jakbys chcial wypelniac powiedzmy 2kHz, w dodatku na 500 mozliwych
ustawieniach i jeszcze np w 4 kanalach ... uj, to sie juz nie da :-)
OK. ale musisz przyznać, że to bardzo łatwa i oczywista wersja PWM-a.
Co do 2k w 500 poziomach i 4 kanałach....brutal z ciebie ;)) przerwanie co uS
(
W 51 upchałem ostatnio 4 PWM-y 4 bitowe ~200Hz, jeden 8 bitowy ~14Hz (albo
7??? nie pamiętam odkładnie) do tego 4xLED i prosta klawiaturka.....weszło
_siakoś_. :) więc nie jest znów tak bardzo, bardzo źle...
PPS. Jest taka odmiana programu jak komus na czestotliwosci zalezy
ze zamiast dla np 4/10 wysylac kolejno 1111000000, wysylamy
1010010100. Najgorsze ze wtedy czestotliwosc sie zmienia ..
Koslawy....a nie będzie to niemile brzęczeć czasami jak do np: silnika
podłączysz ?
--
PZD, Irek.N. (ALIAS)
From: "Kumex" <kumex_at_nospam_interia.pl>
Subject: Odp: atmel i przebieg prostokatny
Date: Fri, 6 Jul 2001 14:07:09 +0200
Użytkownik Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl> w wiadomości
do grup dyskusyjnych napisał:3B458468.FF350E7F_at_nospam_multispedytor.com.pl...
PPS. Jest taka odmiana programu jak komus na czestotliwosci zalezy
ze zamiast dla np 4/10 wysylac kolejno 1111000000, wysylamy
1010010100. Najgorsze ze wtedy czestotliwosc sie zmienia ..
Koslawy....a nie będzie to niemile brzęczeć czasami jak do np: silnika
podłączysz ?
Brzęczenie bardzo zależy od częstotliwości.
Właśnie tak się robi w niektórych falownikach. Ostatnio miałem na tapecie
falownik APATORa z Torunia (który tak na prawdę jest sprowadzany z Tajwanu i
sprzedawany pod znakiem Apatora) i oglądałem sobie przebiegi na
oscyloskopie.
Specjalnie nieprzyjemnie to, to nie brzęczało, a chodziło na 12kHz.
Pozdr.,
QmX.
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Fri, 06 Jul 2001 14:53:37 +0200
Brzęczenie bardzo zależy od częstotliwości.
Właśnie tak się robi w niektórych falownikach. Ostatnio miałem na tapecie
falownik APATORa z Torunia (który tak na prawdę jest sprowadzany z Tajwanu i
sprzedawany pod znakiem Apatora) i oglądałem sobie przebiegi na
oscyloskopie.
Specjalnie nieprzyjemnie to, to nie brzęczało, a chodziło na 12kHz.
A i owszem, robi się nawet więcej - pomija się częstotliwości rezonansowe
napędów.
Sterowałem znacznie niższymi czestotliwościami - fakt piszczało troszkę, ale
nie dokuczliwie (czysty, klawrowny...ton pracy silnika) ;)
Zastanowiło mnie, czy taka kopnięta fala podana na silnik będzie brzmieć
równie czysto, czy może jakieś produkty się ponakładają i w efekcie silnik
będzie warczał .
--
PZD, Irek.N. (ALIAS)
ps. 12k - wysoko :)
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: atmel i przebieg prostokatny
Date: Fri, 06 Jul 2001 23:03:07 GMT
On Fri, 06 Jul 2001 11:27:04 +0200, Ireneusz Niemczyk wrote:
Taaa - tylko ze w ten sposob to mozesz sobie wypelniac 50Hz.
Bo jakbys chcial wypelniac powiedzmy 2kHz, w dodatku na 500 mozliwych
ustawieniach i jeszcze np w 4 kanalach ... uj, to sie juz nie da :-)
OK. ale musisz przyznać, że to bardzo łatwa i oczywista wersja PWM-a.
Wersja bardzo dobra ... ale nie do wszystkiego :-(
PPS. Jest taka odmiana programu jak komus na czestotliwosci zalezy
ze zamiast dla np 4/10 wysylac kolejno 1111000000, wysylamy
1010010100. Najgorsze ze wtedy czestotliwosc sie zmienia ..
Koslawy....a nie będzie to niemile brzęczeć czasami jak do np: silnika
podłączysz ?
IMHO - mniej bedzie brzeczec niz te oryginalne 1111000000.
Ale moga narzekac ze dawniej buczal, a teraz piszczy ..
From: Milosz Skowyra <miloszek_at_nospam_fidonet.org.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Wed, 04 Jul 2001 14:55:39 +0200
Turysta wrote:
Procesor to oczywiscie Atmel 89c2051 z tym ze liczniki wewnetrze mam
wykorzystane do obslugi transmisji szeregowej.
Zegar 12MHz.
Bylbym wdzieczny za wszelka pomoc w rozwiazaniu problemu.
Masz dwa wyjscia, albo uzyc niedokladniej petli software-owej albo
wykorzystac przerwanie ktoregos licznika. Nawet jezeli masz zajety timer
do obslugi przerwania to mozesz w jego przerwaniu odliczac petle
software-owe, byle bys sie wyrobil czasowo przed nadejsciem kolejnego
przerwania.
--
Regards.
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48608888899 |
| miloszek_at_nospam_fidonet.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Dzisiaj slonce nie wzejdzie, bo za zimno.
From: "Tomek Slowik" <tomek_at_nospam_olsza.krakow.pl>
Subject: Re: atmel i przebieg prostokatny
Date: Thu, 5 Jul 2001 16:46:12 +0200
używanie setb i clr naraz można zastąpić instrukcją CPL (dopełnienie) ->
każde wejście w pętle będzie zmieniało stan na przeciwny, jako opóźnienie
użyj martwych pętli petla:
DJNZ Rx, petla
DJNZ z trzema rejestrami powinna dać ci duży wybór czasów.
Użytkownik "Turysta" <mjleg17_at_nospam_w.pl> napisał w wiadomości
news:9huvcm$sgk$1_at_nospam_h1.uw.edu.pl...
Witam
Ktos moze ma pomysl na generowanie na nozce scalaka przebiegu
prostokatnego
o roznym wypelnieniu.
Konkretnie chodzi o czestotliwosc generacji 1kHz lecz o zmiennym
wypelnieniu (np. 80% jedynki 20% zera, 30% jedynki 70%zera).
Procesor to oczywiscie Atmel 89c2051 z tym ze liczniki wewnetrze mam
wykorzystane do obslugi transmisji szeregowej.
Zegar 12MHz.
Bylbym wdzieczny za wszelka pomoc w rozwiazaniu problemu.
P.S. Rozumiem ze ma to postac
loop: Delay ...
clr P1.4
Delay ...
setb P1.4
ljmp loop
Z tym ze nie bardzo wiem jak zrobic sensowne opoznienie.
Pozdrawiam
Mariusz
mjankows_at_nospam_staszic.sns.waw.pl