Donanım Haber Forum
Ana Sayfa | Kayıt ol | Profilim | Gelen Kutusu | DH Hız Aşırtma VT | Adres Defteri | Email'le üyeliklerim | Benim forumlarım | Fotoğraf Albümleri
Favorileriniz | Üyeler | Arama | SSS | Şikayet listesi | Uyarı listesi | Nick işlemleri
Cevap: ATMEL AVR ile ilgilenenler BURAYA!!!

İlgili konuları bak: (bu forumda | tüm forumlarda)

Bu isimle girdiniz: Guest
Bu konudaki kullanıcılar: hiç
  Basılabilir versiyon
Tüm forumlar >> [Donanım / Hardware] >> Elektronik >> Cevap: ATMEL AVR ile ilgilenenler BURAYA!!! Sayfa: <<   < önceki  1 2 3 [4]
Giriş
Mesaj << Daha eski konu   Daha yeni konu >>
cidik

Mesaj: 2419


 20 Nisan 2008; 2:58:40 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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?

_____________________________

Avrfreak

 

Mesaj: 14


 20 Nisan 2008; 19:40:07 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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 >


_____________________________

cidik

Mesaj: 2419


 20 Nisan 2008; 20:30:37 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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

_____________________________

Avrfreak

 

Mesaj: 14


 20 Nisan 2008; 21:24:30 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.


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

_____________________________

cidik

Mesaj: 2419


 20 Nisan 2008; 23:07:43 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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

_____________________________

mktrspalte

 

Mesaj: 1


 20 Mayıs 2008; 14:06:15 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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:)

_____________________________

tur218

Mesaj: 185


 22 Mayıs 2008; 2:19:40 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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

_____________________________

vosvos450

 

Mesaj: 14


 23 Mayıs 2008; 15:30:53 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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 ????


_____________________________

vosvos450

 

Mesaj: 14


 24 Mayıs 2008; 18:51:25 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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

_____________________________

Avrfreak

 

Mesaj: 14


 24 Mayıs 2008; 21:36:03 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

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

_____________________________

Sayfa:   <<   < önceki  1 2 3 [4]
Tüm forumlar >> [Donanım / Hardware] >> Elektronik >> Cevap: ATMEL AVR ile ilgilenenler BURAYA!!! Sayfa: <<   < önceki  1 2 3 [4]
Buraya git:



Donanım Haber Video İnceleme
GSmart i350 Video
GSmart i350 Video
A-Data PD7 8GB USB Bellek
A-Datanın büyük kapasiteli yüksek hızlı USB belleği
 


Yeni mesajlar Yeni mesajlar yok
Popüler konu, yeni mesajlar ile Popüler konu, yeni mesajlarsız
Kilitli yeni mesajlar ile Yeni mesajlar olmadan kilitli
 Yeni mesaj at
 Mesaja cevap at
 Yeni anket aç
 Oy kullan
 Kendi mesajımı sil
 Kendi konumu sil
 Mesaja değerlendir
 Mesajımı DH blog sayfama ekle
 
Reklamlar




















Videolarımız
 
Asus P5E3 ve Asus vga

AMD Puma Lansmanı ASUS