Şimdi Ara

ATMEL AVR ile ilgilenenler BURAYA!!! (9. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
217
Cevap
0
Favori
48.662
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 7891011
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • 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?
  • 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
  • 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.
  • 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
  • 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.
  • 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 >
  • Atmelle yazilmiş bi örnek seri port iletişimi codu olan varsa elinde gönderebilirmi ?
  • Örnek Rs232 projesini ve açıklamasını http://www.berik.net/avr/projeler.html linkinde Seri Bağlantı projesi altnda bulabilirsin.

    Selamlar,
  • 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.
  • 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



     ATMEL AVR ile ilgilenenler BURAYA!!!
  • 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 ...


  • 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.
  • 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 ...
  • bide atmelle ilgili bi kaynak kitap önere bilirmisiniz içinde ileri seviye projeler olan ....
    ingilizce türkçe fark etmez...
  • 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.




  • 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.
  • #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 ...
  • #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.




  • 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
  • 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.




  • 
Sayfa: önceki 7891011
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.