Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 gru 2024, o 15:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 29 wrz 2013, o 12:50 
Offline
Nowy

Dołączył(a): 05 lut 2013
Posty: 10
Pomógł: 0

Witam.
Zaimplementowałem do swojego układu sterowanie 230V triakami jak w książce.
Po włączeniu PWM sprzętowego na przerwaniu 1 sterowania fazowe się wysypuje bo zaczyna mrugać. Czym szybsze PWM (mniejszy preskaler) tym mryganie wyraźniejsze. Dziwne bo to sprzętowe PWM i nie powinno zabierać cykli zegara...
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Bez tego przerwania całe sterowanie fazowe chodzi super.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 20:11 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

PWM do działania nie potrzebuje odblokowania żadnych przerwań.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2013, o 15:34 
Offline
Nowy

Dołączył(a): 05 lut 2013
Posty: 10
Pomógł: 0

Tym to dla mnie dziwniejsze. Kiedy mikrokrontroler nie musi zmieniać stanu wyjść (sunięte z kodu linie 2 i 3) mimo że przerwanie chodzi (linia 6 obecna) ściemnianie jest realizowane prawidłowo. Kiedy kompiluję kod z liniami 2 i 3 światło mruga... Ściemniacze mam na wyjściach A0, A1, A5 arduino mini PRO a PWM na sprzętowych czyli D5, D6. Nie są to więc te same porty (PortC i PortD). Czy sprzętowe PWM w jakikolwiek sposób zaburza przebiegi czasowe mikrokontrolera? Nie mam oscyloskopu więc mam zagwostkę i trochę w cemno się męczę z tematem:(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2013, o 18:11 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Na D5 i D6 są wyjścia OC0A i OC0B, a ty konfigurujesz timer1, który kontroluje wyjścia OC1A/B1 i OC1B/B2.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2013, o 18:41 
Offline
Nowy

Dołączył(a): 05 lut 2013
Posty: 10
Pomógł: 0

Mój błąd. Oczywiście PWM pod D9 i D10. (mam też D5 i D6 podłączone, ale tam używam analogWrite żeby nie tracić funkcji delay). Wszystko jedno czy użyję analogWrite na pinach D5 i D6 czy użyję przypisania do OCR1A, OCR1B (D9, D10)... Tylko uruchomię PWM i zaczyna mrygać
Tak sobie myślę że może arduino chce być mądry i stara się synchronizować zapisywanie do portów z PWM... Ja używam:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Może są jakoś semaforowane albo synchronizowane z przebiegiem PWM? Spróbuje zamienić je na bezpośrednie instrukcje na portach.


Sprawdziłem... Niestety też mruga:(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO