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



Teraz jest 23 kwi 2026, o 22:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 
Autor Wiadomość
PostNapisane: 3 lis 2016, o 13:39 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Hej.

Stworzyłem strukturę w pamięciach, według poradnika Mirka. Sam się zdziwiłem, że wszystko zadziałało od pierwszego kopnięcia. Ale w trakcie programu, kiedy zaimportuję parę zmiennych z pamięci eeprom funkcją copy_eeprom_to_ram(); potrzebuję jedną zmienną w RAM (przypuśćmy - o nazwie " ram_cfg.temp_srednia ") raz pomniejszyć, raz powiększyć i na koniec dnia zapisać w eeprom.
W czasie tych operacji na zmiennej w RAM , kilka razy potrzebuję zapisać w eeprom inne zmienne, znajdujące się w tej samej strukturze co zmienne zapisywane raz na dzień. Użycie funkcji copy_ram_to_eeprom(); spowoduje NIEPOTRZEBNE zapisanie mi do eeprom także zmiennej, którą chcę zapisać raz dziennie. Wydaje mi się to rozwiązanie nieeleganckie. Tak samo jak przepisanie zmiennej ram_cfg.temp_srednia, do tymczasowej innej zmiennej w pamięci RAM.

Czy możecie podać rozwiązanie tej sytuacji aby zapisywać tylko jedną zmienną ze struktury?
Czy jest to ta szczególna sytuacja, kiedy trzeba pojedynczo zapisywać zmienne do pamięci?

Nie ukrywam, że chwilę temu zrozumiałem jak działają struktury i przypadło mi do gustu to rozwiązanie. Nie poruszam się jednak jeszcze po tym temacie sprawnie, dla tego proszę o krótkie naprowadzenie na właściwe rozwiązania. Z góry dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 14:05 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27459
Lokalizacja: Szczecin
Pomógł: 1045

Przecież to wszystko polega tylko i wyłącznie na takim podziale struktur wewnątrz jednej większej struktury - żeby później wygodnie zapisywać nawet mniejsze fragmenty struktur a niekoniecznie jedną całą wielką

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 14:29 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Czy oznacza to że mam stworzyć strukturę z wieloma innymi strukturami wewnątrz zawierającymi po jednej - dwie zmienne? Czy nie jest to trochę armata na muchę? Łatwo w tym będzie się pogubić.
Nie ma może rozwiązania polegającego raczej na jakichś wskaźnikach na elementy struktury, czy coś podobnego? Jak mówiłem niedawno zrozumiałem pojedyncze struktury a tu.. jedna w drugiej. Bez tej możliwości struktura staje się dla mnie trochę bezużyteczna, (tak jakby robić wykopki ziemniaków koparką :) ) a jej działanie według mnie ograniczone do jedynej użyteczności check_and_load_defaults() Natomiast operacje zapisu do eeprom całych bloków danych - jeśli nie byłoby możliwości zapisu pojedynczych zmiennych - dla mnie - są bezużyteczne.
Jak wspomniałem nie ogarnę zagnieżdżania struktur jedna w drugiej. Wiem, ze pamięć się nie zużywa jeśli zapisywane są dane niezmieniane, jednak wydaje mi się to mało profesjonalne bez funkcjonalności selekcjonowania zmiennych przed zapisem.

Czy kojarzy ktoś na forum jakiś przykład z dwiema strukturami w jednej? Chciałbym mimo to zobaczyć jak to wygląda.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 15:24 
Offline
Użytkownik

Dołączył(a): 20 kwi 2014
Posty: 51
Zbananowany użytkownik

Pomógł: 3

Ja patrzę na to tak, że jeżeli chcemy robić strukturę struktur to tylko w takim wypadku, gdy te "pojedyncze" struktury są "różne", jeżeli są "takie same" to lepiej zrobić tablicę struktur albo tablicę wskaźników do struktur. W końcu struktura to takie rozszerzenie tablicy, możliwość "mieszania danych" (o różnych typach), oczywiście to spojrzenie to spore uproszczenie, które jednak ułatwi późniejsze ogarnięcie tej "sterty" danych.
Pojedyncza_Zmienna->Tablica_Pojedynczych_Zmiennych->Struktura itd. Zrozumienie tego "naturalnego rozwoju", jak to sobie nazywam, pozwoli później zrozumieć i strukturę zawierającą struktury, a zarazem zrozumieć sposób poruszania się pomiędzy wszystkimi elementami, jednej "wielkiej góry danych.
Właśnie tę hierarchię najlepiej ogarnia kompilator :), a my początkujący musimy mu w tym pomóc dobrze obmyślając czego chcemy, a potem tylko napisać w kodzie, także "przykład z dwiema strukturami w jednej" powinieneś koniecznie, metodą prób i błędów, sam napisać. Nie czekać na przykład "z sieci" i zastanawiać się o co komu chodziło, tylko zebrać dane, nawet szczątkowe i samemu dojść do tego o co chodzi. Na tym etapie programowania, to wg mnie, najlepszy sposób ogarnięcia tematu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 15:29 
Offline
Użytkownik

Dołączył(a): 18 lis 2014
Posty: 33
Pomógł: 2

Witam, napiszę może jak ja to ogarnąłem bo temat podobny.
Mierzę temperaturę ciśnienie i wilgotność, temperatura zrobiona wg. Mirka tj. trzy bajty danych(znak, część całkowita i ułamek).
Mam strukturę T_temp z tymi trzema danymi, takich struktur mam więcej (min,max,średnia itp).
Mam strukturę T_temp_czas z temperaturą i czasem jej wystąpienia.
Mam też strukturę T_pomiary w której mam wszystkie struktury z temperaturą itd.
Jak chcę zapisać lub odczytać konkretną pozycję korzystam z funkcji eeprom_read/write_block.

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


To tylko przykład moich pierwszych kroków z C więc proszę poczekać aż ktoś doświadczony to oceni, bo sam nie jestem pewny czy to dobra droga.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 15:50 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Dzięki za podpowiedzi jednak mnie chodzi o coś innego.
Mam strukturę złożoną z kilku zmiennych Część typu uint8_t a część int8_t

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


wiążę to w jedną strukturę i nią operuję To jest jasne.

Jednak po uruchomieniu programu przepisuję dane z eeprom do ram i chcę żeby tam odbywały się pewne działania dotyczące temperatury w RAM
W czasie jednak, kiedy zapiszę alarmy do eeprom funkcją copy_ram_to_eeprom();
zapiszę również do eeprom dane temperatur, a to chcę robić dopiero w ostatniej minucie dnia, raz na dobę.

O ile przy zapisie temperatur, równoczesny zapis alarmów nie zmienia nic, o tyle podczas zapisywania alarmów, zapis temperatur do eeprom będzie niepożądany.

Mam w takim razie dwie możliwości:
albo w jakiś sposób zapisywać tylko cztery ostatnie zmienne ze struktury do eeprom
albo strukturę podzielić na dwie mniejsze. Jednak zupełnie nie wiem jak to ma wyglądać.

Wydaje mi się, ze to co pokazał mi - marcgend - jest tablicą w strukturze i nie za bardzo ma zastosowanie u mnie.
Gdybym zaś zobaczył taką strukturę zagnieżdżoną wydaje mi się ze potrafiłbym wyłuskać gdzie są granice jednej struktury a gdzie drugiej i jak ogarnia to w całość struktura nadrzędna.

A czy nie dałoby się w jakiś sposób wskazać właśnie funkcją "eeprom_read/write_block" tylko tej części danych którą w strukturze chcę zapisać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 16:10 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27459
Lokalizacja: Szczecin
Pomógł: 1045

Jarosław J napisał(a):
albo strukturę podzielić na dwie mniejsze. Jednak zupełnie nie wiem jak to ma wyglądać.

Przecież wyżej dostałeś przykłady ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 16:24 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Czyli moja struktura podzielona wyglądać by miała tak?

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


a nadrzędna tak?

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



i w tym wypadku deklaruje wszystkie typy czy tylko nadrzędny ?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i jak zapisuję w eeprom tylko zmienne typu Talarm lub tylko zmienne typu Ttemp ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 16:41 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 16:57 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Pięknie dziękuję O to mi chodziło. Dziś od wieczora będę próbował wdrożyć do układu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 22:02 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

No i przerobiłem sobie te struktury jak mi podpowiedział kolega, jednak przy próbie kompilacji, kompilator nie czepia mi się samych struktur, ale pokazują się takie błędy.

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



nie za bardzo potrafię je odczytać. Wskazuje ono na niezdefiniowane odwołanie do samego ram_cfg, ale co oznacza zapis (.text.check_and_load_defaults+0x14) to licho wie.
Jeśli pracuję na zmiennych ram i używam ich jako ram_cfg.alm.al1mm wtedy wszystko gra. Kompilator się nie czepia Problem jest tylko z operacjami na całej strukturze głównej.

Jeśli kompilator czepia się definiowania to problem może tkwić tutaj.

Definicje mam zrobione w ten sposób :

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





Pomoże ktoś gdzie mam szukać błędu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 22:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

linijka 12-13 brak ".czasy?"

------------------------ [ Dodano po: 4 minutach ]

a jest " . alm" - sorka

------------------------ [ Dodano po: 11 minutach ]

a w .h jest deklaracja. ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 22:58 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Na pewno zdefiniowałeś ram_cfg i pgm_cfg? W tym co pokazałeś masz tylko ich deklaracje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 06:48 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Jarosław J napisał(a):
kompilator nie czepia mi się samych struktur, ale pokazują się takie błędy.
Kolega HomoChemicus już o tym wspomniał, ale troszkę rozwinę myśl. To nie błędy kompilatora tylko linkera. Informuje Cię, że nie odnalazł definicji zmiennych ram_cfg oraz pgm_cfg. Zadeklarowałeś je jako extern, a masz w którymś pliku źródłowym w projekcie ich definicje? Czyli coś w stylu:
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.

pgm_cfg powinna być zadeklarowana jako const, a w miejscu definicji musi zawierać inicjalizację elementów (jak powyżej).

Jarosław J napisał(a):
co oznacza zapis (.text.check_and_load_defaults+0x14) to licho wie.
Wniosek z tego, że jestem licho :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 09:18 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Kochani - jeszcze trochę cierpliwości do mnie. Jak mówiłem, chwilę temu zrozumiałem jak to działa ale jak widać nie do końca.

W pliku common.h mam DEKLARACJE czyli deklaruje ile czego ma kompilator poświęcić :

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


I to na tyle w pliku .h Definiuję też typy jakie będę używał i je inicjalizuje wartościami czyli robię to w pliku common.c, z dołączonym #include <avr/eeprom.h> i #include <avr/pgmspace.h>:


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

Tak samo robię dla pozostałych czyli


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


Po tym wydaje mi się, że mogę już używać zmiennych strukturalnych typu alm. Ale kiedy użyję np
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



wywala błąd że

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


Ja zaś myślałem że zadeklarowałem typ zmiennych strukturalnych typu ram_cfg.alm jak widać powyżej.

Proszę jeszcze raz o pomoc Czegoś najwyraźniej nie rozumiem do końca.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 10:31 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

W definicjach usuń słowo extern.

Wysłane z mojego HUAWEI Y560-L01 przy użyciu Tapatalka


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 10:35 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Poszło bez błędów. Faktycznie - teraz doczytałem "... zabroniona jest inicjalizacja zmiennej zadeklarowanej z modyfikatorem extern..."


Jakieś cuda się dzieją wyczyściłem projekt i znów ten sam błąd. - Wymiękam.

Jeszcze raz.

Mam plik common.h gdzie mam deklaracje

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




i mam plik common.c, gdzie mam definicje:

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


To wszytko. Nie mam nic innego w związku z tymi strukturami

W pętli głównej main używam tylko tej zmiennej ze struktury w ten sposób: ram_cfg.alm.al1hh=22;

O czym jeszcze zapomniałem Wszystkie definicje i deklaracje w mojej ocenie mam.



Ostatnio edytowano 4 lis 2016, o 11:04 przez Jarosław J, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 11:00 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Chyba nie bardzo rozumiesz jak działa extern.

Przykład (to, co podejrzewam, że chciałeś osiągnąć):
common.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 11:15 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

OK teraz wszystko się kompiluje jednak nie przepisuje mi eeprom do ram.
Na początku przed główną pętlą w main mam copy_eem_to_ram(); bo w tym miejscu chcę przepisać WSZYSTKO do RAM

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


Gdzieś jeszcze jest błąd?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 11:18 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Sprawdzasz w symulatorze czy w rzeczywistym układzie?
Jeśli w rzeczywistym ukladzie, to upewnij się, że wgrałeś do mikrokontrolera plik *.eep.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 11:22 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

w rzeczywistym układzie
Na początku mam przed główną pętlą

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


tak więc czy miałbym eeprom pusty czy miałbym go już wypełniony wartościami to tak czy tak wartości musiały by być przzepisane. Coś nie gra.


Dla jasności wkleję jeszcze raz struktury jakie mam

W pliku common.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 w pliku common.c

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


I jak wspomniałem przed główną pętlą
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 11:47 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Kod, który podałem musi działać, ale trudno tu się ustosunkować nie widząc całości kodu.
Jak np. wygląda funkcja check_and_load_defaults()?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 12:03 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Przejrzałem też tę funkcję, jest ona standardowa od Mirka.

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


W opcjach programatora zaznaczyłem aby programowało też eeprom from build.
Bez efektu.

W main jak już wspomniałem mam

przed pętlą główną

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


a w samej pętli wrzucam na wyświetlacz zmienną "ram_cfg.alm.al1hh" wyświetla zero

robiłem już clean project Popatrzę jeszcze w całość programu bo jak zapisuję w programie wartość do ram_cfg.alm.al1hh to ją przyjmuje. Problem jest typowo z przepisywaniem do ram



Przepisałem jeszcze raz wszystko po kolei i działa. Nie wiem co było powodem - pewnie jakiś babol, do którego już nie dotrę.
Jeszcze raz wielkie dzięki Wam wszystkim.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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