Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: muat - 19 Ekim 2006, 22:13:49

Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 19 Ekim 2006, 22:13:49
Arkadaşlar ben bu yaz pic assembly yi öğrenmiştim.
Fakat okulda yapacağımız bi proje için atmega serisinden çipler kullanacağız, ve ben onu da öğrenmek istiyorum.
öğrenirken C dilini tercih edeceğim sanırım
öğrenmek için türkçe bir kitap ya da site biliyor musunuz?
ingilizce ya da almanca, ağır bir dili olmayan siteler de olabilir.
şimdiden teşekkürler.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 19 Ekim 2006, 23:15:29
http://www.linuxfocus.org/Turkce/November2004/article352.shtml

Bunda başka sitede birkaç proje daha var. Daha başka Türkçe kaynak var mıdır bilmiyorum?

Yabancı kaynaklara aşağıdaki siteden ulaşabilirsin.
http://r.webring.com/hub?ring=avr
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 29 Ekim 2006, 16:52:08
arkadaşlar sanırım yeteri kadar yabancı kaynak buldum ama türkçe olarak iyi bir kaynak arayışım devam ediyor. Eğer biliyorsanınz lütfen yazın. Şİmdiden teşekkür ederim.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 03 Kasım 2006, 17:21:17
Arkadaşlar yabancı kaynakları mümkün olduğunca zorlayacağım.
Ama elinizde örnek programlar varsa gönderebilir misiniz?
özellikle sadece bir pini on off yapan bi program arıyorum, çünkü picde başta olan ayarlamaların atmega serisinde nasıl olduğunu anlayamadım daha.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 03 Kasım 2006, 17:49:47
Buyur Assembly de basit bir kod.

http://blog.engin.hostiz.com/?p=31
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 03 Kasım 2006, 18:12:47
özür dilerim eklemeyi unutmuşum, c dilinde arıyorum

ama size bişi sorayım, bu atmel çiplerde picin  ilk başta bacaklarını yada  sigortalarını programladığın gibi bişi var mı
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 03 Kasım 2006, 18:43:22
Assembly de yaptıktan sonra C de yapamamak mümkün değil.

#include <avr/io.h>
.....
DDRB=...;
PORTB=...;
.....
bu kadar
.
Sigortalar PIC'deki gibi AVR'de de var. Win'de nasıl oluyor bilmem. Linux'da Uisp yükleyicisine parametre olarak ayarlıyorsun. Mesela


uisp -dlpt=/dev/parport0 -dprog=dapa -dpart=ATmega8 --wr_fuse_l=0xe3


--wr_fuse_l ve --wr_fuse_h olmak üzere sigortalar 2byte ile ayarlanır. 4MHz dahili osilatör kullanmak için gereli byte yukardaki gibi yüklenir. Ayrıntılı ayarlar için datasheet'e bakmalısın.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 03 Kasım 2006, 20:01:46
tekrar teşekkür ederim
benim c hakkındaki sorunum daha c nin dil kurallarını öğrenmedim, bu nedenle çok basit bi kod istiyordum.
Biraz c çalışıp sonra atmele geri dönim en iyisi
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 05 Kasım 2006, 19:04:48
Atmelin pic16f628 seviyesinde olan, üzerinde özellikle adc pinlerinin olmasını istediğim bir modelini tavsiye eder misiniz?
Karaköy'de rahatça bulunabilir olması tercihimdir.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 05 Kasım 2006, 20:16:55
16F628 seviyesi bir denetleyicisi varmı bilmiyorum. Atmega serisi en düşük özellikteki Atmega8 rahat bulunması lazım. 16F628 'e kıyasla daha iyi bir denetleyici. 16F628 de ADC yok zaten. Atmega8 de PDIP soket te 6 kanal 10bit ADC var.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 05 Kasım 2006, 23:30:02
atmega8 in 40 pinli olması beni korkutuyor. Başlangıç için 20 pin civarı bi çiple başlamak daha kolay gibi göründü bana. o yüzden pic16f628 gibi dedim.
attiny26 modeli uygun gibi gözüküyor, daha önce bunu kullanan var mı?
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 06 Kasım 2006, 00:06:58
Atmega8  28pindir 40 değil.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 06 Kasım 2006, 17:17:13
evet ben yanlış yere bakmışım, teşekkür ederim.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 08 Kasım 2006, 20:33:10
Ya ben analog bi veriyi okumak istiyorum, bunun için şöyle bi program yazdım,

{
char i;
ADCSRA |=(1<<ADEN); // adc enable
ADCSRA |=(1<<ADSC); // single conversation
ADMUX |=(1<<ADLAR); // üst 8 bit adch de
DDRA == 0;
_delay_loop_2(300);
i == ADCH;
}


fakat şöyle bi sorunum var, ben bu programı datasheetten anladığım kadarıyla yazdım, ama hangi pini okuduğunu nasıl seçeceğim?

not: bu programın bi kısmı, gerçeğinde include dosyaları falan ekli.

edit: daha sonra baktığım kadarıyla admux registerindeki ilk 5 biti ayarlayarak bu kanal seçiliyormuş.

bir soru da c hakkında, ADCL ve ADCH registerlerin içeriğini nasıl birleştirebilirim. Bİlirsiniz ki 10 bit okuyor ve bunların bi kısmınıADCH ye bi kısmını ADCL ye yazıyor. BUnları toplamanın yöntemini söylerseniz sevinirim.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 09 Kasım 2006, 02:09:14
ADMUX'un ilk 4 biti ile giriş kanalını seçiyorsun.

ADCH ile ADCL'yi birleştirmeye gelince, önce 16 bitlik işaretsiz bir tamsayı tanımlarsın. ADLAR bitini ayarlamana göre bu kaydedicilerden birini bu değişkenle "VEYA"  işlemine sokup kaydırdıktan sonra diğer kaydedici ile "VEYA" işlemine sokarsın.

ADLAR = 0 tanımlamak daha mantıklı olur tabi

unsigned int a=0;
a=a|ADCH;
a=a<<8;
a=a|ADHL;
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 09 Kasım 2006, 20:08:13
unsigned int a=0;
a=a|ADCH; //ADCH a ya yazılıyor
a=a<<8; //a 8 basamak kaydırılyor
a=a|ADHL; //ADHL a ya yazdırıyor


burayı bu şekilde anladım doğru mu?
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: engin_ - 09 Kasım 2006, 23:13:38
Evet doğru.

C öğrenilmesi zor bir değil. Türkçe kaynak bulmakta zorluk çekmessiniz. Öncelikle temel düzeyde C öğrenmeniz lazım.

Böyle kolay felan dedim ya gerçi bunun böyle olmadığını 10 yıllara varan bir mazi sonucu artık C'yi tam olarak öğrendiğini söyleyen üstadlarda var.

Şahsen C ile ilgili 3 kitap okudum daha C'yi herşeyiyle kullanmış değilim. Ayrıca daha öğrenmem gereken çok şey var.

Bu durumda sizin en azından bir kitabı baştan sona okumanız gerekiyor. Yoksa bu şekilde ilerlemek pekte sağlıklık değil.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 10 Kasım 2006, 14:46:30
şu anda katıldığım bi proje için c ye ihtiyaç duyuyorum, ve bu projenin 2 ay sonra bitmiş olması gerekiyor, bu nedenle c ye ortadan daldım.
Yanımda c öğrenen arkadaşlar da var, onlar en baştan başladı, fakat ben biraz aceleciyim, ve bu da işlerin kolaylaşmasını sağlıyor. Çünkü  ben büyük adım atmak isterken yaptığım hataları, onlar düzeltiyorlar. Ve birlikte çözmezsek buraya yazıyorum. Bu proje bittikten sonra c'ye yeni baştan başlayacağım.
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 12 Kasım 2006, 20:44:29
Ya bende hazır bir kit var, bunun lcd ekranında bir şey göstermek istiyorum, bunun için fonksiyonlar falan hazır olarak bulunuyor. Fakat nasıl kullanacağımı bulamadım.  

Açıklamada yazanları bunlar, almanca oldukları için türkçeye çevirdim:
void lcdInit(void); //Bununla lcd kuruluyor
void lcdHome(void); //Kursor lcd nin sağ üstüne geliyor
void lcdClear(void); //Lcd yi temizliyor
void lcdGotoXY(u08 row, u08 col); //Kursoru istenilen yere götürüyor
void lcdDataWrite(u08 data); //Karakteri lcd ye gönder
rprintfInit(lcdDataWrite); // lcd ye çıktı gönder (bunu bu şekilde anladım, yanlış olabilir


şimdi  ben bunlarla lcd de i değişkenini göstermek istediğimde nasıl bir yol izlemeliyim, hangilerini kullanmalıyım. Lcd yi kurmayı falan anladım, ama kursoru nasıl hareket ettireceğimi ve değişkeni nasıl yazdıracağımı anlamadım. Bir de "u08" in genel bir anlamı var mı

bu da kütüphane de lcd ile ilgili olan kısım:
http://www.rafb.net/paste/results/IaqH3r35.html
Başlık: Atmel programlamayı öğrenmek için yardım
Gönderen: muat - 16 Kasım 2006, 17:49:52
Yazdığım programı hexe çevirmeye çalışırken, "undefined reference" şeklinde bir hata alıyorum böyle bir hatanın nedeni ne olabilir?