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



Teraz jest 25 kwi 2024, o 18:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 24 ] 
Autor Wiadomość
PostNapisane: 21 gru 2014, o 17:27 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Przy uruchamianiu laptopa DELL z Win7 z podłączoną płytka STM32VL Discovery na USB, nie startuje mi windows. Ekran pusty, tylko u góry ledwo widoczne piksele. Próbowałem w systemie zmieniać botowanie usb i nic. Jest ok, jeśli podłącze płytkę po uruchomieniu windowsa. Czy tak ma być, czy tez trzeba coś ustawić, zmienić itp. Proszę o radę. Płytka kupiona na Allegro.

Moje boje z STM32 na razie na płytce STM32VL Discovery muszę uznać za udane. Wreszcie ogarniam te nowe procki i programowanie. Dużo tego do przetrawienia. Dzięki koledze SunRiver-owi za jego bardzo pomocne artykuły. Przydatne tez bardzo są książki o STM32 panów Paprockiego i Galewskiego.

A jeszcze jedno pytanie. Na razie męczę CooCox v1.77. Nawet niezły. Czasem przy starcie pojawia mi się taki komunikat
Obrazek

Coś mu się nie podoba. Chwilę lapek myśli i komunikat znika i jest wszystko ok. Na ile, tego nie wiem. Albo coś z Javą albo z CooCox v1.77 najnowszy, może jeszcze nie dopracowany.

Jestem jeszcze na początkowym etapie zabawy z STM32 i będę chciał spróbować paczki Eclipse Luny SunRiver-a. Troche mi brakuje tych kolorków i wcięć z Eclipse na AVR-y. Jakie jest wasze zdanie CooCox czy Eclipse Luna ?

Z góry dziękuje za rady i pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2014, o 17:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

JurekG napisał(a):
rzy uruchamianiu laptopa DELL z Win7 z podłączoną płytka STM32VL Discovery na USB, nie startuje mi windows. Ekran pusty, tylko u góry ledwo widoczne piksele. Próbowałem w systemie zmieniać botowanie usb i nic. Jest ok, jeśli podłącze płytkę po uruchomieniu windowsa.


Całkiem możliwe że wykrywa ci pamięć masową na VL i próbuje się botoować z niej .... wyłącz w biosie botowanie z pamięci przenośnych , albo po prostu podłączaj płytkę po uruchomieniu komputera :)

JurekG napisał(a):
A jeszcze jedno pytanie. Na razie męczę CooCox v1.77. Nawet niezły. Czasem przy starcie pojawia mi się taki komunikat


wygląda na jakis problem z javą ... :(

JurekG napisał(a):
Jestem jeszcze na początkowym etapie zabawy z STM32 i będę chciał spróbować paczki Eclipse Luny SunRiver-a. Troche mi brakuje tych kolorków i wcięć z Eclipse na AVR-y. Jakie jest wasze zdanie CooCox czy Eclipse Luna ?


proponuje keplera ... gdyż plugin ARM trochę z luną źle działa .. a na Keplerku ... a zresztą poczytaj na stronie bedziesz wiedział co się porobiło w keplerze gwoli ST-linka i cierpliwie poczekaj na marsa stable ...

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 14:07 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Zaciąłem się na dwa sposoby. Pierwszy to nie mogę odejść od lapka. Wciągający temat. Ale jak zwykle na tym etapie zdarzają się i tego rodzaju zacięcia

Obrazek

No i utknąłem jak Kubuś Puchatek w dziurze. Może pomożecie mi ruszyć. Program który uruchamiam pochodzi z książki "STM32... " M. Galewskiego "LCD - odliczanie" . Po mikro adaptacjach doszedłem do tego miejsca i stop.



Problem rozwiązany. Dodałem biblioteke syscalls z repository->common ->C library i jest ok. Nie ma jak się zaciąć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 15:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

JurekG napisał(a):
Problem rozwiązany. Dodałem biblioteke syscalls z repository->common ->C library i jest ok. Nie ma jak się zaciąć.
czasem tak się dzieje ... niemniej niema co się zniechęcać ja jednak coIDE odpusciłem bo cocoox zepsuł workspace :(

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 21:21 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

W pliku print.c znalazłem taki fragment z syntax error, te pytajniki obok.
Obrazek

i chyba przez to mam sporo warningów. Próbuję to rozwiązać na razie bez efektu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 22:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

wiesz no ... po pytajnikach nie wiem co to ma za błąd być może tak byś jego treść wskazał ??
bo syntax error to tylko tzw: syn większego errora :) -- > żartuję ,

to błąd składni -- czyli coś nie tak z tym wpisem , ale może byc tresć błędu jakaś dokładniejsza ??

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 19:36 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

To ostrzeżenie to być może ma jakiś związek z tym że w programach pana Galewskiego stringi pisze np. "odliczanie\0" czego CooCox nie trawi. Po usunięciu \0 co jak wiadomo automatycznie jest dodawane problem zniknął. I LCD wreszcie mi ruszył.
Natomiast staram się rozwiązać następujący problem z ustawieniem częstotliwości zegara PLL. Otóż wyrzuca mi błąd gdy umieszczę wiersz 85 a z wierszem 84 jest ok. Niby to samo a jednak ciągle mnie zastanawia dlaczego tak jest.

Obrazek

Tu na drugim obrazku jest definiowany ten parametr ale warunkowo.

Obrazek

Czy idzie z tym coś zrobić ?
Podejrzewam że ma to coś z definiowaniem USE_STDPERIPH_DRIVER i STM32F10X_MD_VL .
W Keil MDK4 to działa.

Coś mi się wydaje jakby linia VL nie miała PLL. Trochę się pogubiłem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2014, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

kwestia toolchaina niestety .. :)
a pętla PLL jest i w linii VL ... :) zerknij do noty na obwody czasowe taktowania ew do pomocnika STM32 Cube :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2014, o 13:46 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Dzięki SunRiver za wsparcie.
Zgadza się, PLL jest w STM32VL (24MHz) a już myślałem przez chwilę że go nie ma.
Małe pytanie w temacie konfiguracji portu, czy dla "GPIO_InitStructure.GPIO_Speed = GPIO_Speed_xMHz;" (x = 2 lub 10 lub 50MHz) to xMHz <=SYSCLK ? Wydaje mi się że tak jest, ale czy na pewno ? Czyli maksymalna szybkość przełączania portu dla STM32VL może być 2 lub 10MHz. Czy możesz to moje rozumowanie potwierdzić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2015, o 17:11 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Czy koledzy mogą mi podpowiedzieć gdzie robię błąd ?

W pliku display_led.h mam z definiowane

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


W pliku main.c są one widziane ,

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


natomiast w pliku stm32f10x_it.h , w obsługiwanym przerwaniu już nie

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


sygnalizuje mi błąd :

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


Jeśli podmienię na GPIOC to jest ok.

Podobnie jest ze zmiennymi w pliku display_led.h jeśli chcę ich użyć w przerwaniu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Deklaracje, definicje zewnętrzne dla pliku przerwań są niewidoczne. :?:

Includy są w dobrej kolejności.

Gdzie robię błąd ? Czy jeszcze czegoś nie dołączyłem ?

Program do obsługi 6-ciu multipleksowanych segmentów wyświetlaczy LED. Na razie to ćwiczenie, ale utknąłem i ani kroku do przodu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2015, o 17:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Czyli masz include dla display_led.h w pliku z przerwaniami ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2015, o 19:24 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Nie, w przerwaniu nie mam.

W pliku main.c mam

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


W pliku display_led.h mam

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


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


Nawet jeśli zadeklaruję zmienną globalna w main.c to nie jest ona widziana w przerwaniu.
Przykładowo

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


w przerwaniu

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


i efekt

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



Zastanowiło mnie teraz twoje "czyli masz...", a może "czy mam...
i dałem w pliku stm32f10x_it.h

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


i przynajmniej jest ok z LED_SEGM

Zastanawiam się co trzeba zrobić aby przerwanie zobaczyło definicję zmiennej globalnej z z main.c ?
Zastanawia mnie to powyżej /* Private variables ---------------------------------------------------------*/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2015, o 19:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

w main.c sprobuj

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

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2015, o 21:05 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Z extern też nie poszło.
Musi być jakiś niuans.
Powtórzyłem deklarację z main.c w pliku stm32f10x_it.c zmiennej z. Przy czym w main.c jest z "extern volatile unsigned char z;"
A tu poniżej bez extern.

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


I niby poszło. Bez błędu. Ale czy takie powtórzenie deklaracji to jest ok. Czy z i z to ta sama zmienna.
Muszę to jakoś sprawdzić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2015, o 21:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Zobacz to topic10273.html#p114809

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2015, o 18:23 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Dzisiaj wyskoczył mi przy uruchamianiu Coocox'a komunikat "An error has accured. See the log file" i stop. Nie da rady uruchomić programu. Ale na szczęście po surfowałem w necie i znalazłem to, że trzeba usunąć katalog w "Coide/configuration/ProgramData/.metadata/.plugins/Org.eclipse.core.resources" i elegancko Coide ruszył.

Ale wracając do tych zmiennych niewidocznych w innych plikach dołączanych, to nadal się męczę i coś jednak jest nie tak.
W sumie np. zmienna "extern volatile unsigned char z;" zdefiniowana przed main w głównym pliku jako zmienna globalna a na dodatek "extern" powinna być widoczna wszędzie. Jakiś niuans musi być. Czekam na pomoc i podpowiedź.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2015, o 20:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

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

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

i wtedy powinien widzieć tą zmienną w przerwaniu.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2015, o 20:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

@PJS ze sie tak zapytam ... czy to na pewno jest dobre podejscie ? nie jest tak ze w 2 miejscach deklarujesz zmienne ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2015, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

RafPe napisał(a):
czy to na pewno jest dobre podejscie ? nie jest tak ze w 2 miejscach deklarujesz zmienne ?

extern wskazuje, że dana zmienna została już gdzieś indziej zadeklarowana i nie jest to ponowna deklaracja tej zmiennej.
Spójrz np. tu: http://4programmers.net/C/Extern

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2015, o 10:46 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Dzięki, zmienne extern już działaja i rozumiem o co chodzi.
Ale jak mówią i dalej w las tym więcej drzew.
Aktualnie bawię się w uruchomienie na moim STM32VLDiscovery prosty licznik zliczający impulsy z encodera i wyświetlający wynik na wyświetlaczu LED.
I tu pełny sukces, liczy i wyświetla ok, załączam kod

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


i obsługa przerwania

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


Lecz zastanawia mnie przekierowanie licznika TIM3 czyli tzw ramp.
Otóż wejścia na PC6 i PC7 czyli kanał 1 i 2 jest ok. Ale jednocześnie mam zablokowane piny portu PC8 i PC9, które akurat są podłączone na płytce discovery do LED-ów. Z dokumentacji wynika, że mogą lub są podłączone przez ramp do kanału 3 i 4 licznika TIM3. Jak je odłączyć aby w przyszłości wykorzystać je do innych celów. Aktualnie są bezużyteczne.

Zarówno parametr, aktualnie mam ustawiony na "GPIO_FullRemap_TIM3 : TIM3 Full Alternate Function mapping" ,
ale zmiana na " GPIO_PartialRemap_TIM3 : TIM3 Partial Alternate Function mapping"
nic nie zmienia.

Widać w przerwaniu, moją wstawkę na toglowanie LED, lecz niestety to nie działa. Natomiast zmienna "z" jest ok.

Jak sobie z ty poradzić ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2015, o 19:01 

Pomógł: 0

A ustawiasz gdzieś PC8 i PC9 jako wyjścia?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2015, o 20:55 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Tak, tylko po tych niepowodzeniach usunąłem ten fragment. Jeśli dopiszę w pliku konfiguracyjnym GPIO_Pin8

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


To zapali się dioda LED na PC8 ale brak możliwości wpływania na ten port. Podobnie jest z PC9.
Dzieje się tak, jakby ramp przyporządkowywał kanały 1-4 do PC6, 7, 8, 9.
Na razie te piny nie wykorzystuję, ale gdy będzie potrzeba to kłopot.

I coś znalazłem w książce Paprockiego

Wyprowadzenia alternatywne dla TIM3
Domyślne TM3_CH1-4 PA6, PA7, PB0, PB1
Częściowy ramping TM3_CH1-4 PB4, PB5, PB0, PB1
Całkowity ramping TM3_CH1-4 PC6, PC7, PC8, PC9

Teraz muszę sprawdzić na domyślnym, bo na całkowitym to już wiem dlaczego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 10:31 

Pomógł: 0

Dobra, powoli :)

1. Nie ramp tylko remap.
2. Z tego co zrozumiałem Twój post, problem jest następujący: chcesz mieć TIM3_CH1 i TIM3_CH2 na PC6 i PC7. W związku z tym korzystasz z funkcji remappingu. Jednocześnie chcesz korzystać z PC8 i PC9 jako normalnych GPIO, right?
3. Co nowego wnosi cytat z książki? To samo masz w dokumentacji (Reference Manual RM0008):
Obrazek
4.
Cytuj:
Teraz muszę sprawdzić na domyślnym
Tego nie rozumiem - "domyślnie" to bez remappingu - czyli nie będziesz miał CH1/2 na PC6/7 - a przecież o to właśnie chodziło?
5.
Cytuj:
na całkowitym to już wiem dlaczego.
Ja nie wiem. Napisałem program uruchamiający TIM3 w trybie enkodera, "full remapujący" TIM3 na PC6,7,8,9 i machający PC8 i PC9 jako normalnymi GPIO... działa zgodnie z założeniem. Na screenie przebiegi z PC8 i PC9.
Obrazek

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

Także ten... albo ja nie rozumiem co rozumiesz jako problem, albo masz błąd w kodzie ;)



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 14:56 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Dzięki wwojtek. Na spokojnie przeanalizuję. Tym bardziej że zrobiłem remap jako domyślny, czyli no remap na PA6 i PA7 i mam to samo. Czyli PC8 i PC9 nie działa. Cudów nie ma, gdzieś błąd w kodzie.


No i znalazłem. Złą maskę wpisałem (~licznik & 0x03FF) zamiast prawidłowo (~licznik & 0x003F). W obsłudze przerwania od TIM1

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


W brew pozorom takie błędy sprawiają że szukając go można się sporo nauczyć i to nowych rzeczy, szczególnie na początku nauki.



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: 24 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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