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ć.

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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
Składnia: [ Pobierz ] [ Ukryj ]
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.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
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.

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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?

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język bash
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/