Atmel Programlama Hakkında

Başlatan ds01, 23 Ocak 2016, 13:33:57

ds01

Atmel programlama ile ilgili birkaç sorum olacak.Siz ustalarımın yardımlarını bekliyorum.

Benim elimde şu an arduino var üzerindeki atmega328p yi çıkarıp arduino ide si ile değilde atmel studio(avr c) ile programlamak istiyorum.

1-)Atmel studio ile arduino idesi ile programlamam  arasında ne fark var? (Entegredeki Hız,performans vs.)
2-)Atmega içerisindeki bootloaderi silmek mi lazım avr c de  kullanabilmek için?
3-)Bu bootloader yavaşlığa mı sebebiyet veriyor?

mehmet

1) Arduino ide de hazır kütüphaneler ve tanımlamalar olduğu için
her şey kolay. Diğer türlü her kütüphaneyi ve tanımlamaları siz
yapmanız gerekecek...

2) Zaten başka bir hex yüklerseniz her şey silinir. Sizin dikkat
etmeniz gereken sigorta ayarları...

3) Bootloader; resetten sonra bir süre bekler, program atılıyor
mu diye. Bu sadece resetten sonraki yavaşlıktır. Yoksa Arduino
16MHz.(16Mips) olarak çalışmaktadır...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ds01

#2
Alıntı yapılan: mehmet - 23 Ocak 2016, 13:54:21
1) Arduino ide de hazır kütüphaneler ve tanımlamalar olduğu için
her şey kolay. Diğer türlü her kütüphaneyi ve tanımlamaları siz
yapmanız gerekecek...

2) Zaten başka bir hex yüklerseniz her şey silinir. Sizin dikkat
etmeniz gereken sigorta ayarları...

3) Bootloader; resetten sonra bir süre bekler, program atılıyor
mu diye. Bu sadece resetten sonraki yavaşlıktır. Yoksa Arduino
16MHz.(16Mips) olarak çalışmaktadır...

mehmet hocam çok teşekkür ederim verdiğiniz bilgiler için

mesaj birleştirme:: 23 Ocak 2016, 14:53:03

Peki hocam atmel studioda yapılan bir uygulamayı yada kütüphaneyi arduino ide  içinde kullanabilirmiyim 

mehmet

Ufak tefek değişikliklerle kullanmak mümkün olabilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Kabil ATICI

Arduino yavaşlığı konusunda, biraz lafa karışacağım, kusura bakmayın.

Normalde Arduino çalışmasını ram üzerinde konusu ile ilgili olarak ayrılmış tamponlar üzerinden yürütüyor.
Yani en basitinden siz
digitalWrite (1,LOW);
komutunu (fonksiyonunu) işleme koyduğunuzda işlemci bunu bir yığın komut ile yerine getiriyor... (1. nolu bacağı lojik 0 seviyesine çeker).
void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t timer = digitalPinToTimer(pin);
	uint8_t bit = digitalPinToBitMask(pin);
	uint8_t port = digitalPinToPort(pin);
	volatile uint8_t *out;

	if (port == NOT_A_PIN) return;

	// If the pin that support PWM output, we need to turn it off
	// before doing a digital write.
	if (timer != NOT_ON_TIMER) turnOffPWM(timer);

	out = portOutputRegister(port);

	uint8_t oldSREG = SREG;
	cli();

	if (val == LOW) {
		*out &= ~bit;
	} else {
		*out |= bit;
	}

	SREG = oldSREG;
}


tabii bu kadar işlem için işlemci yavaşlık olarak geri dönüyor.
normalde  bu atmel işlemcide yanlış hatırlamıyorsam portd üzerinde pd1 pinine denk düşerki bu işlemi
PORTD &=0x01;
ile yerine getirebiliriz. (Tabi aynı şey arduino üzerinde de yapılabilir.)

Bu sadece bir örnek, daha programlamada neler olduğunu kütüphaneleri inceleyerek görebilirsiniz.
ambar7