MSP430_cz2.pdf

(1237 KB) Pobierz
062-064_msp430_cz2.indd
PODZESPOŁY
MSP430: mikrokontrolery,
które (prawie) nie
pobierają prądu, część 2
Środowisko programistyczne
Oprogramowanie umoż-
liwiające wygenerowanie
kodu wynikowego o objęto-
ści do 4 kB można ściąg-
nąć ze strony www.iar.com
po uprzednim zarejestrowa-
niu się. Wbrew pozorom
4 kB kodu wynikowego
to naprawdę bardzo dużo.
Jeśli w programie nie ma
dużych tablic i nie używa
się wyrafinowanych i pa-
mięciożernych konstrukcji
językowych, to program
wynikowy w większości
przypadków zmieści się
w takiej objętości. Warto
pamiętać, że ograniczenie
objętości dotyczy jedynie
kodu stworzonego przez
programistę. Używając bi-
bliotek wbudowanych (np.
funkcji printf czy funkcji
matematycznych) można
wygenerować kod o więk-
szej objętości.
Na rys. 5 pokazano
wygląd ekranu środowiska
programowania firmy IAR
(Workbench IDE).
Na zrzucie ekranowym
są widoczne punkty za-
trzymania ( breakpoints ).
Środowisko umożliwia
oglądanie rejestrów proce-
sora po każdym zatrzyma-
niu. Można ponadto zde-
finiować dowolne wyraże-
nie i oglądać jego zmiany
w trakcie działania progra-
mu (patrz okno watch ).
Na list. 1 pokazano
przykład prostego pro-
gramu w języku C. Jego
odpowiednik napisany
w asemblerze pokazano na
list. 2 . Obydwa przykłady
działają tak samo: po usta-
wieniu rejestrów procesora
w pętli głównej wprowadza
się procesor w tryb uśpie-
nia LPM3 i jednocześnie
uaktywnia się układ wa-
tchdog , w tym przypadku
w roli zwykłego licznika.
W efekcie z częstotliwością
Istnieje wiele kompilatorów umożliwiających
programowanie procesorów MSP w językach
asembler i C. Firma TI w notach aplikacyjnych
i dostarczanych zestawach ewaluacyjnych używa
oprogramowania firmy IAR, ma ono bowiem
niebagatelna zaletę: w wersji do 4 kB jest dostępne
bezpłatnie.
Uwaga! W EPooL11/2007 opublikujemy nową wersję płyty z notami
katalogowymi i narzędziami dla mikrokontrolerów z rodziny MSP430.
1 Hz jest uruchamiany
podprogram obsługi prze-
rwania, w którym mikro-
kontroler wybudza się ze
stanu uśpienia. Procesor
powraca do pętli głównej,
gdzie zapala diodę LED
i odmierza czas delay (ok.
0,2 s) korzystając z pętli
oczekiwania, a następ-
nie wyłącza diodę LED
i usypia wchodząc w tryb
LPM3 . W trybie uśpie-
nia wyłączony jest zegar
taktujący rdzeń proceso-
ra. Działa jedynie oscyla-
tor ACLK o częstotliwości
32,768 kHz. Oscylator ten
używany jest do takto-
wania układu watchdog.
Obudzony procesor uży-
wa wewnętrznego układu
DCO generującego prze-
biegi o częstotliwości ok.
800 kHz (procesory serii
F1xx) lub 1 MHz (proce-
sory serii F4xx). Sygnał
z DCO – zegar systemo-
wy MCLK – jest użyty do
taktowania rdzenia proce-
sora.
Sposób działania pro-
gramu umożliwia pomiar
poboru prądu. W trakcie
działania powinno być to
ok. 300 mA, a w trakcie
uśpienia ok. 1 mA. Prąd
w stanie uśpienia jest rze-
czywiście mały i trzeba
dysponować odpowiednim
miernikiem by jego okre-
ślenie było możliwe w wa-
runkach domowego labora-
torium.
Przyjrzyjmy się progra-
mowi w języku C. W wier-
szu #6 włącza się zbiór
nagłówkowy Header File.
Ten zbiór zawiera defini-
cje wszystkich rejestrów,
pól bitowych i przerwań
procesora. Warto z niego
korzystać zamiast samemu
liczyć bity i adresy w pa-
mięci procesora. Aby zoba-
czyć co jest w takim zbio-
rze wystarczy dwa razy
klikąć na nazwę zbioru
w drzewie projektu w ok-
nie workspace . W wierszu
#11 znajduje się instruk-
cja IE1 |= WDTIE.
Poleca ona ustawić bit
WDTE w rejestrze IE1 bez
zmiany pozostałych bitów.
Gdyby trzeba było wyzero-
wać ten sam bit, bez na-
ruszania innych bitów, to
zapis ten wyglądać powi-
nien IE1 &= ~WDTIE.
Rys. 5. Okno środowiska uruchomieniowego Workbench
IDE w wersji dla mikrokontrolerów MSP430
62
Elektronika Praktyczna 10/2007
153199098.245.png
PODZESPOŁY
List. 1. Prosty program demonstracyjny napisany w języku C
01 //––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
02 // Pogram ilustruje działanie trybu oszędzania emergii LPM3.
03 // Zapalenie diody LED P1.0 i jej świecenie ma miejsce w trybie normalnej pracy
04 // Zgaszenie diody sygnalizuje tryb LPM3 (tryb uśpienia)
05 //––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
06 #include <msp430x14x.h>
// definicje rejestrów procesora
zakłócenia (przypadkowe
przełączenia). Ustawiając
je w taki sposób istotnie
zmniejszamy ich wrażli-
wość na zakłócenia oraz
zyskujemy kontrolę nad
podłączonymi do portów
układami (np. diodami
LED).
W wierszu #26 wy-
wołuje się makrodefini-
cję odblokowania prze-
rwań. Funkcja __low_po-
wer_mode_3() pochodzi
z biblioteki środowiska
a jej definicja znajduje
się w zbiorze intrinsic.h .
Zbiór ten jest automatycz-
nie włączany gdy zostanie
użyty zbiór definicji reje-
strów procesora include
<msp430x14x.h> .
W wierszu # 31
znajduje się instrukcja
for (int i =0;
i<0x2000; i++); ...
Jest to operacja opóźnie-
nia z definicją lokalną
zmiennej int i. To jest
instrukcja języka C++.
I rzeczywiście. Kompilator
IAR C jest kompilatorem
obiektowym języka C++.
Są oczywiście ogranicze-
nia wynikające z możli-
wości procesora MSP430.
To ograniczenie to obiek-
ty wirtualne bez których
można się bardzo dobrze
obejść. Kompilator IAR
jest obiektowy, ale nie ma
obowiązku używania go
w pełnej, najbardziej wy-
rafinowanej obiektowej po-
staci. Język C jest z pew-
nymi drobnymi niuansami
podzbiorem języka C++.
Daje to szansę rozwoju
programistom, którzy chcą
się nauczyć języka C++.
Zapis # p r a g m a
vector= WDT_VECTOR
w wierszu # 36 jest no-
wością w ostatniej wersji
kompilatora IAR i sygna-
lizuje zdefiniowanie funk-
cji obsługi przerwania
związanej z określonym
położeniem wektora w pa-
mięci. Programy napisane
dla wcześniejszych wer-
sji kompilatora IAR mu-
szą być konwertowane
do takiej właśnie postaci.
07
08 void main(void) {
09
10 WDTCTL = WDT_ADLY_1000 ;
// czas działania WDT = 1s i
11 IE1 |= WDTIE;
// odblokowanie WDT
12
13 P1DIR = 0xff;
// P1 output
14 P1OUT = 0;
// P1 reset
15 P2DIR = 0xff;
// nieużywane porty w trybie out ...
16 P2OUT = 0;
17 P3DIR = 0xff;
18 P3OUT = 0;
19 P4DIR = 0xff;
20 P4OUT = 0;
21 P5DIR = 0xff;
22 P5OUT = 0;
23 P6DIR = 0xff;
24 P6OUT = 0;
25
26 _EINT();
// odblokowanie przerwań
27
28 while(1) {
29 __low_power_mode_3() ;
30 P1OUT &= ~BIT0;
// włącz LED
31 for (int i =0 ; i<0x2000; i++);
// opóźnienie: lokalna deinicja i
32 P1OUT |= BIT0;
// wyłącz LED
33 }
34 }
35
36 #pragma vector= WDT_VECTOR
// podprogram obsługi przerwania
37 __interrupt void watchdog_timer( void ) {
38 __low_power_mode_off_on_exit() ;
39 }
// wyjście ze stanu LPM3
Takie konstrukcje języko-
we występują w wierszach
#30 i # 32 gdy zapala
się i gasi diodę LED. Za-
daniem instrukcji w wier-
szach #11…#24 jest usta-
wienie wszystkich portów
P1…P6 jako porty wyjścio-
we. Dlaczego tak? Porty
wejściowe, mając bardzo
dużą oporność wewnętrz-
ną mogą być podatne na
List. 2. Odpowiednik programu z list. 1 napisany w asemblerze
01 ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
02 ; Pogram ilustruje działanie trybu oszczędzania energii LPM3.
03 ; Zapalenie diody LED P1.0 i jej świecenie ma miejsce w trybie działanie
04 ; Zgaszenie diody sygnalizuje tryb LPM3 (tryb uśpienia)
05 ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
06 #include „msp430x14x.h”
07
08 ORG 01100h
; start programu
09 RESET mov.w #0A00h,SP
; ustawienie stosu
10 SetupWDT mov.w #WDT_ADLY_1000,&WDTCTL
; WDT ~1000ms: czas układu watchdog
11 bis.b #WDTIE,&IE1
; odblokowanie przerwania WDT
12 SetupPx mov.b #0FFh,&P6DIR
; P6 output: wyjście
13 clr.b &P6OUT
;
14 mov.b #0FFh,&P5DIR
; P5 output: wyjście
15 clr.b &P5OUT
;
16 mov.b #0FFh,&P4DIR
; P4 output: wyjście
17 clr.b &P4OUT
;
18 mov.b #0FFh,&P3DIR
; P3 output: wyjście
19 clr.b &P3OUT
;
20 mov.b #0FFh,&P2DIR
; P2 output: wyjście
21 clr.b &P2OUT
;
22 mov.b #0FFh,&P1DIR
; P1 output: wyjście
23 clr.b &P1OUT
24
25 loop bis.w #LPM3+GIE,SR
; tryb LPM3, odblokowanie przerwań
26 nop
; konieczne dla debugera
27 bic.b #001h,&P1OUT
; ustaw bit P1.0: włacz diodę LED
28 push #2000h
; czas opóznienia na stos
29 wait dec.w 0(SP)
; zmniejsz czas opóźnienia
30 jnz wait
; czas opóźnienia upłynął ?
31 incd.w SP
; usuń ze stosu
32 bis.b #001h,&P1OUT
; skasuj bit P1.0: wyłacz diodę LED
33 jmp loop
24
35 ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
36 WDT_ISR
; budzenie ze stanu LPM3
37 bic.w #LPM3,0(SP)
;
38 reti
;
39 ;
40 ;–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
41
; wektory przerań MSP430x4xx
42 ORG 0FFFEh
; MSP430 RESET wektor
43 DW RESET
;
44 ORG 0FFF4h
; WDT wektor
45 DW WDT_ISR
;
46 END
Elektronika Praktyczna 10/2007
63
153199098.256.png
PODZESPOŁY
Informacje katalogowe oraz noty aplikacyjne doty-
czące mikrokontrolerów z rodziny MSP430 są dostępne
pod adresem:
http://www.ti.com/msp430
W EP11/2007 opublikujemy płytę CD–ROM z progra-
mami narzędziowymi, przykładami i dokumentacjami
związanymi z mikrokontrolerami MSP430.
Czytelnicy zainteresowani poznaniem mikrokontrole-
rów MSP430 mogą obejrzeć projekty konkursowe, przy-
gotowane przez inżynierów z całego świata na konkurs
Design MSP430 Challenge , który odbył się w zeszłym
roku. Opisy projektów oraz oprogramowanie przygoto-
wane do nich są dostępne pod adresem:
http://www.designmsp430.com/
Technology for Innovators TM
8
MSP430 Microcontrollers
2007
MSP430 Ultra-Low-Power
Microcontrollers
Get Started Now!
Getting started is easy with MSP430. MSP430 offers
easy-to-use tools, free Kickstart software and hundreds
of application notes and code examples to help get your
design started.
Two main collateral pieces are needed for device
documentation.
• Data Sheets for each specific device provide pin
functions, internal signal connections and operational
parameters. Datasheets can be obtained by going to the
specific device web page.
• User Guides provide in-depth detailed technical informa-
tionon the device peripherals. These are written for each
family of the MSP430, including x1xx, x2xx and x4xx.
Visit the website, www.ti.com/msp430 for all the
documentation and resources.
• User’s Guides
• Datasheets
• Application Reports
• Code Examples
• Code Function Libraries
• Latest Development
Tool Software
• Footprints/Symbols
for CAD Tools
• 3rd Party Listing
• Silicon Errata
4
MSP430 Microcontrollers
MSP430 Microcontrollers 11
Intelligent Peripherals
With purely software-driven functions, the CPU is
100% active and consuming power. Effectively utilizing
peripherals allows the CPU to be turned off to save
power or work on other activities to achieve the
highest performance. MSP430 device peripherals are
designed to require the least amount of software
service. Additional hardware features allow CPU
resources to focus more on differentiated application-
specific features and less on basic data handling.
Lower-cost systems can be implemented using less
software and lower power.
Embedded Emulation with MSP430 MCUs
• In-system development
• Subject your design to the exact same characteristics
of the final application
• Non-obtrusive development and debug
• Common user software and physical interface
• Maintains signal integrity of microvolt analog signals
Today’s applications operating at lower voltages, with tighter
packaging and higher-precision analog, benefit greatly from
the MSP430 MCU’s in-system emulation approach. The
MSP430 MCU’s dedicated embedded emulation logic resides
on the actual device itself and is accessed via JTAG (4-wire)
or Spy-Bi-Wire (2-wire) using no additional system resources.
Maintaining signal integrity is virtually impossible with
cumbersome in-circuit emulators that are sensitive to cabling
crosstalk. And, unlike abstract background debuggers, no
time-sharing of system serial communication resources is
required with embedded emulation on the MSP430 device.
From the first day of development, firmware engineers can
now unobtrusively develop and debug their embedded code
with full-speed execution, breakpoints, and single steps in
an application.
Peripheral Overview
ADC10/ADC12 —The ADC10/12 module supports
fast, >200ksps, 10- or 12-bit analog-to-digital
conversions. The module features a 10 or 12-bit
SAR core with 5, 8 or 12 input channels, sample
select control, 1.5/2.5V reference generator
and internal temperature sensor. ADC10
features a data transfer controller (DTC) and
ADC12 features a 16 word conversion-and-
control buffer. These added features allow
samples to be converted and stored without
CPU intervention.
BOR —The brown-out reset (BOR) circuit
detects low supply voltages and reset circuit
resets the device by triggering a POR signal
when power is applied or removed. MSP430’s
zero-power BOR circuit is continuously turned
on, including in all low power modes.
Comparator_A/Comparator_A+ —The
Comparator_A/A+ module supports precision
slope analog-to-digital conversions, supply
voltage supervision, and monitoring of external
analog signals for accurate voltage and resistor
value measurement. The module features a
selectable reference voltage generator and
input multiplexer. (Comp A+)
DAC12 —The DAC12 module is a 12-bit, voltage
output DAC featuring internal or external refer-
ence selection, programmable settling time for
optimal power consumption and can be config-
ured in 8- or 12-bit mode. When multiple DAC12
modules are present, they may be grouped
together for synchronous update operation.
DMA —The direct memory access (DMA)
controller transfers data from one address to
another, without CPU intervention, across the
entire address range. The DMA increases the
throughput of peripheral modules and reduces
system power consumption. The module
features up to three independent transfer
channels.
ESP430 (integrated in FE42x devices) —The
ESP430CE1 module incorporates the SD16,
hardware multiplier and ESP430 embedded
processor engine for single-phase energy
metering applications. The module performs
metering calculations independent of the CPU.
FLASH —The MSP430 flash memory is bit-,
byte-, and word-addressable and programmable.
The main memory segment size is 512 bytes.
Each MSP430 also has up to 256 bytes of Flash
Information Memory for EEPROM emulation.
Flash can be read, erased and written (100,000
cycles) through the JTAG debugging interface,
the Bootstrap Loader, and in-system.
I/O —MSP430 devices have up to ten digital
I/O ports implemented, P1-P10. Each port has
eight I/O pins. Every I/O pin is configurable for
input or output direction, and can be individually
read or written to. Ports P1 and P2 have
interrupt capability. MSP430F2xx devices
feature built-in individually configurable pull-up
or pull-down resistors.
LCD/LCD_A —The LCD/LCD_A controller directly
drives LCD displays with automatic signal
generation for up to 160 segments. The
MSP430 LCD controller can support static,
2-mux, 3-mux, and 4-mux LCDs. The LCD_A
module includes an integrated charge pump
for contrast control.
MPY —The hardware multiplier module
supports 8-/16-bit x 8-/16-bit signed and
unsigned multiply with optional ‘multiply and
accumulate’ functionality. It is a peripheral
which does not interfere with CPU activities
and can be accessed by the DMA. The MPY
on new F47xx devices features up to 32-x32-bit
operation.
OA —The MSP430 integrated operational
amplifiers feature single supply, low current
operation with rail-to-rail outputs and program-
mable settling times. Internal, programmable
feedback resistors and connections between
multiple op amps allow for a variety of software
selectable configuration options including:
unity gain mode, comparator mode, inverting
PGA, non-inverting PGA, differential and
instrumentation amplifier.
SCAN IF —The Scan IF module is a program-
mable state machine with analog front end
used to automatically measure linear or
rotational motion with the lowest possible
power consumption. The module features
support for different types of LC and resistive
sensors and for quadrature encoding.
SD16/SD16_A —The SD16/SD16_A module
features up to three 16-bit sigma-delta A/D
converters with an internal 1.2V reference.
Each has up to 8 fully differential multiplexed
inputs including a built-in temperature sensor.
The converters are second-order oversampling
sigma-delta modulators with selectable
oversampling ratios of up to 1024 (SD16_A)
or 256 (SD16).
SVS —The supply voltage supervisor (SVS) is a
configurable module used to monitor the AVCC
supply voltage or an external voltage. The SVS
can be configured to set a flag or generate a
POR reset when the supply voltage or external
voltage drops below a user-selected threshold.
Timer A/Timer B —Timer_A and Timer_B are
asynchronous 16-bit timer/counters with up
to seven capture/compare registers and four
operating modes. The timers support multiple
capture/compares, PWM outputs, and interval
timing and also have extensive interrupt
capabilities.
USART —The universal synchronous/asynchro-
nous receive/transmit (USART) peripheral
interface supports asynchronous RS232 and
synchronous SPI communication with one
hardware module. The MSP430F15x and
MSP430F16x USART module also supports I 2 C.
The module supports programmable baud rate
and independent interrupt capability for
receive and transmit.
USCI —The universal serial communication
interface (USCI) module features two
independent channels which can be used
simultaneously. The asynchronous channel
(USCI_A) supports UART mode, SPI mode,
pulse shaping for IrDA, and automatic baud
rate detection for LIN communications. The
synchronous channel (USCI_B) supports I 2 C
and SPI modes.
USI —The universal serial interface (USI)
module is a synchronous serial communication
interface with a data length of up to 16-bit and
can support SPI and I 2 C communication with
minimal software.
Part Number
PC Port
Contents Include
Devices Supported
Price
eZ430-F2013 USB
Interface and target board MSP430F20xx
$ 20
eZ430-T2012
3 eZ430 target boards
MSP430F2012
$ 10
New tools are listed in bold red .
Experimenter Boards (with Wireless Capability)
The MSP430FG4618/F2013 Experimenter Board from
Texas Instruments feature selected MSP430 devices
and additional hardware components for easy system
evaluation and prototyping. This is an ideal platform for
learning the MSP430 architecture, testing the
capabilities of range of MSP430 peripherals and
include an integrated header for plugging in
Low-Power RF (CCxxxxEMK) radio modules.
MSP430 Experimenter Boards
Embedded Controllers
Part Number Contents Include Devices Supported Price
MSP-EXP430FG4618 Board Only–(MSP-FET43OUIF sold MSP430FG4618 (on board), MSP430F2013 (on board), $ 99
separately)
Chipcon Wireless Modules (sold separately)
www.ti.com/msp430
New tools are listed in bold red .
Software Development Tools
Texas Instruments and third party developers offer
Integrated Development Environments (IDE) to program all
MSP430 devices. Full C-compilers are available enabling
customers to develop and debug code in seconds. Free,
code-limited versions of IAR Embedded Workbench
Kickstart and TI Code Composer TM Essentials are also
available for download.
Third Party IDEs include:
GCC mspgcc.sourceforge.net
HT Soft www.htsoft.com
IAR www.iar.com
Imagecraft www.imagecraft.com
Phyton www.phyton.com
Quadravox www.quadrovox.com
Rowley www.rowley.co.uk
Software Development Tools
Part Number
Contents Include
Devices Supported
Price
IAR-KICKSTART IAR Embedded Workbench
All
Free
MSP-CCE430 Code Composer Essentials
All
Free
MSP-CCE430PRO Full Version IDE – Code Composer
Essentials Professional
All
$ 499
www.ti.com/msp430
Czytelnicy, którzy chcą podjąć beznakładowo samodzielne próby z mikrokontrolerami MSP430 mogą skorzy-
stać z internetowego laboratorium udostępnionego przez firmę Texas Instruments elektronikom. Dzięki niemu
mamy dostęp do środowiska programistycznego firmy IAR oraz prostego symulatora zestawu uruchomieniowego
eZ430.
Funkcja __low_power_
mode_off_on_exit()
jest zdefiniowana w tym
samym zbiorze nagłówko-
wym intrinsic.h i służy do
budzenia i przejścia proce-
sora z trybu LPM3 do try-
bu aktywnego.
Asembler procesora
MSP430 jest przejrzysty
i łatwy do przyswojenia.
Zapis b i s . w oznacza
ustawienie bitu ( bit set )
w słowie ( Word ). Podobnie
clr.b oznacza zerowanie
wybranych bitów w bajcie.
Zapis #0A00h oznacza
stała zapisaną heksadecy-
malnie. Konstrukcja &IE1
oznacza 16–bitowy abso-
lutny adres rejestru IE1.
Zinterpretujmy przy-
kładowo instrukcję bic.
w #LPM3,0(SP) . Ozna-
cza ona wyzerowanie bitu
LPM3 na stosie wskazywa-
nym przez SP z przesunię-
ciem 0 ( czyli bezpośrednio
na szczycie stosu). W pro-
cesorze MSP430 podczas
wywoływania podprogramu
obsługi przerwania zapisuje
się rejestr statusowy i adres
powrotu na stosie.
Bity sterujące usypia-
niem i budzeniem proceso-
ra znajdują się w rejestrze
statusowym. Aby obudzić
procesor i wyjść ze sta-
nu LPM3 należy wyze-
rować bity maski LPM3.
Zwróćmy jeszcze uwagę
na instrukcję #include
„msp430x14x.h” w wier-
szu #6. Poleca ona włą-
czyć zbiór definicji reje-
strów procesora MSP. Jest
to ten sam zbiór i ten
sam zapis jak w języku C.
Jacek Majewski
Mariusz Kaczor
Krzysztof Kardach
64
Elektronika Praktyczna 10/2007
eZ430 Development Tool
Designing with the world’s lowest-power MCU just got even
easier with the new eZ430-F2013complete development tool
for only $20. The platform providesall the required hardware
and software in a portable USB stick enclosure. The
eZ430-F2013 includes both the Code Composer™
Essentials (CCE) and IAR Kickstart IDEs providing full
emulation with the option of designing a stand-alone system
or detaching the removable MSP430F2013 MCU target
board to integrate into an existing design.
153199098.267.png 153199098.278.png 153199098.001.png 153199098.012.png 153199098.023.png 153199098.034.png 153199098.045.png 153199098.056.png 153199098.067.png 153199098.078.png 153199098.089.png 153199098.100.png 153199098.111.png 153199098.122.png 153199098.133.png 153199098.144.png 153199098.155.png 153199098.166.png 153199098.177.png 153199098.188.png 153199098.199.png 153199098.210.png 153199098.215.png 153199098.216.png 153199098.217.png 153199098.218.png 153199098.219.png 153199098.220.png 153199098.221.png 153199098.222.png 153199098.223.png 153199098.224.png 153199098.225.png 153199098.226.png 153199098.227.png 153199098.228.png 153199098.229.png 153199098.230.png 153199098.231.png 153199098.232.png 153199098.233.png 153199098.234.png 153199098.235.png 153199098.236.png 153199098.237.png 153199098.238.png 153199098.239.png 153199098.240.png 153199098.241.png 153199098.242.png 153199098.243.png 153199098.244.png 153199098.246.png 153199098.247.png 153199098.248.png 153199098.249.png 153199098.250.png 153199098.251.png 153199098.252.png 153199098.253.png 153199098.254.png 153199098.255.png 153199098.257.png 153199098.258.png 153199098.259.png 153199098.260.png 153199098.261.png 153199098.262.png 153199098.263.png 153199098.264.png 153199098.265.png 153199098.266.png 153199098.268.png 153199098.269.png 153199098.270.png 153199098.271.png 153199098.272.png 153199098.273.png 153199098.274.png 153199098.275.png 153199098.276.png 153199098.277.png 153199098.279.png 153199098.280.png 153199098.281.png 153199098.282.png 153199098.283.png 153199098.284.png 153199098.285.png 153199098.286.png 153199098.287.png 153199098.288.png 153199098.002.png 153199098.003.png 153199098.004.png 153199098.005.png 153199098.006.png 153199098.007.png 153199098.008.png 153199098.009.png 153199098.010.png 153199098.011.png 153199098.013.png 153199098.014.png 153199098.015.png 153199098.016.png 153199098.017.png 153199098.018.png 153199098.019.png 153199098.020.png 153199098.021.png 153199098.022.png 153199098.024.png 153199098.025.png 153199098.026.png 153199098.027.png 153199098.028.png 153199098.029.png 153199098.030.png 153199098.031.png 153199098.032.png 153199098.033.png 153199098.035.png 153199098.036.png 153199098.037.png 153199098.038.png 153199098.039.png 153199098.040.png 153199098.041.png 153199098.042.png 153199098.043.png 153199098.044.png 153199098.046.png 153199098.047.png 153199098.048.png 153199098.049.png 153199098.050.png 153199098.051.png 153199098.052.png 153199098.053.png 153199098.054.png 153199098.055.png 153199098.057.png 153199098.058.png 153199098.059.png 153199098.060.png 153199098.061.png 153199098.062.png 153199098.063.png 153199098.064.png 153199098.065.png 153199098.066.png 153199098.068.png 153199098.069.png 153199098.070.png 153199098.071.png 153199098.072.png 153199098.073.png 153199098.074.png 153199098.075.png 153199098.076.png 153199098.077.png 153199098.079.png 153199098.080.png 153199098.081.png 153199098.082.png 153199098.083.png 153199098.084.png 153199098.085.png 153199098.086.png 153199098.087.png 153199098.088.png 153199098.090.png 153199098.091.png 153199098.092.png 153199098.093.png 153199098.094.png 153199098.095.png 153199098.096.png 153199098.097.png 153199098.098.png 153199098.099.png 153199098.101.png 153199098.102.png 153199098.103.png 153199098.104.png 153199098.105.png 153199098.106.png 153199098.107.png 153199098.108.png 153199098.109.png 153199098.110.png 153199098.112.png 153199098.113.png 153199098.114.png 153199098.115.png 153199098.116.png 153199098.117.png 153199098.118.png 153199098.119.png 153199098.120.png 153199098.121.png 153199098.123.png 153199098.124.png 153199098.125.png 153199098.126.png 153199098.127.png 153199098.128.png 153199098.129.png 153199098.130.png 153199098.131.png 153199098.132.png 153199098.134.png 153199098.135.png 153199098.136.png 153199098.137.png 153199098.138.png 153199098.139.png 153199098.140.png 153199098.141.png 153199098.142.png 153199098.143.png 153199098.145.png 153199098.146.png 153199098.147.png 153199098.148.png 153199098.149.png 153199098.150.png 153199098.151.png 153199098.152.png 153199098.153.png 153199098.154.png 153199098.156.png 153199098.157.png 153199098.158.png 153199098.159.png 153199098.160.png 153199098.161.png 153199098.162.png 153199098.163.png 153199098.164.png 153199098.165.png 153199098.167.png 153199098.168.png 153199098.169.png 153199098.170.png 153199098.171.png 153199098.172.png 153199098.173.png 153199098.174.png 153199098.175.png 153199098.176.png 153199098.178.png 153199098.179.png 153199098.180.png 153199098.181.png 153199098.182.png 153199098.183.png 153199098.184.png 153199098.185.png 153199098.186.png 153199098.187.png 153199098.189.png 153199098.190.png 153199098.191.png 153199098.192.png 153199098.193.png 153199098.194.png 153199098.195.png 153199098.196.png 153199098.197.png 153199098.198.png 153199098.200.png 153199098.201.png 153199098.202.png 153199098.203.png 153199098.204.png 153199098.205.png 153199098.206.png 153199098.207.png 153199098.208.png 153199098.209.png 153199098.211.png 153199098.212.png 153199098.213.png 153199098.214.png
Zgłoś jeśli naruszono regulamin