Register Seviyesinde Erişim Hakkında

Başlatan MrDarK, 11 Haziran 2015, 09:32:00

MrDarK

Alıntı yapılan: CLR - 11 Haziran 2015, 13:46:24
Bu problem erişememe problemi değil ki, editörde oluşan bir hatadan dolayı compile hatası.

Ayrıca erişilmeyecek registeri kullansan bile compiler onu hatasız derler ama işlemci ulaşamaz.

Muhtemelen

RTC->CR = 0x00040000;

bu satır içinde bir yerde editörün gördüğü ama senin göremediğin bir karakter vardır. Normal C'de program yazarkende karşılaşılabilir(registerlerle alakası yok), genelde o program parçacığını bir yerden koplaya yapıştır yaparken oluşur.

Veya heycanla program yazarken keyboard üzerinde saçma bir tuş basma kombinasyonu oluşursa böyle karakterler oluşabiliyor.
 
Çözümü ise, komple o satırı silip yeniden elle yazmak veya boşukları silip tekrar boşluk vermekle  çözülebilir. Komple satırı silersen aynı kodu bir yerden kopyala /yapıştır yaparsan yine çözülmeyebilir. 

Hocam üst mesajlarımda söylediğim şeyi tekrar edeyim. Aynı kodu komple kestim ve stm32l1xx_rtc.c kodu içine yapıştırdım hiçbirşey değiştirmeden. Orada derlenip çalışıyor aynı kod. Sinir olduğum kısım burası. Çok büyük olasılıkla emblocksla alakalı bir durum. Emblocks forumunda da bu konuyu açtım. Çözüldüğünde buraya da cevabı koyacağım tabi çözülebilirse :)

Dipnot şunu fark ettim ; diğer birimlerin de CR registerlarını derletemiyorum. LCD->CR ,RCC->CR hepsine aynı hatayı veriyor. CLR hocamın da dediği gibi bi şekilde CR 'yi bence hatalı görüyor IDE
Picproje Eğitim Gönüllüleri ~ MrDarK

z

CR adında bir değişken yada fonksiyon vs tanımladınmı main içinde?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MrDarK

#17
Alıntı yapılan: z - 11 Haziran 2015, 16:27:12
CR adında bir değişken yada fonksiyon vs tanımladınmı main içinde?


Fazlasıyla paralel düşünüyoruz hocam, hayır tanımlamadım :) Fakat yazılımım içinde aradım dediğiniz şeyi. Değişken tanımlamalarında kurallarım vardır. Global için g_ uint8 için ui8 eklerim mutlaka isimlerine.

Şimdi boş bir proje ürettim orada denedim aynı hatayı veriyor.

/*
**
**                           Main.c
**
**
**********************************************************************/
/*
   Last committed:     $Revision: 00 $
   Last changed by:    $Author: $
   Last changed date:  $Date:  $
   ID:                 $Id:  $

**********************************************************************/
#include "stm32l1xx.h"

int main(void)
{
  while(1)
  {

    RTC->CR = 0;        // Hata Veriyor.
    RTC->WPR = 0;        // Hata Vermiyor.
  }
}


"stm32l1xx.h" dosyasının içeriği
https://github.com/sebseb7/pentstm32l1/blob/master/core/stm32l1xx.h
Picproje Eğitim Gönüllüleri ~ MrDarK

z

Gıcık oldum bende.

Peki Global  CR adında bir değişken tanımlayabilirmisin?

Buna izin veriyormu?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yldzelektronik

Aldığın hata hep aynı mı?Boş projede aldığın hata mesajı da aynı ise boş projeyi paylaşırsan bakayım. Merak ettim nasıl bir şey ola ki.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

bocek

Anlaşılan CR yazımını tek bir karakter olarak yani 'Carriage Return'  yani <Enter> yani ASCII(13) olarak görüyor ve bundan dolayı hata veriyor.
Derleyicinin bir 'bug'ı tabii ama belki bir yerlerde ayarı filan vardır.
1 ya da 0. işte 'bit'ün mesele..

ErsinErce

bu tarz sıkıntılarda genelde bir önceki satırda sıkıntı olabiliyor
RTC->WPR 8 bitlik bir register mı?