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

Gokrtl

Gökhan Kartal
Staff member
Katılım
27 Şubat 2019
Mesajlar
7,670
Sabahtan beri arıyorum, Raspberry pico ya c++ ile yazılımsal reset atmak hakkında hiç bir şey bulamadım.
Phyton dilinde machine.reset() komutu ile kolayca yapılıyormuş.
Pico üzerinde reset pini 30 numara olarak görünüyor ve üzerinde run yazıyor.
Bu verilere güvenerek c++ ile digitalWrite(30, LOW); yaptım. Amacım run pinini LOW'a çekip GND ye bağlamak ve bir buton ile HIGH komutu gönderdiğimde cihazın resetlenmesi idi. Ancak "30" pini doğru tanım değil. daha sonra 30 yerine "run" yazdım, bunuda kabul etmedi.
Bu duruma bir çare aramaktayım.

Birde şöyle bir şeye denk geldim ve aklıma şu soru geldi. Bu yabancılar ne zaman Türkler gibi düşünmeye başladı? :katil1:

pico reset.png
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
bakayım abi bulabilecek miyim birşey
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
Sabahtan beri arıyorum, Raspberry pico ya c++ ile yazılımsal reset atmak hakkında hiç bir şey bulamadım.
Phyton dilinde machine.reset() komutu ile kolayca yapılıyormuş.
Pico üzerinde reset pini 30 numara olarak görünüyor ve üzerinde run yazıyor.
Bu verilere güvenerek c++ ile digitalWrite(30, LOW); yaptım. Amacım run pinini LOW'a çekip GND ye bağlamak ve bir buton ile HIGH komutu gönderdiğimde cihazın resetlenmesi idi. Ancak "30" pini doğru tanım değil. daha sonra 30 yerine "run" yazdım, bunuda kabul etmedi.
Bu duruma bir çare aramaktayım.

Birde şöyle bir şeye denk geldim ve aklıma şu soru geldi. Bu yabancılar ne zaman Türkler gibi düşünmeye başladı? :katil1:

16363 eklentisine bak
bu arada abi fiziksel pin numaraları onun GPIO numarasını ifade etmiyor
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
abi yapanların watch dog timer ile yaptığını görüyorum resetleme işlemini ama ben pico için bulamıyorum wdt örneği
 

Gokrtl

Gökhan Kartal
Staff member
Katılım
27 Şubat 2019
Mesajlar
7,670
Bende eve geçince datasına bakayım diyordum. :)
 

Gokrtl

Gökhan Kartal
Staff member
Katılım
27 Şubat 2019
Mesajlar
7,670
Burada işler biraz karışık.
Acaba reset kütüphanesi mi eklemek gerekiyor?
Yoksa reset_block(bit numarası); ile direk reset atıyor mu?

C++:
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/resets.h"
 
int main() {
    stdio_init_all();
 
    printf("Hello, reset!\n");
 
    // Put the PWM block into reset
    reset_block(RESETS_RESET_PWM_BITS);
 
    // And bring it out
    unreset_block_wait(RESETS_RESET_PWM_BITS);
 
    // Put the PWM and RTC block into reset
    reset_block(RESETS_RESET_PWM_BITS | RESETS_RESET_RTC_BITS);
 
    // Wait for both to come out of reset
    unreset_block_wait(RESETS_RESET_PWM_BITS | RESETS_RESET_RTC_BITS);
 
    return 0;
}
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
Burada işler biraz karışık.
Acaba reset kütüphanesi mi eklemek gerekiyor?
Yoksa reset_block(bit numarası); ile direk reset atıyor mu?

C++:
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/resets.h"
 
int main() {
    stdio_init_all();
 
    printf("Hello, reset!\n");
 
    // Put the PWM block into reset
    reset_block(RESETS_RESET_PWM_BITS);
 
    // And bring it out
    unreset_block_wait(RESETS_RESET_PWM_BITS);
 
    // Put the PWM and RTC block into reset
    reset_block(RESETS_RESET_PWM_BITS | RESETS_RESET_RTC_BITS);
 
    // Wait for both to come out of reset
    unreset_block_wait(RESETS_RESET_PWM_BITS | RESETS_RESET_RTC_BITS);
 
    return 0;
}
Bunu pico için derlemiyor hata veriyor
-

collect2.exe: error: ld returned 1 exit status
exit status 1
Raspberry Pi Pico kartı için derleme hatası.

-
 

Gokrtl

Gökhan Kartal
Staff member
Katılım
27 Şubat 2019
Mesajlar
7,670
Bunu pico için derlemiyor hata veriyor
-

collect2.exe: error: ld returned 1 exit status
exit status 1
Raspberry Pi Pico kartı için derleme hatası.

-
Benim attığım kodu derlemeye çalıştıysan yemez. Çünkü orada üç tane kütüphane include etmiş. Sende muhtemelen yok o kütüphaneler.
Telefondan tam beceremiyorum bakmayı.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
13,330
Aslında çok ayrıntılı bakmadım. Belki de bu fonksiyon sadece çevre birimlerini resetliyor olabilir. Eğer full hardware reset gerekiyorsa, ya harici RUN pini üzerinden resetlenmesi lazım yada watch dog timer kullanılmalı. WDT yi yapılandıracaksın, sonra da tazelemeyince WDT bütün sistemi resetleyecek.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
Benim attığım kodu derlemeye çalıştıysan yemez. Çünkü orada üç tane kütüphane include etmiş. Sende muhtemelen yok o kütüphaneler.
Telefondan tam beceremiyorum bakmayı.
Abi kütüphane yok demiyor
verdiği hata ;
collect2.exe: error: ld returned 1 exit status
exit status 1
Raspberry Pi Pico kartı için derleme hatası.
 

Gokrtl

Gökhan Kartal
Staff member
Katılım
27 Şubat 2019
Mesajlar
7,670
Bu gidişle smd 547 yi gömeriz buna :)

Abi kütüphane yok demiyor
verdiği hata ;
collect2.exe: error: ld returned 1 exit status
exit status 1
Raspberry Pi Pico kartı için derleme hatası.
Bildiğim kadarıyla arduino ide aşağıdan yukarı doğru derliyor kodları. O yüzden demek ki kütüphanelere sıra gelmeden başka bir yerde takılıyor.
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
13,330
Abi kütüphane yok demiyor
verdiği hata ;
collect2.exe: error: ld returned 1 exit status
exit status 1
Raspberry Pi Pico kartı için derleme hatası.

Hata o kadar değildir, başka şeyler de vardır. Ama bu linker hatası, yani gereken bir kütüphane tanımlanmamış.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
c:/users/f/appdata/local/arduino15/packages/rp2040/tools/pqt-gcc/1.3.3-a-ed6d983/bin/../lib/gcc/arm-none-eabi/10.3.0/../../../../arm-none-eabi/bin/ld.exe:
C:\Users\f\AppData\Local\Temp\arduino_build_206850\sketch\sketch_mar27a.ino.cpp.o: in function `main':
C:\Users\f\AppData\Local\Temp\arduino_modified_sketch_898607/sketch_mar27a.ino:6: undefined reference to `stdio_init_all'
collect2.exe: error: ld returned 1 exit status
exit status 1
Raspberry Pi Pico kartı için derleme hatası.
 

Ahmet

Kıdemli Üye
Katılım
31 Mayıs 2021
Mesajlar
2,147
hata bu kadar abi başka bir hata gözükmüyor
 

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
13,330
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);
}
 
Top