Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: batuhann - 26 Mayıs 2021, 08:34:36

Başlık: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: batuhann - 26 Mayıs 2021, 08:34:36
Herkese selamlar, aşağıdaki kod bloğunda bir sorun yaşıyorum. Atmel studio'da global değişken tanımlayıp ilk değerini atamama rağmen kod bloğu çalışmıyor. Bunun sebebi ne olabilir? Yardımlarınız için şimdiden teşekkürler.

#include <avr/io.h>
#define F_CPU 16000000UI


volatile unsigned short int X = 1;

int main(){
    while(1){
        if(X == 1){
           //buradaki kod bloğunu çalıştır
        }
    }
}
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: sifirzero - 26 Mayıs 2021, 09:45:13
Atmelden anlamiyorum ama if blogu gorevini yapiyor. If blogun icindeki komut nedir.if blogu boşta duruyor
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: sifirzero - 26 Mayıs 2021, 09:46:42
Kodlari yazar iken mesaj panosunda kod bloklarini kullanirmisin

printf("Merhaba sifirzero");
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: batuhann - 26 Mayıs 2021, 10:04:39
Hocam, kodu temsili olarak o şekilde yazdım. Normalde if bloğu içerisinde porta bağlı olan bir ledi yakma işlemini gerçekleştiriyorum. Örnek olarak aşağıdaki kod bloğunu düşünebilirsiniz. Buradaki X değişkenini global olarak main bloğu dışında tanımlayıp ilk değerini 1 olarak atamama rağmen mikrodenetleyiciye bu programı yüklediğimde led yanmıyor yani X değişkenine 1 değeri atanmıyor. Ancak main bloğu içerisinde bu değişkeni tanımlarsam kod düzgün şekilde çalışıyor fakat benim yapmak istediğim şey global değişken tanımlamak. PIC mikrodenetleyicileri veya STM mikrodenetleyicilerde böyle bir sorun ile karşılaşmadım fakat Atmel'de niyeyse böyle bir sorun ile karşılaştım

if(X == 1){
   PORTD = 0b00000001;
}
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: makdeniz - 26 Mayıs 2021, 21:16:50
Alıntı yapılan: batuhann - 26 Mayıs 2021, 08:34:36volatile unsigned short int X = 1;

volatile unsigned short X = 1;  olarak denermisiniz ?


Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: Tagli - 26 Mayıs 2021, 22:28:25
Çok ilginç bir durum. Acaba derleyici veya linker ayarlarında bir eksik olabilir mi? Normalde böyle bir değerin .data bölümüne kaydedilmesi ve işlemci çalıştığında main'e atlamadan değer atanmasının yapılması lazım. Belki bu start-up kodunu devre dışı bırakan bir ayar falan vardır. Bu değişkenin if bloğuna gelmeden debug yaparak değerini görmen mümkün mü?
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: fay_elektronik - 27 Mayıs 2021, 08:20:59
Burda gördüğüm bir sürü eksik var bi kere volatile yazmama gerek yok çünkü kesme yok unsigned short yazman yerine short yazman yeterli sadece 0-1 alabilir onun için negatif sayılara geçemez delay fonksiyonunu çağır o eksik global değişken tanımında mesala uint8_t i=3; yazman yeterli
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: Tagli - 27 Mayıs 2021, 09:54:56
@fay_elektronik , söylediklerin doğru ancak derleyicinin sıra dışı davranışının sebebini açıklamıyor.

@makdeniz , "unsigned short int" ile "unsigned short" aynı tür, aralarında bir fark yok.
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: batuhann - 31 Mayıs 2021, 12:27:38
Herkese selamlar, değerli cevaplarınız için çok teşekkür ederim. Belirli bir süre deneme ve araştırma yaptıktan sonra sorunun atmel studio 7.0 IDE'sinde benim kullandığım mikrodenetleyicinin (atmega2560) derleme ve program yükleme ayarlarıyla ilgili bir sorun olduğunu keşfettim. Belki daha önceden kullananlarınız vardır. Atmel studio'da tools sekmesi altında external tools ile programlamak istediğiniz MCU'ya yönelik bazı ayarlamalar yapmanız gerekiyor(commands,arguments) ve bu ayarlamalar farklı MCU' ya göre değişiklik gösterebiliyor. Şuanda belirttiğim kod MCU'ya ilgili ayarlamalar yapıldıktan sonra tekrar derlenip atıldığında düzgün şekilde çalıştı. Ancak bu seferde kafama bu ayarlama kısmı takıldı. PIC veya STM tarzı MCU'ları programlarken böyle bir ayar yapmıyordum fakat Atmel MCU'larda durum farklı sanırım ya da benim kullandığım programlayıcıya has bir sorun(usbasp programlayıcı kullanıyorum)
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: Tagli - 31 Mayıs 2021, 15:00:59
Değiştirdiğin ayarların hangileri olduğunu söylersen belki yorum yapmamız mümkün olur. Benim bilgisayarımda Atmel Studio yüklü değil, o yüzden kendim girip bakma imkanım yok. Ekran görüntüsü de ekleyebilirsin.
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: batuhann - 01 Haziran 2021, 22:59:59
Merhabalar, bahsettiğim external tools sekmesini aşağıdaki resimde görebilirsiniz.

Burada Title kısmına farklı programlama ayarları yaptığınızda hangisini kullanmak istediğini rahat bir şekilde hatırlayabilmek adına bir isim veriyorsunuz. Ben USBasp kullandığım için bu şekilde yazdım.

programlama ve debug kısımları için esas önemli nokta buradaki command ve arguments kısımlarına yazılacak parametreler.

Araştırdığım kadarıyla burada command kısmına avrdude.exe dosyasının uzantısını vermemiz gerekiyor.

ve esas sinir bozucu olan kısım. Arguments sekmesi, buraya programlama ile ilgili bazı ayarlamaları belirten parametrelerin girilmesi gerekiyor, aynı şekilde programlanacak MCU'ya ait bilgilerin girilmesi gerekli (benim durumumda atmega 2560 olduğu için "m2560" gibi bir parametre girilmesi gerekiyor)

Sanırım USBasp programlayıcısına has bir özellik olsa gerek, kullanılacak MCU'ya ait parametrelerin sürekli olarak değiştirilmesi gerekiyor. PICkit3 veya STlink tarzı programlayıcılarda bu tarz bir sorunla karşılaşmadım. Bu konu ile ilgili basit bir yöntem biliyorsanız tavsiyelerinize açığım.

(https://i.ibb.co/68Qvm9B/external-tools.png) (https://ibb.co/68Qvm9B)
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: Tagli - 02 Haziran 2021, 09:11:15
Benim anladığım kadarıyla IDE o programlayıcıyı doğrudan desteklemiyor. AVRDUDE isimli harici programı kullanarak programlayıcıya erişiyor. Bunlar da onunla ilgili ayarlar.

Ancak buradaki bir ayarın derleme işlemine etki etmemesi lazım. Ben olsam derleyici ayarlarından şüphelenirdim.

Neyse, sorun çözülmüş sonuçta...
Başlık: Ynt: Atmel Studio 7'de global değişken tanımlama sorunu
Gönderen: Kabil ATICI - 02 Haziran 2021, 19:48:57
atmel (microchip) programlayıcı kullanıldığı zaman, sorun çıkmadan kullanılmaktadır. örneğin, AVR MKII gibi... Galiba şu anda yeni programlayıcılar var.

Buradaki  işlemci kütüphane dosyası, özellikle sigorta ayarları için gerekiyor. Çünkü bazı işlemcilerde farklılık gösterebiliyor. Normalde bu parametreler orjinal programlayıcılarda derleme veya kod yazma esnasında  işlemci seçim dosyasından kullanılmakta.

Bu arada microchip'in orjinal olmayan programlayıcıları ile ilgili sorunları forumda az paylaşmadılar.