Raspberry Pico ya C++ ile Yazılımsal Reset Atmak

Hazır kodu hemen kopyalayıp yapıştırmanın sakıncaları :D

Sadece şunları koy main içine:

C++:
int main()
{
    reset_block(0xFFFFFFFF);
    unreset_block_wait(0xFFFFFFFF);
}
derledi abi bağırmadı bu sefer bana.
Normalde hazır program kullanmam düzenlerim ekleme çıkarma yaparak anlamaya çalışırım ama hiç bilmediğim bir konuydu neyi silip neyi bırakacağımı anlamadım.
 
derledi abi bağırmadı bu sefer bana.
Normalde hazır program kullanmam düzenlerim ekleme çıkarma yaparak anlamaya çalışırım ama hiç bilmediğim bir konuydu neyi silip neyi bırakacağımı anlamadım.
Çalıştı mı sen ondan haber ver. Şuan çatlıyorum meraktan :katil2:
 
Ama büyük ihtimalle bu sadece çevre birimlerini resetliyor. Senin dediğin gibi bu işin watch dog timer ile yapılması lazım. Veya PICO'yu ameliyat edip doğrudan RUN pinini kontrol edeceksin. Yani bir nevi PICO kendine harakiri yapacak :)
 
Ama büyük ihtimalle bu sadece çevre birimlerini resetliyor. Senin dediğin gibi bu işin watch dog timer ile yapılması lazım. Veya PICO'yu ameliyat edip doğrudan RUN pinini kontrol edeceksin. Yani bir nevi PICO kendine harakiri yapacak :)
Aslında çevre birimlerden USB yi resetliyorsa yeter diye düşündüm bir an ama devre içinde harici besleme kullanacağımız için kartın resetlenmesi şart.
 
abi programı yüklüyorum pico hiiiç çalışmıyor. printf'den yaptığı çıktıyı görmek için com portu açmam lazım ama pico hiç com almıyor.
setup kısmına gp25(kart üstündeki led) onu 500ms on off yapacak şekilde de yazdım yine tepki alamadım

int main() {
reset_block(0xFFFFFFFF);
unreset_block_wait(0xFFFFFFFF);
}

bu bloğu ekleyince işlemci çalışmıyor bu bloğu bir void ile de ekleyemiyorum int yerine void yazarsam bağırıyor bana
 
abi programı yüklüyorum pico hiiiç çalışmıyor. printf'den yaptığı çıktıyı görmek için com portu açmam lazım ama pico hiç com almıyor.
setup kısmına gp25(kart üstündeki led) onu 500ms on off yapacak şekilde de yazdım yine tepki alamadım

int main() {
reset_block(0xFFFFFFFF);
unreset_block_wait(0xFFFFFFFF);
}

bu bloğu ekleyince işlemci çalışmıyor bu bloğu bir void ile de ekleyemiyorum int yerine void yazarsam bağırıyor bana
Loop a yazdıysan sürekli reset atıyor olabilir?
Setup a yazsaydın. Yani nereye yazdın?
 
reset:
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/resets.h"

void setup() {
  pinMode(25, OUTPUT);

  digitalWrite(25, HIGH);
  delay(500);
  digitalWrite(25, LOW);
  delay(500);
}

void loop() {

  if (BOOTSEL) {
    delay(10);
    main();
  }

}

int main() {

  reset_block(0xFFFFFFFF);
  unreset_block_wait(0xFFFFFFFF);
}

kodum bu şekilde bootsel butonunu reset butonu yapayım dedim olmadı işlemci hiç setupdaki blink'i yapmıyor bilgisayardan com port almıyor çalışmıyor sanki.
Acaba bu main'i çağıramıyor muyum bu main hep dönüyor mu ben orayı yanlış mı düşündüm
 
Şunu bir dener misin?
Önce 15sn boyunca ledi yakacak, sonra reset atacak ve 5sn sonra tekrar ledi yakacak. Ve böyle dönecek.

C++:
void loop() {

  digitalWrite(blink pini);
  delay(15000);

  reset_block(0xFFFFFFFF);
  unreset_block_wait(0xFFFFFFFF);
delay(5000);

digitalWrite(blink pini);
  delay(15000);


}
 
Şunu bir dener misin?
Önce 15sn boyunca ledi yakacak, sonra reset atacak ve 5sn sonra tekrar ledi yakacak. Ve böyle dönecek.

C++:
void loop() {

  digitalWrite(blink pini);
  delay(15000);

  reset_block(0xFFFFFFFF);
  unreset_block_wait(0xFFFFFFFF);
delay(5000);

digitalWrite(blink pini);
  delay(15000);


}
abi resetliyor fakat tam resetleme değil normalde resetleyince windows aygıt çıkarma sesi ardından aygıt bağlanma sesi çıkarıyor senin bu şekilde atınca aygıt çıkarma sesi geliyor takma sesi gelmiyor.
Birde bunu bootsel verisyonuna yazdım onda da aynı sanki bunu çalıştırınca işlemciyi stop yapıyoruz reset yapmıyoruz
 
Sketch olduğunu unutmuşum. Main ne alaka :) Bunu bir fonksiyonun içine koyup gerektiğinde çağırabilirsin.

Bütün işlemciyi resetliyor mu anlamak için şöyle bir test yap:

C++:
void setup()
{
   led_yak();
   biraz_bekle();
   led_sondur();
   biraz_bekle();

   reset_block(0xFFFFFFFF);
   unreset_block_wait(0xFFFFFFFF);
}

Eğer bu işlemciyi full hardware reset yapıyorsa, düzenli olarak LED'nin yanıp sönüyor olması lazım. Ama bir kere yanıp sönüyorsa o zaman dediğim gibi bu sadece çevre birimlerini resetleyecek.
 
rst:
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/resets.h"


void setup() {
  pinMode(25, OUTPUT);

  digitalWrite(25, HIGH);
  delay(500);
  digitalWrite(25, LOW);
  delay(500);
}

void loop() {
  if (BOOTSEL) {
    delay(10);
    reset_block(0xFFFFFFFF);
    unreset_block_wait(0xFFFFFFFF);
  }
}

ve resetleyince girişteki led açıp kapamayıda yapmıyor bence biz tam anlamıya reset yapamıyoruz @taydin abinin dediği gibi

düzenleme:aynısını yaptrım abi resetleyince başlangıçtaki led yakmayı yapmıyor
 
abi resetliyor fakat tam resetleme değil normalde resetleyince windows aygıt çıkarma sesi ardından aygıt bağlanma sesi çıkarıyor senin bu şekilde atınca aygıt çıkarma sesi geliyor takma sesi gelmiyor.
Birde bunu bootsel verisyonuna yazdım onda da aynı sanki bunu çalıştırınca işlemciyi stop yapıyoruz reset yapmıyoruz
O zaman Timur abinin dediği gibi sadece çevre birimleri resetliyor.
 
şu bootsel butonunu sevdiğim kadar hiçbir kart üstündeki donanımı sevmedim aşırı kullanılşlı olmuş
 
O zaman WDT işini halletmeye çalışın. Bakalım kim önce bitirecek :D
 
Hazır kod araştırmadan, sadece datasheet'e bakarak yapmaya çalışırsanız çok öğretici olur. Temel olarak yapılması gereken:

1) WDT yi yapılandır
2) WDT timeout'u minimum değer yap
3) Sonsuz döngüye gir ve işlemcinin resetlenmesini bekle.
 
Hazır kod araştırmadan, sadece datasheet'e bakarak yapmaya çalışırsanız çok öğretici olur. Temel olarak yapılması gereken:

1) WDT yi yapılandır
2) WDT timeout'u minimum değer yap
3) Sonsuz döngüye gir ve işlemcinin resetlenmesini bekle.
Ama bu haksızlık. Ben işteyim :D
Rakip takım 1-0 önde başlıyor. :D
 
estağfurullah abi hile yapmıyorum sen gelince söyle o zaman bakacağım söz.
Şöyle bişey yapalım;
Ben gece 00:00 da dönücem eve. O saatten sonra bakmaya başlasam da saatler sürebilir.
Yarın izinliyim. Sen şimdiden yapmaya çalış. Bende yarın bakayım. Akşam üstü çıktıları paylaşırız. Bakalım kim daha mantıklı şeyler yapmış olacak.
 

Forum istatistikleri

Konular
5,654
Mesajlar
97,282
Üyeler
2,438
Son üye
İbrahimSönmez

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top