Stm32 interrupt sorunu

Başlatan EMP_Otto, 14 Temmuz 2014, 10:31:29

EMP_Otto

Merhaba arkadaşlar.Stm32 de interruptta girdiğimde global olarak tanımladağım değişkenimin değeri değişiyor.Picte olduğu gibi interruptta girmeden önce değişkenlerimin değerini yedeklemek istiyorum.Nasıl yapabilirim acaba?
Bu işler zordur,özveri ister...

muhittin_kaplan

hocam kodları görebilirmiyiz ? değişmemesi gerekir.

strom

Hocam hangi degiskeninizin degeri degisiyor acaba? Butun global degiskenlerinin mi

EMP_Otto

#3
Hocam bana gerek olanın değiştiği kesin  :) .Global olarak tanımlı değişkenin değeri normalda 1 iken interruptta girince 124,191 gibi değerler alıyor.Onun için interrupta girmeden yedeklemem lazım

mesaj birleştirme:: 15 Temmuz 2014, 00:40:29

Muhittin hocam kodlar çok karışık ya :)

mesaj birleştirme:: 14 Temmuz 2014, 10:41:03

Ama kesme içerisinde kontrol ediyorum değiştiğinden eminim yani.
Bu işler zordur,özveri ister...

z

Interrupt rutininde sen degistiriyorsundur.

Yada stack alanini cok ama cok baslara tanimlamissindir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

EMP_Otto

Hocam hiçbir şeyi değiştirmedim ama global tanımladığım değişkenin değeri interrupt rutinine girince değişiyor.
Sorunumu global olarak tanımladığım değeri local tanımlayarak çözdüm.
Fakat yinede merak ediyorum.Stm32 de interrupta  girmeden önce değişkenlerimi nasıl yedeklerim yada interrupt geldiğini nasıl anlarım.
Bu işler zordur,özveri ister...

z

Öyle şey olmaz. İnterrupta girdin diye global değişken değişmez.

Hatalı bir şey yapıyorsun. Stack pointerin başlangıç değeri küçük ise ramın baştarafında duran verileri büyük adresden küçük adrese doğru ezer.

Startupdaki Stack adresini yukarılara taşı.

Aksi takdirde interrupta girmeden önce değişkenlerin hangi birisini saklayacaksın?

Sen şu stack değerine bir bak. Sorun orda görünüyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan


quarko

Alıntı yapılan: EMP_Otto - 14 Temmuz 2014, 10:31:29
Merhaba arkadaşlar.Stm32 de interruptta girdiğimde global olarak tanımladağım değişkenimin değeri değişiyor.Picte olduğu gibi interruptta girmeden önce değişkenlerimin değerini yedeklemek istiyorum.Nasıl yapabilirim acaba?

Interrupt'a girdin diye hiçbir global değişkenin değeri değişmez. Olsa olsa kodunda hata vardır. Hatanı bulamıyorsan, global değişkenini tanımladığın yerin önüne "volatile" sözcüğü ekleyip dene, o da olmazsa değişkenini yerel ve static olarak tanımlayıp deneyebilirsin...
"Vicdanın ziyası ulum-u diniyedir. Aklın nuru fünun-u medeniyedir. İkisinin imtizacıyla hakikat tecelli eder."

EMP_Otto

Sorunumu hallettim demiştim zaten :) Ama gercekten merak ettim Stm32 de interrupta girmeden değişkenlerimi yedeklemek istiyorum zevk için.Nasıl yaparım acaba?
Bu işler zordur,özveri ister...

z

Sorunu global degiskenleri local yaparak cozdum diyorsun ama bir "bug"in var bilesin.

Hic ummadigin bir zamanda sana geri donus yapacak ve ot yolacaksin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

EMP_Otto

Uyarınız için teşekkür ederim hocam
Bu işler zordur,özveri ister...