Şimdi Ara

ATMEL AVR ile ilgilenenler BURAYA!!! (8. 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 678910
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • atmel avr kullanıcılarına BASCOM-AVR programını öneriyorum. süper program...
  • arkadaşlar fuse bitlerini bir türlü değiştiremiyorum,avr-osp2 kullanıyorum verdiği hata aynen şu ***Selected device has no extended fuse bits!
    Leaving programming mode...
    yardımcı olabilirseniz çok sevinirim
  • Usartla ilgili kendi yaptıgım bir ornek.
    Cok temel bir ornek oldugunu dusunuyorum.
    Veri gonderiyor. Veriyi alıyor. Gelen veriyi mikroislemci RAM'ine yazıyor. Daha sonra farklı adreslerden okuma yapıyor. Ayrıca Vektorleri de kullandım.
    Ayrıca cok detaylı olmasa da protocol kullanımı da var.
    Aslında USART la yaptıgım son calısma. Buraya gelene kadar sadece Transmit sadece Receive, sadece Ram'a yazma... gibi ornekler de elimde isteyen olursa onları da koyabilirim.
    Bittikçe buraya baska kodlar eklerim
    Acıklamalar ingilizce kusura bakmayın :)

    Sagdan soldan kod bulup koymak yerine herkes yazdıgı kodu koyarsa daha faydalı olur bence
    Umarım faydalı olur...
    Kolay gele herkese...




    ; We are using the protocol to receive the data.
    ; We are sending 6 data to our Atmel from computer or another atmel
    ; First we are checking the start adress and the end adress if they are right than we checked the 2. adress
    ; if it is which we wanted than we are looking for 3 adress and 4. adress for checking for the adress that we
    ; will use and the 5 adress is data adress. We put the data to the vector which is defined with 3. and 4 adress.

    ;I used STK500
    ;PORTA ==> LEDs
    ;PORTC ==> Buttons


    .include "m16def.inc"




    .def Temp = R21




    .equ brp = 25; Baud rate parameter ; 4Mhz osc ==> 9600 baud

    .org 0x0000
    rjmp Reset

    .org 0x16
    rjmp RXC_INT ;receiving interrupt

    .org 0x1A
    rjmp TXC_INT ;transmitting interrupt











    Reset:

    ; Stack pointer
    ldi Temp, low(RAMEND)
    out SPL, Temp
    ldi Temp, high(RAMEND)
    out SPH, Temp

    ldi Temp, 0b11111111 ;Port A as output to the LEDs
    out DDRA, Temp

    ldi Temp, 0b11111110 ;PortD.8 as input for receiving PortD.7 as output for transmitting the others are not necessary
    out DDRD, Temp

    clr Temp
    out DDRC, Temp ;Port C as input (push buttons)



    init:
    ldi Temp, high(brp) ;Baud rate
    out UBRRH, Temp
    ldi Temp, low(brp) ;Baud rate
    out UBRRL, Temp






    ldi Temp, 0b11011000 ; transmitter and receiver enable ; tx and rx complete interrupt enable ; udrie disable
    out UCSRB, Temp


    ldi Temp, 0b10000110 ; 1 stop bit ; 8 bit character; parity mode disable ; async operation
    out UCSRC, Temp


    ldi Temp, 0xFF ; Leds are off
    out PORTA,Temp

    ldi r30, 0x90 ;Vector Z
    ldi r31, 0x00

    ldi r16, 0xAA
    sts $90,r16
    ldi r16, 0xD1
    sts $91,r16
    ldi r16, 0xB0
    sts $92,r16
    ldi r16, 0x00
    sts $93,r16
    ldi r16, 0xCC
    sts $94,r16
    ldi r16, 0xAB
    sts $95,r16






    ldi r28, 0xA0 ;Vector Y
    ldi r29, 0x00








    sei ; Enable All interrupts

    ldi R23,0
    ldi R24,0

    options:
    ldi R25,0 ; for clearing the register















    RXC_INT: ;receive interrupt function

    inc R24

    cpi R24,6 ; counting for six data
    breq RXC_END ; if it is 6 receiving finish
    brne Write_data ; while receiving data also we are writing the data to ram
    reti


    Write_data:

    in Temp, UDR ; take the data from UDR
    st Y+,temp ; put the data to Y vektor
    reti






    RXC_END: ; After receiving the 5 data

    in Temp, UDR ; Take the last data
    st Y+,Temp ; Write the last data

    ldi r28, 0xA0 ; Vector Y low bits
    ldi r29, 0x00 ; Vector Y high bits
    clr R24



    lds Temp,$A0
    cpi Temp,0xAA ; Checking the first adress for justifying the protocol
    breq cont_end_adress ; If it is equal to value that we determined before go to check the end adress
    brne Error_start_adress ; If it is not equal go to ERROR at starting adress
    reti




    cont_end_adress:
    lds Temp,$A5
    cpi Temp,0xAB ; Checking the last adress for justifying the protocol
    breq OK ; If it is equal to value that we determined before go to OK
    brne Error_end_adress ; If it is not equal go to ERROR at the last adress
    reti


    Error_start_adress:
    lds Temp,$A5
    cpi Temp,0xAB ; Checking the last adress
    brne Error_all_adresses ; If it is not equal go to ERROR all adress
    ldi Temp,0x0F ; If it is equal we have an error only at first adress, give error message
    out PORTA,Temp ; The error message : First 4 leds are on
    reti

    Error_end_adress:
    ldi Temp,0xF0
    out PORTA,Temp ; The error message : Last 4 leds are off
    reti

    Error_all_adresses:
    ldi Temp,0x00
    out PORTA,Temp ; The error message : All leds are on
    reti

    OK:
    ldi Temp,0xAA
    out PORTA,Temp



    rjmp second_adress ; After checking the first and last adress Check the Second adress
    reti


    second_adress:

    lds Temp,$A1
    cpi Temp,0xD1 ; Control whether the second adress is D1 or D2
    breq write_data_to_ram ; If it is D1 write the data to Ram

    cpi Temp,0xD2 ; Control whether the second adress is D1 or D2
    breq check_requesting_adress ;If it is D2 check for requesting adress that we receive
    ldi Temp,0b01111110 ; If second adress is neither D1 nor D2 give an error message
    out PORTA, Temp ; First and Last leds are on
    reti

    check_requesting_adress:
    lds Temp,$A2 ; Take the requesting adress low bit
    mov R26,Temp ; Put it in X vektor Low bit


    lds Temp,$A3 ; Take the requesting adress high bit
    mov R27,Temp ; Put it in X vektor High bit

    ld Temp, X ; Put the data which is in X vektor to the Temp


    sts $94,Temp ; Put the data to adress $94 of Z vektor
    com Temp
    out PortA,Temp ; Change the Leds according to the data as Hex view

    ldi Temp,0xAA ; Put the starting adress
    sts $90,Temp

    ldi Temp,0xD3 ; Put D3 that we understand we are trasmitting data which is request adress
    sts $91,Temp

    sts $92,R26 ; Put the requestind adress low bit
    sts $93,R27 ; Put the requestind adress high bit

    ldi Temp, 0xAB ; Put the last adress
    sts $95,Temp



    ld Temp,Z+ ;SENDING the Z VEKTOR
    out UDR, Temp
    inc R23
    reti






    write_data_to_ram:

    lds Temp, $A2 ; Defining the X Vector adress
    mov R26,Temp

    lds Temp,$A3 ; Defining the X vector adress
    mov R27,Temp

    lds Temp,$A4 ; Take the data from adress
    st X,Temp ; Put it in X vektor
    ld Temp,X
    com Temp
    out PORTA,Temp ; Out as hex to the LED




    reti


    TXC_INT: ; Transmitting interrupt
    cpi R23, 0
    breq TXC_OUT
    cpi R23, 6
    breq TXC_END
    ld Temp,Z+
    out UDR, Temp
    inc R23



    TXC_OUT:
    reti


    TXC_END:
    ldi r30, 0x90 ;Defining Vector Z
    ldi r31, 0x00
    clr R23
    reti



    < Bu mesaj bu kişi tarafından değiştirildi gurbuzcagri -- 3 Ağustos 2007; 19:31:04 >




  • Merhaba arkadaşlar,

    C ile Mikroişlemci (PIC ve AVR) programlama konusunda oldukça deneyimliyim ve bu bilgileri konuya ilgi duyan insanlarla paylaşmak için bir web sitesi hazırladım (www.berik.net). Siteye fırsat buldukça bir şeyler ekliyorum.

    Selamlar,

    Cem
  • yardım lütfen

    arkadaşlar ben bu linktediki devreyi yaptım ama ampermetre kısmı yazılımsal olarak en fazla 1 amper gösteriyor.sizden ricam bu devredekiyazılım benim için değiştirip tekrar yüklermizsiniz.şimdiden teşekkürler.
  • AVR Programlama – Yeni Başlayanlara Öğütler

    Hangi işlemciyle başlamalıyım?
    Yeni başlayanlara Atmega serisi işlemcilerden Atmega8’i tavsiye ederim. Yeterli sayıda çıkışı, 8Kb program hafızası, 1Kb SRAM, 512 Byte EEPROM, 8Mhz’e kadar çıkan dahili kristal, harici kristal ile 16MHz hıza erişebilme, 2 adet 8 bit ve bir adet 16 bit Timer, 6 kanal AD çevirici (2,56v dahili referans voltaj), SPI, TWI, PWM, USART modülleri ile pek çok proje için yeterli bir işlemcidir. Ayrıca Atmega serisi işlemciler ISP(In System Programmable) özelliğine sahiptir.

    Bu konuda İnternette Türkçe kaynak var mı?
    Bildiğim kadarıyla şu an da en iyi kaynak benim web sitem www.berik.net

    PIC serisi işlemcilere göre avantajları neler?
    Mimarisi gereği AVR işlemciler her bir saat darbesinde bir işlem yaparlar, oysa PIC için 4 saat vuruşuna ihtiyaç vardır. Bu da hızı etkiler, örneğin 16Mhz’de çalışan bir Atmega8 işlemcisi 16MIPS (Million Instruction Per Second – Saniyede 16 Milyon İşlem) hıza ulaşırken aynı saat hızında çalışan PIC16F877 4 MIPS hızına çıkabilir. Ayrıca WinAVR çok gelişmiş bir C derleyicidir ve özgür yazılımdır.

    Atmega8 için programlayıcı nereden bulabilirim?
    Teorik olarak ISP özelliği olan işlemcileri programlamak için her hangi bir devreye ihtiyaç yoktur, işlemcinizi devreden hiç çıkarmadan programlayabilirsiniz. Ancak bu tehlikeli bir yoldur, çünkü programlama esnasında işlemcinizi ve hatta bilgisayarınızın çıkışlarını yakabilirsiniz. Bu yüzden basit bir buffer devresi kullanarak işlemcinizi güvenli bir şekilde programlayabilirsiniz. Benim sitemde, 74HC244 entegresiyle yapılmış böyle bir devre şemasını bulabilirsiniz.

    Hangi dilde programlamalıyım?
    Bu konuda birkaç seçenek var ama bence C dilini tercih etmelisiniz. WinAVR mükemmel bir derleyicidir (aslında AVR-GCC derleyicisinin Windows’a uyarlanmış halidir). Kurulumu çok basittir. Web sitemdeki yanıp sönen LED projesini derleyip işlemciye yükleyerek ilk adımı atabilirsiniz. Tamamen Assembly dilinde program yazmaya çalışmak sizi çok yoracaktır. Programlarınızı C de yazmak, sadece zamanlama veya hızın kritik olduğu kısımları Assembly de yazmak en mükemmel yoldur. WinAVR, Assembly ve C dosyalarını birlikte sorunsuz bir şekilde derleyebilir.

    İlk aşamada harici kristal kullanmam lazım mı?
    Hayır, Atmega8 işlemcisi fabrikada 1Mhz dahili kristal kullanacak şekilde ayarlanmıştır. Sigortaların nasıl kullanıldığını anlayıncaya kadar bu şekilde kullanmanızı tavsiye ederim.

    Yazdığım programı işlemciye nasıl aktaracağım?
    Yine bedava olan PonyProg programını kullanabilirsiniz.

    İşlemcinin çıkışlarına neler bağlayabilirim?
    İşlemcinin çıkışları 15-20mA’lik bir akım sağlayabilirler, bu da bu çıkışlara bu miktarlarda akım çeken LED’lerden başka bir şey bağlamamanız gerektiği anlamına gelir. Yeni nesil yüksek akım çeken LED’leri doğrudan çıkışlara bağlarsanız işlemciniz bozulur. 20mA’in üzerindeki yükler için mutlaka uygun transistorlar kullanmanız gerekir.


    TWI ve I2C aynı şey midir?
    I2C Philips tarafından geliştirilmiş olan bir iletişim protokolüdür. TWI (Two Wire Interface) ise Atmega8’in içinde bulunan aynen USART gibi bir donanımdır. Bu donanım I2C protokolü için kullanılabilir. Dolayısıyla eğer bir işlemcide TWI donanımı varsa I2C protokolünü bu donanım üzerinden gerçekleştirebilirsiniz, eğer yoksa donananımın yapacağı işleri sizin yazılımla taklit etmeniz gerekir. Bu konu USART örneği için daha anlaşılırdır, eğer işlemciniz de USART donanımı mevcut ise RS232 iletişimini donanım üzerinden yapmak hem daha hızlı ve hem de daha kolaydır ve işlemciyi meşgul etmez. Siz sadece donanıma ait yazmaçlara (register) gerekli komutları ve değerleri yazarsınız USART donanımı data iletişimini kendisi halleder (örneğin hassas zamanlama sorunları ile boğuşmazsınız). Eğer USART donanımı yoksa RS232 protokolü için gerekli tüm işlemleri yazılımla halletmek zorunda kalırsınız ve işlemci iletişim sonuçlanıncaya kadar başka bir işle uğraşamaz. Donanım modülleri ile ilgili son örnek de PWM (Pulse With Modulation) ‘dir. Eğer PWM sinyalini yazılımla yaparsanız işlemci sürekli olarak bu PWM sinyalini şekillendirmek için uğraşacak, ancak vakit buldukça diğer işlerle uğraşabilecektir, oysa PWM modülünü kullanırsanız bu modülle ilgili yazmaçlara PWM sinyali ile ilgili parametreleri bir kere yazdıktan sonra artık işlemci bir değişiklik olana kadar PWM modülü ile ilgili bir iş yapmayacaktır.

    Program yazmak için AVRStudio’ya ihtiyaç var mı?
    Hayır, WinAVR Programmers Notepad ile gelir, programlarınızı bu editörde yazıp editörden çıkmadan programınızı derleyebilirsiniz. AVRStudio programına hata ayıklama (debugging) işlemleri için ihtiyacınız olacak. AVRStudio’nun içindeki simülatörle yazdığınız kodu adım adım izleyebilir, hataları tespit edebilirsiniz.

    AVR-GCC komut setini nerede bulabilirim?
    AVR-GCC, GCC derleyici koleksiyonun bir parçasıdır ve AVR işlemciler için uyarlanmıştır. Bütün C dillerinin temeli aynıdır, C dilinde komut setinden bahsetmek pek doğru olmaz, C dilinde kütüphanelerden bahsedilir. Örneğin hangi C derleyicisinde hangi ortam (AVR, Windows, Linux) için program yazarsanız yazın

    While (koşul){…..}

    ifadesi aynıdır. Ancak her ortam için farklı fonksiyonlar, dahası bu fonksiyonlardan oluşan kütüphaneler olacaktır. AVR-GCC’nin temel kütüphanesi AVR-Libc ’dir. Bu kütüphanenin linkini ve el kitabını sitemde bulabilirsiniz.

    Selamlar,

    Cem




  • quote:

    Orjinalden alıntı: agum

    arkadaşlar hiçmi avr ile ilgilenen yok. pic ile bende yıllarca uğraştım. evet çok güzel bir mikrodenetleyici. ama artık yeni entegrelerin çalışmasını öğrenme zamanı. pic'e bu kadar bağlı olunduğunu hiç düşünmemeiştim. ayrıca pic'e göre, avr'nin fiyatı çok daha uygun. avr serilerinden atmega8515 çipini aldım fiyatı 7,5 ytl. bunun muadili saylabilecek pic16f877a 12 ytl'ye kadar çıkan fiyatta satılıyo. gerçi atmega8515 pic16f877a daha gelişmiş ama hemen hemen aynı işi yapıyorlar. ayrıca bu entegreyi programlamak için 3 diyod, 4 direnç ve 1 adet transistör yetiyor.


    quote:

    Orjinalden alıntı: agum
     ATMEL AVR ile ilgilenenler BURAYA!!!



    @agum eğer bu devre ise lütfen orjinalini yani okunabilir olanını bana gönderebilirmisin. Foruma herkez için eklerim.

    e-mail:electrogenius@gmail.com




  • slmlar ben 89s51 kullandım programlama kartı diye işi yok direk çalıştığı karttan programı yüklüyebiliyorum işlemciyi verenarkadaşlar onun bellek mimarisini falanda verirlerse ve programlanmasınıda verirlerse çok iyi olur dileyene mail atabilirim erhan_koclar hotmail bu benim msn adresim ilgili arkadaşlarla bilgimi paylaşırım..
  • electrogenius arkadaşım o devre bilgisayarımı formatlandığım için bende yok. basic avr system diye aratırsan orjinaline ulaşabilirsin.
  • 89s51 in avr serisi mikrodenetleyicilerden farkı nedir? bilen paylaşabilir mi?
  • ATtiny2313 entegresinin OSC konfigürasyonunu anlamadım. bilenler lütven paylaşsın.
  • Böyle birşey buldum umarım işine yarar...
  • quote:

    Orjinalden alıntı: agum

    ATtiny2313 entegresinin OSC konfigürasyonunu anlamadım. bilenler lütven paylaşsın.


    CKSEL0 CKSEL1 CKSEL2 ve CKSEL3 sigortalarini tablodaki seceneklere gore programlayacaksiniz, oncelikle harici mi dahili mi kristal kullanacaksiniz? Tam olarak neyi anlamadiginizi soylerseniz daha cok yardimci olabilirim.. Dikkat: 0(sifir) programlanmis, 1 programlanmamis anlamina gelir.

    C ile AVR Programlamawww.berik.net

     ATMEL AVR ile ilgilenenler BURAYA!!!


     ATMEL AVR ile ilgilenenler BURAYA!!!



    < Bu mesaj bu kişi tarafından değiştirildi Avrfreak -- 25 Eylül 2007; 0:32:04 >




  • teşekkürler
  • Sayın arkadaşlar asm yi hex olarak derlemek için avr studio 4 programını kullanmayı tam olarak bilen var mı?Eğer mümkünse bu kodları hex olarak derleyebilirmisiniz.Şimdiden teşekkürler.Saygılarımla.
  • Sayın arkadaşlar clone PI -2 adlı devreyi yaptım,ATMEGA32 yerine ATMEGA8535 kullanmak için, yazılımı avr disassembler programı ile modifiye edip, atmega8535 için düzenleyip, hex olarak çeviri yapmak istedim, başaramadım.İki entegrede aynı yapıya ve aynı bacak sayılarına sahip.Data olarak inceledim tüm özellikleri aynı.Elime atmega32 olmadığı için atmega8535 şeklinde değiştirip nasıl programlama yapabilirim.Yardımlarınız için şimdiden teşekkürler.Saygılarımla.
  • selam arkadaşlar ya ben atmega32 arıyorum, ankarada konya sokağa baktım bulamadım nerden temin edebillirim yardımcı olursanız çok sevinirim
  • Selam

    Arkadaşlar yaklaşık 2 yıldır pic ler ile ilgileniyorum. Fakat artık ciddi bir şekilde AVR ile çalışmaya başlamalıyım. Kafamatakılan birkaç sorun var

    16MHz frekansında çalışan bir pic mi daha hızlıdır yoksa AVR mi?

    Mesela pic te bsf bcf komutlarınını kullanarak elde ettiğimiz en yüksek frekanlı kare dalganın frekansı mı yoksa aynı işlemi avr de de yaparak elde ettiğimiz karedalganın frekansı mı büyüktür?

    Bir de genel bir atmel usb programlayıcı devresine ihtiayacım var şöyle çoğu atmeli programlayabilen bir programlayıcı... Tavsiye edebileceğiniz bir usb programlayıcısı varsa çok sevinirim. Saygılar
  • Hız konusunda pek bir fikrim yok ama ben aşağıdaki adresteki programlayıcıyı kendim yapmayı düşünüyorum. Göz atabilirsin, ayrıca belki biliyorsundur, avr lerle ilgili güzel bir site :http://www.avrfreaks.net/

    bu da progamlayıcı:
    http://tuxgraphics.org/electronics/200705/article07052.shtml




  • linkler için teşekkürler bu konuyu iyice araştıracağım.
  • 
Sayfa: önceki 678910
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.