-
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
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO