Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
216
Cevap
48707
Tıklama
0
Öne Çıkarma
Cevap: ATMEL AVR ile ilgilenenler BURAYA!!! (10. sayfa)
L
17 yıl
Yarbay

selamlar.

ben avr ye merak sardım. cem hocama çok teşekkür ediyorum böyle harika ötesi bi siteyi bizlere hazırladığı için. biraz ccs c biliyorum picden. winavrdeki led yakma projesinde ;

while(1){ //sonsuz dongu
delay_ms(500);
PORTB &= ~_BV(0);//PORTB0'i sıfır yap
delay_ms(500);
PORTB |= _BV(0); //PORTB0'i bir yap
}
}

böyle bir örnek var. karmaşık gibi geldi bana. portlara direk 255 yada 0xFF atama şansımız yokmu?


Bu mesaja 2 cevap geldi.
A
17 yıl
Er

Merhaba,

Tabii ki PORTB=255; gibi bir ifade geçerli ancak bunun pek çok sakıncaları var. B portu üzerinde farklı pinlere bağlı olarak çalışan elemanlar olabilir. Örneğin, PB0 a bir buzzer ve PB7 ye de bir led bağlı, PORTB=255 gibi bir ifade PORTB nin tüm bitlerini 1 yapacağıdan buzzer da devreye girecek ve LED de yanacaktır. Osa biz buzzer a dokunmak istemiyorduk.

PORTB=1 gibi bir komutun anlamı şudur: PB0 1 olsun diğer tğm bacaklar 0. Bu genellikle istenen bir durum değildir, biz tüm portun değerini değil sadece belli bir bitin değerini değiştirmek isteriz.

PORTB&=~_BV(7); ifadesi karışık gibi gelebilir ama C diline hakim olan biri için karışık bir durum yok aslında. Buradaki tüm özellikleri inceleyelim:

1) C dilinde x+=1 ifadesi x in kendisine bir ekle demektir ve basic'deki x=x+1 ifadesi ile aynıdır. Benzer şekilde x*=2 ise basic'deki x=x*2 ifadesine denk gelir. Bizim ifademizdeki PORTB&=a; PORTB değişkeninin kendisini a değeri ile AND'le demektir. PORTB= PORTB & a; şeklinde de düşünülebilir.

2) _BV (bit value) bir makrodur ve _BV(3) ifadesi (1<<3) ifadesi ile aynıdır, 1 sayısını 3 kez sola kaydır (shift) demektir bunun da sonucu 0000 1000 dır. Bunu gözümüzde canlandırmak zor değil. _BV(0) ise (1<<0) ifadesine eşittir ve 1 sayısını 0 (sıfır) kez sola kadır demektir, yani 0000 0001 e eşittir. Sıfır kez sola kaydırmak, olduğu yerde bırakmaktır.

3) ~ değil ifadesi (bitwise not) önüne geldiği ifadenin tüm bitlerini ters çevirir. ~ 0000 0001 ifadesinin sonucu 1111 1110 dır.

Şimdi bu bilgiler ışığında PORTB &= ~_BV(0); ifadesini birlikte inceleyelim. _BV(0) ifadesinin binary 0000 0001 e eşit olduğunu biliyoruz, bunun terslenmiş halinin de 1111 1110 olduğunu öğrendik o halde ifademizi şu şekilde yazabiliriz:

PORTB&=0b11111110; (baştaki 0b binary sayıların önüne konur, aksi halde derleyici 11 (onbir) ve 0b11 (üç) sayılarını ayırt edemez) Bu noktadan sonrasını anlamak için ise lisede mantık kousunda öğretilenleri hatırlamak yeterli.

1 VE 1= 1
1 VE 0= 0
0 VE 1= 0
0 VE 0= 0


AND operatörüne tabi tutulan iki değerden biri 1 ise sonuç değişmiyor ama 0 ise diğer değer ne olursa olsun sonuç sıfır oluyor. Diyelimki PORTB bu işlemden önce 00110011 değerindeydi, PORTB&=0b11111110; işleminden sonra sadece sıfıncı bitte değişiklik olacak diğer bitler işlemden etkilenmeyecektir:

00110011
11111110
__________ VE
00110010

Görüldüğü gibi PB0 bire eşitken sıfır oldu diğer bit olduğu gibi kaldı. Eğer _BV makrosunu kullanmak istemiyorum derseniz aynı ifadeyi doğrudan yazabilirsiniz:

PORTb&=0b11111110;

Bu arada web siteme Atmega8 sigorta ayarlarını görsel olarak yapabileceğiniz bir excel dosyası koydum, download kısmında ulabilirsiniz.

Selamlar,

Cem Berik


http://www.berik.net





< Bu mesaj bu kişi tarafından değiştirildi Avrfreak -- 20 Nisan 2008; 19:43:23 >
Bu mesaja 1 cevap geldi.
L
17 yıl
Yarbay

cem hocam tekrar çok teşekkür ederim. ben c diline hakim değilim. o yüzden başlarda sorun yaşayacağım muhakkak. 255 atama şansımız yokmu derken tabiki eğer 4. biti 1 yapacaksam portb=255 diyemem. portb=%00010000 desem 4. biti 1 olmazmı? adaptasyon sorunu yaşıyorum anlayacağınız. yardımlarınız için teşekkür ederim


Bu mesaja 1 cevap geldi.
A
17 yıl
Er

PORTB=0b00010000 ifadesi PORTB'nin dördüncü bitini 1 yapar doğru ama sorun şurada diğer tüm bitleri de sıfır yapar. Eğer sadece PORTB'nin 4. pinine bir LED bağladıysanız bu şekilde kullanabilirsiniz.

Ya da PORTB'in tüm pinleirne bir LED bağladıysanız:

PORTB=0b10101010; ifadesi LED leri birer atlayarak yakar.

Ama doğru kullanım bir önceki mailimde açıkladığım gibidir. Bir programlama dilini öğrenmek bol pratik ve sabır gerektirir.

Selamlar,

Cem



http://www.berik.net


Bu mesaja 1 cevap geldi.
L
17 yıl
Yarbay

haklısınız hocam. peki sizce şimdilik proteus üzerinden simulasyon yaparak gitsem çok zararım olur mu?



M
17 yıl
Er

merhabalar bende Avr kullanmaya yeni baslayanlardanim..Atmega88 ile step motoru kontrol edicem.ama bu konuda biraz sorun yasiyorum cünkü AVR ile ilgili ne yazikki yeterli kaynak yok..daha önce Pic lerlede ugrasmadim.
yardimci olacak arkadaslara simdiden tesekkür ediyorum:)


Bu mesaja 1 cevap geldi.
T
17 yıl
Teğmen

ben atmel atmega 16yla l298 sürüp iki tane bi polar step motor sürüyorum yaptigim CNC de yardim ci olurum sorlarinda


Bu mesaja 1 cevap geldi.
A
17 yıl
Çavuş

avrfreak cem siten çalışmıyor.Abi tek türkçe kaynak oydu ne oldu sitene(www.berik.net) ???
Bi de arkadaşlar atmel avr ile ilgili türkçe kaynak var mı nette başka ????


Bu mesaja 1 cevap geldi.
A
17 yıl
Çavuş

site düzelmiş :) fakat başka türkçe kaynak var mı nette????


Bu mesaja 1 cevap geldi.
A
17 yıl
Er

Maalesef hosting hizmeti aldığım firma çok sorunlu, o yüzden sitem sıklıkla erişilemez hale geliyor. Sitenin çalışmadığının fark edilmesine çok şaşırdım ve sevindim

Bu arada sitemde Sıkça Sorulan Sorular ve Sizin Gönderdikleriniz adlı iki bölüm açmayı planlıyorum. Bu konuda katkılarınızı bekliyorum, eğer çalışan projelerinizi kodlarını ve resimlerini gönderirseniz yayınlamaktan mutluluk duyarım. Sıkça Sorulan Sorular kısmına da bana şimdiye kadar gelen maillerden bir şeyler derleyeceğim.

Selamlar,

Cem

http://www.berik.net


Bu mesaja 1 cevap geldi.
A
17 yıl
Teğmen
Konu Sahibi

avr programlama'yı hangi arayüzlerle yapıyosunuz.


Bu mesaja 1 cevap geldi.
A
17 yıl
Teğmen
Konu Sahibi

arkadaşlar avr ile mini sumo robot yapımına başlıyorum. bu konuda görüş, öneri ve yardımlarınızı bekliyorum.


Bu mesaja 1 cevap geldi.
A
17 yıl
Teğmen
Konu Sahibi

A
17 yıl
Er

slm arkadaşlar ben atmel avr hakında bilgim yok ama proje dersinden usb ile pc kontrol devresini aldım
biraz araştırdım bu devre at90s2313 devresiyle yapılıyor elimde döküman da yok ne yapacağımı bilmiyorum lütfen bana yardım edin

ozrek.ayhan@gmail.com


Bu mesaja 1 cevap geldi.
M
17 yıl
Er

öncelikle
atmel
adresinden data sheet te ulaşabilirisin.
ve cem arkadasın cem berik
sayfasını kullanabilirisin.
avr sigorta hesabını sigorta hesabı
buradan bulursun
bir de buradakileri göz gezdir
sorularını yaz, bilenler yardım edecektir...
kolay gelsin



G
17 yıl
Yarbay

assembly ile yapılacak işler basit giriş çıkış işlemlerinden öteye gidemez.ileride nasıl olsa kod hamallığı yapmaktan bunalacak ve daha yüksek seviyeli kodlama arayışına gireceksiniz.Bununda en iyi yolu C' dir.


Bu mesaja 1 cevap geldi.
A
16 yıl
Teğmen
Konu Sahibi

micro denetleyicileri öğrenmek için assembly dilini öğrenmek şart. çünkü içinde nelerin olup bittiğini anlamak için registerların, durum bitlerinin işleyişini öğrenmek için assenbly. assembly öğrendikten sonra bir yüksek seviyeli dil kullanılabilir. yüksek seviyeli dil kullanırken bile arada asm kodlara ihtiyacınız olacak. yani boşuna öğrenmişim demeyeceksiniz.


Bu mesaja 1 cevap geldi.
C
16 yıl
Yüzbaşı

merhaba arkadaşlar ve merhaba cem bey. ben sizin sitenizde buulunan usbasp usb programlayıcıyı yaptım. ancak devre üzerideki avr ye program atacak programlayıcım olmadığından yine sizin sitede bulunan lpt avr programlayıcıyı da yaptım. lpt programayıcı avr ye programı sorunsuz attı ancak bilgisayar usb portdan aygıtı görmedi. fishel.de sitesinden en son versiyonu indirip onu attım yine gömedi.birde devre üzerinde avr yokken bile usb ye taksam usb aygut tanınmadı uyarısı veriyor. birkaçincelemeden sonra bu uyarıya sebep olan elemanın devredeki1.5k lık direnç olduğunu buldum ve direncin bacağını kestim hala hiçbir şekilde usb aygıtı görmüyo pcb kristal vs herşey sağlam. devreyi usb ye taktığımda kırmızı ışık yanıyo. acaba sorun ne olabilir. şimdiden teşekküler.
eğer sorun hex dosyasıysa bu devreyi çalıştıran biri avr ye attığı hex i siteye eklerse sevinirim bu arada kullandığım avr atmega8-16pu


Bu mesaja 2 cevap geldi.
K
16 yıl
Yüzbaşı

Arkadaşlar AVR 182 ile ilgili bilgisiolan payşlaşabilirmi.Datasheetine baktım birşey anlamadım. Mikrokontrolmü yoksa sıfır geçiş dedektörümü.


Bu mesaja 1 cevap geldi.
C
16 yıl
Yüzbaşı

quote:

Orjinalden alıntı: kurusaray

Arkadaşlar AVR 182 ile ilgili bilgisiolan payşlaşabilirmi.Datasheetine baktım birşey anlamadım. Mikrokontrolmü yoksa sıfır geçiş dedektörümü.


AVR182 entegre kodu değil uygulama notu (application note) kodu. Bu uygulama notunda atmega163 kullanılmış.


Bu mesaja 1 cevap geldi.