avrdude programının konsol üzerinden nasıl kullanılacağını anlatmaya çalışacağım. Bir uzman değilim. Ancak bildiğim kısımları elimden geldiğince açıklamak istiyorum. Linux kullanıcısı olarak bu ortam üzerinden anlatacağım. Ancak Linux üzerinde yapılanların tamamı diğer işletim sistemleri için de geçerli olabilmektedir.
Sadece işletim sistemine özgü değerler değişecektir: Linux için gecerli olan usb seri dönüştürücüleri yolu; /dev/ttyUSBx şeklindedir. Bu MS Win için ise COMx: olarak değiştirilecektir.
Konsolda;
1
|
avrdude
-
c
avr910
-
p
m8
-
P
/
dev
/
ttyUSB0
-
b
115200
-
t
|
yazıp entere basıyoruz ve avr içine terminal olarak bağlanıyoruz. Burada -c ile programlayıcıyı gösteriyoruz, farklı programlayıcılar için uygun değerler yazılacaktır. Örneğin usbasp .
Programlayıcı desteğini;
1
|
avrdude
-
c
help
|
ile öğrenebilmekteyiz.
-p m8 ; ATmel Mega8 işlemcisi olduğunu gösteriyor. İşlemci desteğini de;
1
|
avrdude
-
c
avr910
-
p
help
|
ile öğrenebiliriz. Yine -c seçeneği değeri kendi programlayıcımızın ismi olacak.
-P seçeneği; benim kullandığım programlayıcı seri port üzerinden çalıştığı için hangi yolu kullandığını belirttim. MS Win için bu; COM1:, COM2: gibi olabilir.
Ancak bazı programlayıcılar sadece usb üzerinden bağlandıkları için bu seçeneği kullanmaya gerek yoktur. Örneğin; usbasp …
-b ile seri portun hızını belirtiyoruz. Yine aynı şekilde kullandığımız programlayıcının özellikleri ile alakalı. Belkide kullanılmayabilir.
-t ile de mcu ya terminal ile bağlanıyoruz.
Şimdi mcu içerisine terminal üzerinden olarak bağlanalım:
1
|
avrdude
-
c
avr910
-
p
m8
-
P
/
dev
/
ttyUSB0
-
b
115200
-
t
|
komutu ile;
1
2
3
4
|
avrdude
:
AVR
device
initialized
and
ready
to
accept
instructions
Reading
|
################################################## | 100% 0.00s
avrdude
:
Device
signature
=
0x1e9307
avrdude
|
cevabı gelecek.
1
|
avrdude
>
help
|
yazarsak;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
>>>
help
Valid
commands
:
dump
:
dump
memory
:
dump
<
memtype
>
<
addr
>
<
N
-
Bytes
>
read
:
alias
for
dump
write
:
write
memory
:
write
<
memtype
>
<
addr
>
<
b1
>
<
b2
>
.
.
.
<
bN
>
erase
:
perform
a
chip
erase
sig
:
display
device
signature
bytes
part
:
display
the
current
part
information
send
:
send
a
raw
command
:
send
<
b1
>
<
b2
>
<
b3
>
<
b4
>
parms
:
display
adjustable
parameters
(
STK500
only
)
vtarg
:
set
<
V
[
target
]
>
(
STK500
only
)
varef
:
set
<
V
[
aref
]
>
(
STK500
only
)
fosc
:
set
<
oscillator
frequency
>
(
STK500
only
)
sck
:
set
<
SCK
period
>
(
STK500
only
)
spi
:
enter
direct
SPI
mode
pgm
:
return
to
programming
mode
verbose
:
change
verbosity
help
:
help
?
:
help
quit
:
quit
Use
the
'part'
command
to
display
valid
memory
types
for
use
with
the
'dump'
and
'write'
commands
.
|
çıktısını alırız.
dump ya da d, belirtilen hafıza tipinin içeriğini gösterir. write ya da w, belirtilen hafıza tipinin belirlenen bölgesine belirtilen değeri yazar.
sig
mcu imzasını verir, yani
mega8
,
mega168,
vs. olduğu anlaşılabilir…
part
mcu açıklamaları ve memory(hafıza) tiplerini alabiliriz.
Diğerlerini fazlaca bilmiyorum. Kurcalamıyorum.
Şimdi:
part
ile aldığımız sonuca göre;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
avrdude
>
part
>>>
part
AVR
Part
:
ATmega8
Chip
Erase
delay
:
10000
us
PAGEL
:
PD7
BS2
:
PC2
RESET
disposition
:
dedicated
RETRY
pulse
:
SCK
serial
program
mode
:
yes
parallel
program
mode
:
yes
Timeout
:
200
StabDelay
:
100
CmdexeDelay
:
25
SyncLoops
:
32
ByteDelay
:
0
PollIndex
:
3
PollValue
:
0x53
Memory
Detail
:
Block
Poll
Page
Polled
Memory
Type
Mode
Delay
Size
Indx
Paged
Size
Size
#Pages MinW MaxW ReadBack
--
--
--
--
--
-
--
--
--
--
-
--
--
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
--
--
-
--
--
--
--
-
eeprom
4
20
128
0
no
512
4
0
9000
9000
0xff
0xff
flash
33
10
64
0
yes
8192
64
128
4500
4500
0xff
0x00
lfuse
0
0
0
0
no
1
0
0
2000
2000
0x00
0x00
hfuse
0
0
0
0
no
1
0
0
2000
2000
0x00
0x00
lock
0
0
0
0
no
1
0
0
2000
2000
0x00
0x00
calibration
0
0
0
0
no
4
0
0
0
0
0x00
0x00
signature
0
0
0
0
no
3
0
0
0
0
0x00
0x00
|
hafıza tiplerini görebiliyoruz. Bizi ilgilendirenler özellikle hafıza tipleri.
eeprom
malum üzere kalıcı hafıza,
flash
yine malum program
belleğini göstermektedir.
lfuse
, ve
hfuse
mcu’ nun çalışma şartlarını belirliyor. Bazı mcu’ larda
efuse
‘ de bulunmakta.
Bir de son olarak
lock
hafıza tipini görüyoruz. Diğerleri yine şu anki konumuz dışında.
Size
sütunu, ilgili hafızalar için ayrılmış byte miktarını gözlemleyebiliyoruz.
d (dump) komutu ile hafıza içerisini okuyabiliyorduk. Mesela;
1
2
3
4
5
6
7
|
avrdude
>
d
eeprom
>>>
d
eeprom
0000
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0010
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0020
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0030
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
|
d komutunun kullanımı:
1
2
3
|
avrdude
>
d
>>>
d
Usage
:
dump
<
memtype
>
[
<
addr
>
<
len
>
]
|
şeklindedir. Eklenti belirtilmemişse <addr> değeri en son nerede kalmış ise bu noktadan itibaren 0x3F (Dec:64) değer gösterir.
Dikkat edilirse dump komutu eklentileri köşeli parantez içerisindedir. Bunun anlamı bu değerler seçimliktir. Ama biri kullanılacaksa diğeri de kullanılmalıdır. Yani ya hiç seçenek kullanmayacağız yada tüm seçenekleri kullanacağız.
Biz değer verirsek:
1
2
3
4
5
|
avrdude
>
d
eeprom
0xA0
0x1E
>>>
d
eeprom
0xA0
0x1E
00a0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00b0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
|
bu hal görülebilir.
eeprom yerine flash, hfuse, lfuse, lock, vb. yazmak mümkün olabilmektedir…
w (write) komutu ise benzer ekler alacaktır.
1
2
3
|
avrdude
>
w
help
>>>
w
help
Usage
:
write
<
memtype
>
<
addr
>
<
byte1
>
<
byte2
>
.
.
.
byteN
>
|
d komutunda eklentiler [] köşeli parantez içerisindeydi. w komutunda ise yok. K öşeli parantez içerisindekiler istenirse yazılmayabilir. Ancak ön seçimlik değerler kabul edilmiş olur.
w komutunda ise yazılması gerekenler; hafıza tipi, adres ve hafızaya eklenecek b irer byte lik değerler.
Alışkanlık olarak değerleri hexadecimal olarak girmeye çalışıyorum. Ama bazen decimal olarak da girebiliyoruz. Her iki yöntemi de ayrı ayrı ya da karışık olarak kullanmak mümkün olmaktadır.
Eeproma bir byte değer yazmak için;
1
2
|
avrdude
>
w
eeprom
0x00
0x0f
>>>
w
eeprom
0x00
0x0f
|
kullanılabilir.
Çıktısı yoktur. Yazılıp yazılmadığını kontrol edebilmek için:
1
2
3
|
avrdude
>
d
eeprom
0x00
0x01
>>>
d
eeprom
0x00
0x01
0000
0f
|
.
|
|
şeklinde
çıktı alınabilir.
Gelelim lock hafıza tipine. Ben genelde direkt kilitleme yapıyorum. Diğer ek özelliklere ihtiyacım olmadı kilitleme ile ilgili.
1
2
3
|
avrdude
>
d
lock
>>>
d
lock
0000
3f
|
?
|
|
lock hafıza tipi zaten bir byte yer kaplamaktaydı.
Hafıza tiplerinin ne kadar yer kapladıkları part komutu ile okunabilmekte idi. part komutu çıktısındaki tabloda “ Size ” sütunu.
Şimdi flash ve eeprom çıktılarını görelim:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
avrdude
>
d
flash
>>>
d
flash
0000
d8
cf
f2
cf
f1
cf
f0
cf
ef
cf
ee
cf
ed
cf
ec
cf
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0010
eb
cf
ea
cf
e9
cf
e8
cf
e7
cf
e6
cf
e5
cf
e4
cf
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0020
e3
cf
e2
cf
e1
cf
00
00
00
00
00
00
00
00
00
00
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0030
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
avrdude
>
d
eeprom
>>>
d
eeprom
0000
ae
c5
b0
d3
a1
a2
06
45
55
aa
12
24
33
67
20
32
|
.
.
.
.
.
.
.
.
.
.
.
|
0010
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0020
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0030
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
|
Şu an okuma/yazma açık. Kod koruma için lock hafızasına 0x00 değerini yazıyoruz.
1
2
|
avrdude
>
w
lock
0x00
0x00
>>>
w
lock
0x00
0x00
|
Artık mcu kod korumaya girdi. Ancak okuma yapabiliriz.!!! Bakalım neler olacak?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
avrdude
>
d
flash
0x00
0x100
>>>
d
flash
0x00
0x100
0000
00
00
01
01
02
02
03
03
04
04
05
05
06
06
07
07
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0010
08
08
09
09
0a
0a
0b
0b
0c
0c
0d
0d
0e
0e
0f
0f
|
.
.
.
.
.
.
|
0020
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0030
18
18
19
19
1a
1a
1b
1b
1c
1c
1d
1d
1e
1e
1f
1f
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0040
20
20
21
21
22
22
23
23
24
24
25
25
26
26
27
27
|
!
!
""
##$$%%&&''|
0050
28
28
29
29
2a
2a
2b
2b
2c
2c
2d
2d
2e
2e
2f
2f
|
(
(
)
)
*
*
++
,
,
--
.
.
//|
0060
30
30
31
31
32
32
33
33
34
34
35
35
36
36
37
37
|
0011223344556677
|
0070
38
38
39
39
3a
3a
3b
3b
3c
3c
3d
3d
3e
3e
3f
3f
|
8899
::
;
;
<<
==
>>
?
?
|
0080
40
40
41
41
42
42
43
43
44
44
45
45
46
46
47
47
|
@
@
AABBCCDDEEFFGG
|
0090
48
48
49
49
4a
4a
4b
4b
4c
4c
4d
4d
4e
4e
4f
4f
|
HHIIJJKKLLMMNNOO
|
00a0
50
50
51
51
52
52
53
53
54
54
55
55
56
56
57
57
|
PPQQRRSSTTUUVVWW
|
00b0
58
58
59
59
5a
5a
5b
5b
5c
5c
5d
5d
5e
5e
5f
5f
|
XXYYZZ
[
[
\
\
]
]
^
^
__
|
00c0
60
60
61
61
62
62
63
63
64
64
65
65
66
66
67
67
|
`
`
aabbccddeeffgg
|
00d0
68
68
69
69
6a
6a
6b
6b
6c
6c
6d
6d
6e
6e
6f
6f
|
hhiijjkkllmmnnoo
|
00e0
70
70
71
71
72
72
73
73
74
74
75
75
76
76
77
77
|
ppqqrrssttuuvvww
|
00f0
78
78
79
79
7a
7a
7b
7b
7c
7c
7d
7d
7e
7e
7f
7f
|
xxyyzz
{
{
||
}
}
~
~
.
.
|
avrdude
>
d
eeprom
0x00
0x100
>>>
d
eeprom
0x00
0x100
0000
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
|
.
.
.
.
.
.
.
.
.
.
.
|
0010
10
11
12
13
14
15
16
17
18
19
1a
1b
1c
1d
1e
1f
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0020
20
21
22
23
24
25
26
27
28
29
2a
2b
2c
2d
2e
2f
|
!
"
#$%&'()*+,-./|
0030
30
31
32
33
34
35
36
37
38
39
3a
3b
3c
3d
3e
3f
|
0123456789
:
;
<=
>
?
|
0040
40
41
42
43
44
45
46
47
48
49
4a
4b
4c
4d
4e
4f
|
@
ABCDEFGHIJKLMNO
|
0050
50
51
52
53
54
55
56
57
58
59
5a
5b
5c
5d
5e
5f
|
PQRSTUVWXYZ
[
\
]
^
_
|
0060
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
|
`
abcdefghijklmno
|
0070
70
71
72
73
74
75
76
77
78
79
7a
7b
7c
7d
7e
7f
|
pqrstuvwxyz
{
|
}
~
.
|
0080
80
81
82
83
84
85
86
87
88
89
8a
8b
8c
8d
8e
8f
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0090
90
91
92
93
94
95
96
97
98
99
9a
9b
9c
9d
9e
9f
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00a0
a0
a1
a2
a3
a4
a5
a6
a7
a8
a9
aa
ab
ac
ad
ae
af
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00b0
b0
b1
b2
b3
b4
b5
b6
b7
b8
b9
ba
bb
bc
bd
be
bf
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00c0
c0
c1
c2
c3
c4
c5
c6
c7
c8
c9
ca
cb
cc
cd
ce
cf
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00d0
d0
d1
d2
d3
d4
d5
d6
d7
d8
d9
da
db
dc
dd
de
df
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00e0
e0
e1
e2
e3
e4
e5
e6
e7
e8
e9
ea
eb
ec
ed
ee
ef
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00f0
f0
f1
f2
f3
f4
f5
f6
f7
f8
f9
fa
fb
fc
fd
fe
fe
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
avrdude
>
d
lock
>>>
d
lock
0000
00
|
.
|
|
Dikkatimizi çeken nedir?
Mcu kod korumaya girdikten sonra okuduğumuz değerler artık bu şekildedir. lock hafızası da artık 0x00 değerini saklamaktadır.
Peki kod koruması nasıl kaldırılabilir?
Sadece
erase
komutu ile
lock
hafızası
0x3F
değerine gelir.
Ancak
flash
ve
eeprom
hafızalarındaki tüm veri kaybedilmiş olacaktır.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
avrdude
>
erase
>>>
erase
avrdude
:
erasing
chip
avrdude
>
d
flash
0x00
0x100
>>>
d
flash
0x00
0x100
0000
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0010
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0020
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0030
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0040
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0050
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0060
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0070
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0080
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0090
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00a0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00b0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00c0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00d0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00e0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00f0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
avrdude
>
d
eeprom
0x00
0x100
>>>
d
eeprom
0x00
0x100
0000
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0010
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0020
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0030
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0040
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0050
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0060
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0070
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0080
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
0090
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00a0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00b0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00c0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00d0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00e0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
00f0
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
ff
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
|
avrdude
>
d
lock
>>>
d
lock
0000
3f
|
?
|
|
Son olarak mcu terminalini q komutu ile terk ediyoruz…
Mehmet BİLGİ
23-07-2015