-
Data: 2013-02-16 16:27:53
Temat: Fast PWM - trójkąt zamiast sinusa na wyjściu
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Eksperymentuję właśnie z generowaniem przebiegu sinusoidalnego za pomocą
Atmegi8. Oparłem się na drugim przykładzie z tej strony:
http://tinyurl.com/d3tyvex
Przebieg ma być dialtonem o częstotliwości około 425 Hz.
Wzór przebiegu znajduje się w tabeli, wypełnionej w następujący sposób:
for (i=0; i<256; i++) sinus_buffer[i]=128+126*sin(6.26/256*1);
PWM generowany jest za pomocą TIMER1 ustawionego na Fast PWM (tryb 14).
Funkcja włączająca generowanie przebiegu wygląda następująco:
void StartDialtone (void)
{
TCCR1A |= _BV(COM1A1) | _BV(WGM11);
TCCR1B |= _BV(WGM13) | _BV(WGM12) | _BV(CS10);
ICR1 = 255;
OCR1A = 0;
sinus_ind = 0;
TCNT0 = 182;
TCCR0 |= _BV(CS00);
TIMSK |= _BV(TOIE0);
}
Z kolei wyłączająca wygląda następująco:
void StopDialtone (void)
{
TCCR0 &= ~_BV(CS00);
TIMSK &= ~_BV(TOIE0);
TCCR1A &= ~(_BV(COM1A1) | _BV(WGM11));
TCCR1B &= ~(_BV(WGM13) | _BV(WGM12) | _BV(CS10));
ICR1 = 0;
PORTB &= ~_BV(1);
}
Zmiana współczynnika wypełnienia odbywa się w przerwaniu, po
przepełnieniu TIMER0:
ISR (TIMER0_OVF_vect)
{
OCR1A = sinus_buffer[sinus_ind];
if (sinus_ind < 255) sinus_ind++;
else sinus_ind=0;
TCNT0 = 182;
}
Za wyjściem PB1/OC1A znajduje się filtr dolnoprzepustowy RC złożony z
rezystora 330 omów oraz kondensatora 1uF do masy. Za filtrem nie mam
jednak sinusoidy, a coś przypominające trójkąt:
http://imageshack.us/photo/my-images/4/img8927kj.jpg
/
Gdzie mogłem popełnić błąd? Problem będzie leżał raczej po stronie softu
czy sprzętu?
Następne wpisy z tego wątku
- 16.02.13 16:36 Atlantis
- 16.02.13 17:41 Anerys
- 16.02.13 17:46 Atlantis
- 16.02.13 17:52 AlexY
- 16.02.13 18:08 J.F.
- 17.02.13 10:07 Atlantis
- 17.02.13 17:46 AlexY
- 18.02.13 16:02 J.F
- 18.02.13 21:15 Jakub Rakus
- 18.02.13 21:55 Atlantis
- 19.02.13 00:56 Michoo
- 20.02.13 18:20 Atlantis
- 20.02.13 18:32 Atlantis
- 11.03.13 16:43 Michal Schulz
- 11.03.13 16:49 Michal Schulz
Najnowsze wątki z tej grupy
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
Najnowsze wątki
- 2025-03-02 Tusk idzie na rekord deportacji po 1989 [Będzie popyt na prawników]
- 2025-03-01 Obywatel telefonuje 112 lub 986
- 2025-03-01 detektyw (?) Rutkowski działał jako prasa
- 2025-03-01 "Policjant został ujęty obywatelsko..."
- 2025-03-01 zatrzymanie zbyszka maja
- 2025-03-01 Warszawa => Expert Recruiter 360 <=
- 2025-03-01 Chrzanów => NodeJS Developer <=
- 2025-03-01 Warszawa => Gen AI Engineer <=
- 2025-03-01 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-01 Kraków => Technical Team Leader (Clojure, Java) <=
- 2025-03-01 Zrobił TV OLED z TV LCD
- 2025-03-01 Gdynia => Sales Executive / KAM <=
- 2025-03-01 Błonie => Sales Specialist <=
- 2025-03-01 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-03-01 Żerniki => Dyspozytor Międzynarodowy <=