Arama butonu
Bu konudaki kullanıcılar: 1 misafir
216
Cevap
48718
Tıklama
0
Öne Çıkarma
Cevap: ATMEL AVR ile ilgilenenler BURAYA!!! (9. sayfa)
R
18 yıl
Çavuş

Atmega88 programlamak için pratik bir programlayıcı arıyorum. Acaba bu konuda bilgisi olan var mı? Parallel porttan flan yapılmış bir kaç şey gördüm ama tam anlayamadım. Yardımcı olabilecek var mıdır?


Bu mesaja 1 cevap geldi.
U
18 yıl
Binbaşı

arkadaşlar acaba bu linkteki gibi usb den hem atmel hem de pic serilerini programlayabileceğimiz bir programlayıcı bulabilirmiyiz
http://www.winpic800.com/index.php?option=com_content&task=blogcategory&id=19&Itemid=88
bu linktekinin hex dosyası malesef yok


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

arkadaşlar attiny de 128 khz lik iç osc'yi kullanan varmı. bilen varsa bu osc'nin ne işe yaradığını bana anlatsın lütfen.


Bu mesaja 1 cevap geldi.
S
18 yıl
Yarbay

arkadaşlar win avr yi indirdim avr studioyuda indirdim her ikisinide kurdum.hazır bi asm kod var elimde derlemek istiyorum ama bir türlü beceremedim nereden nasıl derleniyor.bi açıklasanız sevinirim


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

YENİ PROJE OLUŞTURARAK KAYDETMEN GEREKİYOR. BİRDE DOSYAYI KAYDETTİĞİN YERİN, WINAVR YE YAKIN OLMASI LAZIM. AKSİ TAKTİRDE GÖREMİYOR.



A
17 yıl
Er

Merhaba,

WinAvr ile bir program derlemek için AvrStudio programına ihtiyaç yok. WinAVR programını yüklediğinde Programmer's Notepad adında basit ama güzel bir editörün bilgisayarına yüklendiğini göreceksin. Bu editörle bir proje yaratıp yazdığın C programını ve Make dosyasını projeye eklemen gerekir. Daha sonra editorun Tools menusundeki Make All komutunu çalıştırman yeterli.

Basit bir yanıp sönen led programının nasıl derlendiğini web sitemden görebilirsin.

www.berik.net





< Bu mesaj bu kişi tarafından değiştirildi Avrfreak -- 12 Mart 2008; 23:58:17 >

T
17 yıl
Teğmen

Atmelle yazilmiş bi örnek seri port iletişimi codu olan varsa elinde gönderebilirmi ?


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

Örnek Rs232 projesini ve açıklamasını http://www.berik.net/avr/projeler.html linkinde Seri Bağlantı projesi altnda bulabilirsin.

Selamlar,


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

o siteye baktim lcd yi grafik LCD yi filan çaliştirdim atmega8 le ama RS232 li kodu çalişmiyo sanirim ve de ayak baglantılarınıda vermemiş .. bilgisi olan bi arkadaş varsa atmelde usart kontrolu nasil yapiliyo anlatirsa çok sevinizz pic te çok kolay ama atmele yeni başladim biraz cik değişik.


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

Arkadaşım,

o site benim ve sitedeki her proje denenmiş çalışan projelerdir. Bacak bağlantısına gelince, projenin açıklamasında "hardware" usart modülünün kullanıldığı yazıyor, o halde işlemcinin el kitabına bakıp USART bacaklarının (RXD ve TXD) sırasıyla D0 ve D1 olduğu görülür.

Selamlar,

Cem



< Resime gitmek için tıklayın >


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

niye kiziyosun ya :(
bende oraya baktim zaten oraya bagladim ... diyer projeler çaliştiği için bu niye çalişmiyo diye düşündüm o geldi aklima ...

biraz açiklama verirsen usart la ilgili daha iyi olur bence...
mesela 4800 le kullanmişssin
9600 la kullanmak iin
orda UBRRL=0x0C; yazmişsin onu 06 yapsak 9600mi olur neye göre yazin bunlari filan ...


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



Formül:

UBRR=(fosc/16.BAUD)-1
fosc=kristal hızı (hz cinsinden)
BAUD=veri transfer hızı (bit/saniye)

örneğin 8 Mhz'de çalışan işlemcide 9600 BAUD elde etmek için
UBRR=(8.000.000/16x9600)-1 => (8/153600)-1=51

UBRR UBRRH (high) ve UBRRL (low) olmak üzere iki bye'dan oluşur.

Bu konuda yardımcı olacak avrcalc adında bir program var, onu siteme koyacağım, selamlar.


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

teşekkür ler saoll koyda indirelim biran önce :)
bide bişi sorucam biz direk print f scan f filan kullanmadan usart a tek karakter nasil yazip okuruz ...
bu winavr C++ mi kullaniyo

stdin=stdout=&usart

nasil bişiydir ya iki tane = olur mu bi satirda
bunun sintax ini nerden bula biliriz ...


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

bide atmelle ilgili bi kaynak kitap önere bilirmisiniz içinde ileri seviye projeler olan ....
ingilizce türkçe fark etmez...


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

UartPutChar fonksiyonu zaten bunu yapıyor. Bu fonksiyonu tek başına kullanarak printf ifadesini kullanmadan usarta karakter gönderebilirsin.

int UartPutChar(char c,FILE* stream) { //RS232 ye bir karakter gonderir
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}


Aşağıdaki satır ile uartstr adlı ve FILE tipi bir değişkene bu fonksiyonu geçiyoruz:

FILE uartstr = FDEV_SETUP_STREAM(UartPutChar, UartGetChar, _FDEV_SETUP_RW);

Aşağıdaki satırda ise C nin stdout ve stdin giriş çıkış değişkenlerini tanımladığımız uaststr değişkeninin adresine yönlendiriyoruz.,

stdout=stdin=&uartstr;

Bu konu gerçekten zordur, anlamazsan üzülme.

Gelelim soruna, C de herzaman çoklu atama yapabilirsin.

char x=y=z=128;

ifadesiyle 3 adet char tipinde x,y ve z isimli değişken yaratılır ve bunlara 128 başlangıç değeri atanır. Aşağıdaki ifadeyle aynıdır.

char x=128;
char y=128;
char z=128;


bu C dilinin yüzlerce güzelliğinden biridir

WinAVR kısmen C++ 'ı destekler. (Tabii AVR-GCC demek daha doğrudur, çünkü WinAVR nin temelindeki compiler GCC kolleksiyonunun bir parçası olan AVR-GCC dir.)

Web siteme printf'siz bir örnek de eklememde fayda var sanırım.



A
17 yıl
Er

AvrFreaks sitesinde önerilen kitaplar var ben hiçbirini almadım, ama eminim tavsiye edilen kitaplar iyi kitplardır. (Ben kitap almadım derken avr için yazılmış bir kitap almadığımı kast ediyorum, bu işler okumadan olmaz )

Öncelikle C dilini iyi öğrenmekte fayda var.


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

#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h> //standart giris cikis

int UartPutChar(char c);
int UartGetChar();

int UartPutChar(char c) {
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}

int UartGetChar() {
char c;
loop_until_bit_is_set(UCSRA,RXC);
c = UDR;

return c;
}

void mcu_init(void){

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x06;
}

int main(void){
char a;
mcu_init();
a=65;
while(1){
UartPutChar(a);
}
}


bu programda bi hata varmi seri porttan sürekli a karakterini göndermek istiyorum
1 mhz iç osiltor kullanarak senin formulu hesapladim 5.51 çikti onun için 6 yazdim ...


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

#include <avr/io.h>  

int UartPutChar(char c);

int UartPutChar(char c) {
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}

void mcu_init(void){

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C; //4800 baud @1mhz
}

int main(void){
char a;
mcu_init();
a=65;
while(1){
UartPutChar(a);
}
}


Öncelikle kodu yukarıdaki gibi kısaltabilirsin. Baud rate'den bahsetmemişsin, bu yüzden 5 rakamını nereden bulduğunu bilmiyorum. 4800 baud için 1 mhz'de bu değer 12 yani 0x0C dir.

Avrcalc programını web sitemin download kısmına ekledim. Bu arada parametre almayan bir fonksiyonu () şeklinde tanımlayamazsın, parantez içinde VOID ifadesinin olması gerekir, aynı fonksionu çağırırken () ile çağırabilirsin. Bir başka önemli not her kristal hızında her baud rate i sağlıklı olarak elde edemezsin, avrcalc hata oranını da verir. Örneğin 1 mhz de 9600 baud elde etmeye kalkarsan hata oranı %7 olur, 4800 baud için ise hata oranı %0.2 dir.


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

1 mhz de 9600 boud rate kullan dim
data sheet i okudum
u2x biti mi ne varmiş onu 1 yaptigin zaman ki o da
UCSRA=0x02; yaptigin da oluyo %0.2 hatayla 9600 la 1 mhz de çalişa biliyo


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

Buradaki inceliği gözden kaçırmamak gerek, belli bir kristal hızıyla belli bir baud rate i elde etmek için yapacağın ayarlamanın sınırları var bu matematiksel bir gerçek. RS232 saat hızının katlarında bir kristal kullanırsan her baud rate de %0 hata elde edersin.

U2X biti iletişim hızını iki katına çıkarır, hatayı yarıya indirmez (tam tersine hata olasılığını artırır). Alıcı devrenin RS232 saat hızı çok kesin ise U2X kullanılabilir, dahili 1 Mhz kristal hızında çalışan bir Atmega dan PC ye veri gönderiyorsan sorun yok ama tersi olursa iletişim duvara çarpabilir.

Senin söylediğnde doğru olan kısım şu, %0.2 hata ile çalışan 4800 baud rate i iki ile çaptığımız için hata oranı aynen kaldı ama hız iki katına çıktı. Ancak herşeyin bir bedeli var, üreticilerin bunu seçenek olarak koymasının sebebi işte bu bedel. Datasheet diyorki

Setting this bit will reduce the divisor of the baud rate divider from 16 to 8, effectively
doubling the transfer rate for asynchronous communication. Note however that the
Receiver will in this case only use half the number of samples (reduced from 16 to 8) for
data sampling and clock recovery, and therefore a more accurate baud rate setting and
system clock are required
when this mode is used.


yani alıcı tarafın saat hızı çok kesinse (örneğin bir PC) bunu kullan diyor. Sadece Atmegadan PC'ye veri gönderiyorsan sorun yok.


Bu mesaja 1 cevap geldi.