arm microcontroller reset sorusu

Başlatan Karamel, 13 Nisan 2015, 11:05:53

Karamel

Merhaba. Suan okulda srm32f030 un refence manuel ini okuyorum. reset kisimlarina geldim. manuel dan anladigim kadariyla arm microcontrollerlarda donanim ayri ayri software resetlenebiliyor. Mesela spi. i2c yada portd gibi. bunu gorunce cok heyecanlandim vede hemen aklimda bir soru isareti olustu. donanimin takildigini yazilimsal olarak anlayabiliyormuyuz? yani mesela portd nin takildigini. islevini yerine getiremedigini yazilimsal olarak anlayabilirsek portd ye yazilimsal reset atip. Sonrada yeniden configure edip sistem durmadan calismasina devam ettirebiliriz?

MrDarK

Kısım kısım donanım takılmalarını anlayabilir misin çok emin değilim fakat genel olarak donanım takılmalarını Watch Dog ile anlayabiliyorsun.

Zaten ARM'da çekirdek haricinde olan (spi,i2c,rtc) gibi şeyler harici olarak bağlandığı için init de init fonksiyonları ile açıp kapatman mümkün. (Bir nevi donanıma reset atmak gibi)
Picproje Eğitim Gönüllüleri ~ MrDarK

Gökhan BEKEN

Donanımsal bir hata oluştuğu zaman,
void assert_failed(uint8_t* file, uint32_t line)

şeklinde tanımlanmış hata kesmesine gidiyor.
Özel mesaj okumuyorum, lütfen göndermeyin.

yamak

Her donanımda bu olmuyo.Yani bunun için kendin bi yol bulmalısın.
Fakat I2C,SMBus vs gibi donanımlarda var.Özellikle SMBus'da timeout'lar belirleyebiliyosun.Örneğin slave'lerden bi tanesi clock streching işlemini uzatmış olabilir.Bu gibi durumlarda atıyorum SCL hattı 5 ms low da kalırsa interrupt oluşturup,reset attırabilirsin.Hatta kendisi hattı otomatik release de edebiliyo.

Karamel

#4
Alıntı yapılan: Gökhan BEKEN - 13 Nisan 2015, 11:16:14
Donanımsal bir hata oluştuğu zaman,
void assert_failed(uint8_t* file, uint32_t line)

şeklinde tanımlanmış hata kesmesine gidiyor.

hocam bu sekil degilde. hangi bit e neler oluyor seklinde anlatabilirmisiniz? ben st librarylerini bilmiyorum da.....  :-\

mesaj birleştirme:: 13 Nisan 2015, 14:01:09

Bu arada reset ile ilgili birsey daha kesfettim ama suan telefondan yazdigim icin. resim koymadan soru sorarsam biraz havada kalacak gibi. aksam unutmazsam. kesfimi hocalarimla paylasacagim. ::)

MrDarK

Resetle ilgili bir ön bilgi vereyim ;

MCU'ya PowerOn reset atmadığınız sürece RTC çalışmaya ve saniye ilerlemeye devam ediyor :) RTC'yi kaybetmiyoruz yani.
Picproje Eğitim Gönüllüleri ~ MrDarK

Karamel

#6
oglen hocalarima bir soru sorucagimi soylemistim. simdi bilgisayarimin asina oturabildim. reference manual dan reset diagramini kesip. buraya yapistirdim ::)

simdi oncelikle yazin kismet olursa yapacagim wav playerimda ssd1963. stm32f103 microcontroller. sd card vs olacak. bunlarin hepsinin reset girisi var.

forumdan bir hocam pcb cizim kabiliyetimi gelistirmem icin beaglebone semalarini ve pcb layerlarini incelememi soylemisti.

oradan gordugum kadari ile sistemdeki butun entegrelerin reset uclari birlestirilmis. bu cok mantikli! yani energy ilk kez verildiginde resetlere bagli capacitor ve direnc var. bu capacitor ilk anda kisa devre gibi davraniyor ve tum sistemi resetliyor. sonra direnci uzerinden logaritmik olarak e^(-t/RC) hizinda dolarken kisa devre ozelligini giderek acik devre sekline donusturuyor. yazin bende bu yapiyi denerim diye dusunuyordum ama stm32f030 un reference manual ini okurken asagidaki yapiyi gordum. asagidaki yapidan anladigim eger microcontroller bir sekilde resetlenirse. microcontrollerin reset ucuda bir sureligine 0 olacak ve yukaridaki gibi butun resetleri birbirine baglarsam. sistemdeki hersey reset olacak?

yukarida meseleyi dogru yorumlayabilmismiyim.?.?.?




z

ARM işlemci kendi kendini resetleyebilir. Eğer ARM işlemci resetlendiğinde çipe hariçten bağlanmış resetlenebilir çipler de varsa onlar da otomatik resetlensin diiye bu şekilde bir yapı düşünülmüş.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Karamel

hocam yani dogru anlamisim? ::)

peki 2. sorumda su. diyelim ki sistem takildi vede microcontroller resetlendi. ram icersindeki butun bilgiler gidecek degilmi? yani fisi ilk takisimiz gibi olacak?

eger boyle olacaksa takildigi zaman icerigini bozmadan yoluna devam etme sansi varmi?

z

Ram silinmez son değerler aynen kalır.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MrDarK

Alıntı yapılan: z - 13 Nisan 2015, 18:51:12
Ram silinmez son değerler aynen kalır.

Hocam watchdog timer ile resetlendiği zaman veya ide üzerinden reset tuşuna bastığımda ram'i kaybediyorum. Deneme yaptınız mı acaba. Kullandığım Stm32L152VB
Picproje Eğitim Gönüllüleri ~ MrDarK

z

Denemedim.

Reset rutininde Ram'ı silen bir rutinin olmasın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MrDarK

Yok hocam, STM8 de dahil olmak üzere tüm reset durumlarında RAM'i kaybetmekteyim.
STM32L'de RAM'i koruyabildiğim durumlar ; Low Power Modlardan Stop Mode'u kullanarak Halt'a soktuktan sonra Run'a geçerken RAM kalıyor fakat bunun dışındaki durumlarda RAM'i kaybediyorum. Hoş halt'dan Run'a geçmek reset sayılmaz ama olsun söyleyeyim dedim :)

Dipnot : Eğer startup dosyasında yoksa ram'i temizlemek gibi birşey ekstra yazdığım birşey yok. Main içinde yani.
Picproje Eğitim Gönüllüleri ~ MrDarK

Karamel

hocam. program ilk tanimlama kisimlarina gidip. ram bastan tanimlaniyor olabilirmi?

yani unsigned char = "A"; gibi tanimlama kisimlarinda yeniden A ya donusuyor olabilir mi?

bu benim aklima geldi ama suan odev yapmaya dalmistim  o gun. unuttum bunu sormayi. cunku adamlar ismini hatirlayamadigim bir register a microcontroller hangi sebepten resetlendigine dair bitler koymuslar. yani wdt ile resetlenince o bit degisiyor.

simdi sorum su. nasil yapacagiz bilmiyorum ama programin en en en basinda bunu kontrol etsek eger degismisse. onu temizleyip. ram initialize kismini atlayabilirmiyiz? eger yapabilirsek. bunu nasil yapariz?

z

ASM de mümkün C de reset ardından bir takım C rutinleri çağrılıyor. Bu rutinler init işlerini yapıyor olabilir.

Geçici çözüm olarak char a='A' gibi tanımlamaları yapma bunları bir init fonksiyonu içinde sen tanımla.

Böylece bu rutine girmezsen tanımlamaları yeniden yapmamış olursun.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com