ATNEL tech-forum https://forum.atnel.pl/ |
|
Attiny13 + 2 PWM programowe + dwa zadania równoległe. https://forum.atnel.pl/topic22657.html |
Strona 1 z 1 |
Autor: | bobuss88 [ 8 lis 2019, o 21:47 ] |
Tytuł: | Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Witam. Poszukuje sposobu na uruchomienie dwóch led w trybie PWM o różnych czasach działania. Led1/PWM1/PB0 - płynne rozjaśnianie 0-240 w czasie 60 sekund, ciągłe świecenie przez czas 120 sekund, płynne gaszenie 240-0 przez czas 60 sekund (w pętli) Natomiast równolegle chcę by Led2/PWM2/PB1 się płynnie rozjaśniało 0-240 przez czas 90 sekund , płynnie wyłączało przez czas 50 sekund (pętla). Niestety nie wiem jak się za to zabrać. |
Autor: | bobuss88 [ 9 lis 2019, o 20:44 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Doczytałem się o timerze programowym. Jednak niewiem jak się za to zabrać. |
Autor: | mirekk36 [ 9 lis 2019, o 21:28 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
bobuss88 napisał(a): Jednak niewiem jak się za to zabrać. Proponuję zacząć od książki https://atnel.pl/mikrokontrolery-avr-jezyk-c.html |
Autor: | Alef2 [ 10 lis 2019, o 10:33 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Zaproponuję takie rozwiązanie język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oczywiście i i j muszą być typu uint16_t, a dla drugiego kanału trzeba trochę pokombinować, by dopasować ściemnianie i rozjaśnianie do ilości kroków. Czas obiegu pętli też nie jest idealny. Jeżeli ma być idealny, to można zastosować zamiast _delay_ms(240); while(jakas_zmienna) a w obsłudze przerwania dopisać zerowanie tej zmiennej |
Autor: | SylwekK [ 10 lis 2019, o 13:09 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Twoje zadanie najprościej byłoby chyba rozwiązać z użyciem switch-case. Prosta maszyna stanów dla każdego z led pozwoli na łatwiejsze zarządzanie czasami świecenia. Oczywiście bez timera programowego się raczej nie obejdzie. |
Autor: | tumu [ 10 lis 2019, o 13:38 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. |
Autor: | bobuss88 [ 11 lis 2019, o 00:38 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Dziękuję za zainteresowanie postem. Potrzebowałbym jednak jeszcze zmianę czasów poprzez przełączniki na portach PB3 i PB4: PB3 stan niski - przełącznik czasu Kanału 1 -płynne rozjaśnianie 0-240 przez czas 60 sekund, ciągłe świecenie przez czas 120 sekund, płynne wyłączenie przez czas 60 sekund. PB3 stan wysoki - przełącznik czasu Kanału 1 -płynne rozjaśnianie 0-240 przez czas 90 sekund, ciągłe świecenie przez czas 120 sekund, płynne wyłączenie przez czas 90 sekund. PB4 stan niski - przełącznik czasu Kanału 2 -Rozjaśnianie 0-240 przez czas 60 sekund, gaszenie przez czas 40 sekund. PB4 stan wysoki - przełącznik czasu Kanału 2 -Rozjaśnianie 0-240 przez czas 90 sekund, gaszenie przez czas 50 sekund. Oczywiście jak wyżej wspomniałem oba kanały pwm muszą pracować równolegle. |
Autor: | Alef2 [ 11 lis 2019, o 10:57 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
SylwekK napisał(a): najprościej byłoby chyba rozwiązać z użyciem switch-case Kolega ma na myśli coś takiego:język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
SylwekK napisał(a): bez timera programowego się raczej nie obejdzie nie jestem przekonany czy w TYM konkretnym przypadku jest to niezbędne, choć jeżeli program ma być rozbudowywany to warto lub też jeżeli czasy są krytyczne bobuss88 napisał(a): zmianę czasów poprzez przełączniki na portach PB3 i PB4: a jaki to problem ponieważ zmieniasz tylko czasy i tylko w zależności od stanu wejścia, to wystarczy stałe w warunkach zamienić na zmienne, których wartość będzie zależeć od stanu wejścia, np tak: |
Autor: | SylwekK [ 11 lis 2019, o 11:30 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
@Alef2, tak, mniej więcej o to chodzi. Wypadało by tylko uzależnić kroki rozjaśnianie/ściemnianie od czasu aby te kroki w zadanym czasie odliczyło. Można to zrobić na kilka sposobów. Timer programowy jest wygodny nawet jak przerwan do niczego innego nie wykorzystujemy |
Autor: | bobuss88 [ 11 lis 2019, o 13:37 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Czy szkic programu jest obecnie poprawny? |
Autor: | tumu [ 11 lis 2019, o 22:42 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Having both instance of class outside implementation file and fully opaque pointer requires dynamic allocation which is to be avoided. Furthermore, I think that to implement inheritance subclass has to know all about superclass. |
Autor: | tumu [ 14 lis 2019, o 22:50 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
|
Autor: | bobuss88 [ 15 lis 2019, o 23:42 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
23:42:27 **** Incremental Build of configuration Release for project zzzz **** make all 'Building file: ../button.c' 'Invoking: AVR Compiler' avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny13 -DF_CPU=9600000UL -MMD -MP -MF"button.d" -MT"button.o" -c -o "button.o" "../button.c" In file included from ../button.c:3:0: ../led.h:17:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'typedef' typedef struct LedConfigSet { ^ In file included from ../button.c:4:0: ../button.h:8:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'typedef' typedef struct ButtonConfigSet { ^ ../button.c:8:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'static' static void doFunction(Button * const me); ^ ../button.c: In function 'rawState': ../button.c:12:31: error: 'ButtonConfigSet' has no member named 'port' return *me->config->port & me->config->mask; ^ ../button.c:12:50: error: 'ButtonConfigSet' has no member named 'mask' return *me->config->port & me->config->mask; ^ ../button.c: In function 'Button_init': ../button.c:22:13: warning: implicit declaration of function 'doFunction' [-Wimplicit-function-declaration] doFunction(me); ^ ../button.c: At top level: ../button.c:47:10: warning: conflicting types for 'doFunction' [enabled by default] void doFunction(Button * const me) ^ ../button.c:22:13: note: previous implicit declaration of 'doFunction' was here doFunction(me); ^ ../button.c: In function 'doFunction': ../button.c:51:34: error: 'ButtonConfigSet' has no member named 'onFunction' if(me->config->onFunction) ^ ../button.c:52:41: error: 'ButtonConfigSet' has no member named 'onFunction' (*me->config->onFunction)(); ^ ../button.c:56:34: error: 'ButtonConfigSet' has no member named 'offFunction' if(me->config->offFunction) ^ ../button.c:57:41: error: 'ButtonConfigSet' has no member named 'offFunction' (*me->config->offFunction)(); ^ ../button.c: In function 'rawState': ../button.c:13:5: warning: control reaches end of non-void function [-Wreturn-type] } ^ make: *** [button.o] Błąd 1 23:42:27 Build Finished (took 237ms) |
Autor: | MirkoT [ 16 lis 2019, o 13:37 ] |
Tytuł: | Re: Attiny13 + 2 PWM programowe + dwa zadania równoległe. |
Przy kopiowaniu zabrakło Ci jakiegoś nawiasu klamrowego } Taki przynajmniej masz komunikat. Sprawdź sobie jeszcze raz skopiowany kod. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |