UNO R4 WiFi veya o devasa
UNO Q ; yaşanacak debug deneyimi, kilitlenme direnci ve değişken izleme stabilitesi açısından
STM32 ile birebir aynı seviyededir.
Hatta şunu söyleyebilirim:
UNO Q (STM32U5 tabanlı olan), piyasadaki pek çok standart STM32 kartından (örneğin BluePill) çok daha gelişmiş bir debug motoruna sahiptir.
Akabine; UNO R4 WiFi PCB'de yani tasarımsal donanım altyapısında diyelim zaten, hani şu metal kılıflı küçük bir parça; o bir
ESP32-S3-MINI..
Bu arada yanlışta anlaşılmak en büyük ürküntüm ama hani doğruda anlaşılmak en büyük sevincim onadan sakın ha imtina etmeyiniz, bu bağlamda dün 10 tane ESP32-S3 Süper Mini WiFi Bluetooth Board (hani çoğu gibi kısmi değil de tüm portları bir şekilde dışarı veren PCB dizaynlılardan) da aldım, o ayrı bir proje ve irdeleme konusu ve bu Debug olayınıda detaylı ele almak mühim, %90 seviyesinde bir Debug mümkündür esp32-S3 vs de dahi ama hani o kadar ve elbette yazılımsal bir sanalite hani mecbur belli noktalarda yani seviyeyi o noktaya çıkarmak için elbette yukarıda bahsi geçenlerin donanım seviyesindeki ünitelerini tasarımında barındırmaz bu yüzden biraz daha iyileştirilerek üst katmanlarda e işte öoğu işi görür ama öyle 100% hani endsütriel bir şey de o %10 büyük bir handikap olabilir o açıdan o şeylerde elbette hani şapılamaz vs ama hani çokda şey şapabilirde yani işe göre donanım seçme mevzusu o zaten başlı başına bir konu..
Gelelim şu iki irdelemeye...
1 UNO R4 WiFi'de ESP32-S3'ün "Fedakarlığı"
O modül, aslında her ne kadar Debug noktasında asla %90 üstüne çıkamadasa ama bu şekil kullanımda bir hayli sağlam bir koruma kalkanı:
Sen Renesas işlemcisini (ana beyni) HardFault ile patlatsan bile, o yandaki ESP32-S3 hala USB üzerinden bilgisayara "Hadi abi, bak bakalım Renesas nerede hata yapmış, ben hattı açık tutuyorum" der ama misal ESP32-S3 (tek başına) kendini patlattığında USB hattını da beraberinde götürür.
2 UNO R4 WiFi'de yardımcı modül ESP32-S3'ü Debug Edebilir misin?
İşte buda enterasan bir durum: Normal şartlarda hayır. Arduino IDE sadece Renesas'ı görmeni sağlar.
Ancak kartın üzerindeki bazı "jumper"ları (lehim noktalarını) birleştirerek veya özel firmware yükleyerek o içerideki ESP32-S3'ü de debug moduna sokabilirsin.
Ama bu bir beyaz "hacker" seviyesinde old school bir faaliyet olur ve standart kullanımlarda da pek gerekmez.
_______________________________________________
AN54LV-U15 veya AN54LQ-U15 neyse elbette o kadar minik ünitelerde prototip bazında çalışma yaparken mecbur AN54LQ-U15 ama onunda önce bir AN54LQ-DB-15 formunuda mecbur alıyorsun ama esasen iş sonra başlıyor ve mecburen de sağlam kusursuz bir DEBUG için nRF54L15 DK da alıyorsun..
İşin aslı şu gümrük vs yapılanamları öncesi 5+5 10 adet E104-BT5005A (
nRF52805) ve E104-BT5010A (
nRF52810) vsde almıştım ama sonra dedim Receiver için ideal olan AN54LQ-U15 ve 100% DEBUG olmazsa olmaz..
Eeee, dedim şimdi modül bazlı ilerlersek bir çok noktada belki bu SoC'lara hani yazılım gömer ek bir şey kullanmadan BlueTooth ile: artık hani iyice bahsi uzatmadan, versiyonlar ve protokoller ve katmanlar veya SPP mi BLE mi vs kısımları irdelemeleri hengamelerime vs girmeyelim: dedim esp32-super mini ile ben bunların transmitter işini tek kalemde tek bir verici tipi ile çözeyim bakmayayım bunların alt-yapılarına yani neyse ne hani cihazların iletişim protokolleri usb, serial vs hani üzerinde bir BlueTooth yongası veya MCU'ya gömülü bir Bluetooth donanım yapısı olanalrıda işin içine katarak olmayanları tek bir noktada birleştiren bir ünite olsun hani icabında USB Host'da olabilsin, hani icabında OTG üzerinden de handshake şeylerini kotarsın, hani icabında veriyi yenidende işlesin ve misal BLE formuna encapsulation da hasıl olsun vs vs vs gibi şeyleri de tek kalemde bitirmek isteyince e işte ESP32-Super Mini var mı daha built-ini e yok e ama DEBUG hani en güzel şekilde yapılandırılsa bile %90 olabiliyor eee eyvAllah...
Arduino bitmez neden Akademi noktasındaki background ve topluluk ortaklıkları durumlarından yoksa ben de biterim sen de bitersin o da elbet biter ama O bitmez !
Vardı bir iki daha: arkada 3B Yazıcıda çıktı alırken, oluşan bu nefeslenme fırsatıyla aklımda deli sorular itelemesiyle tarayıcı bazlı sörf eyler iken, önüme düşen ilgili gönderilere göz-atarken, tam da şu an irdelediğim onlarca ana konseptten bir kaçının, artık başına kıçına en az bir yerine temas eden, tam iz düşüm bahislere dair çalakalem, eklemem gereken bir iki nacizane savurma daha ama fena yorgunum akşama artık, keyifli hafta sonları cümleten..
Bu işler böyle elbette mecburen hani MicroChip Atmel'i satın alır ama Qualcomm ise Arduino'yu; işin hakikati evet hani, sırf Arduino UNO "Q" demek için, yani reklam bütçesini gel hadi şuraya harcayalım demek için dahi almış olabilirdi de, ama esasen almasa işler çok daha vahimdi.
Intel 8051, 1980'lerde Harvard mimarisini mikrokontrolcü dünyasında standart hale getiren efsanedir.
AVR (Arduino'nun kalbi olan seri) ise 1990'larda bu mimariyi alıp modernleştirerek çok daha hızlı hale getiren "yeni nesil" bir tasarımdır.
AVR, 8051'in o dönemki hantallığını çözmek için "her saat vuruşunda bir işlem" mantığıyla geliştirildi.
Yani AVR, 8051'in genlerini taşıyan ama çok daha atletik olan bir torun gibidir.
Yani sen ATMEL 328P ile UNO DIP 8Bit alacaksın ve Arduino UNO Q 32 duruma göre 64Bit support seviyesine geleceksin !!!
------------------------------
1
Bir PC'nin güç düğmesine bastığında, dünyanın en modern işlemcisi bile saniyeler içinde 1978 yılına geri döner.
Bu süreci bir binanın temellerinden gökyüzüne yükselmesi gibi düşünebiliriz:
- Real Mode (Gerçek Mod): İşlemci ilk açıldığında tıpkı bir 8086 gibi davranır. Sadece 1 MB bellek görebilir ve çok kısıtlıdır. Neden mi? Çünkü anakartın üzerindeki o temel yazılım (BIOS), işlemcinin en eski dilini anlar.
- Vites Yükseltme: Bilgisayar donanımı kontrol ettikten sonra (POST süreci), yavaş yavaş 32-bit "Protected Mode"a geçer. Artık daha fazla bellek kullanabilir ve güvenlik duvarları örmeye başlar.
- Modern Dev: En son aşamada, eğer 64-bit bir işletim sistemin varsa, işlemci "Long Mode"a geçer. Artık GB'larca RAM'i görebilen, devasa bir güce dönüşmüştür.
2
Gelelim o meşhur
8051 ve
Harvard mimarisine. 8051, Windows çalıştırmak için fazla "sadık" ve "basit" bir işlemcidir. Onu çamaşır makinelerinde veya mikrodalga fırınlarda görmemizin sebepleri şunlardır:
- Determinizm (Öngörülebilirlik): Bir çamaşır makinesinde düğmeye bastığında, işlemcinin o an "güncelleme yapıyorum" demesini istemezsin. 8051 gibi mikrodenetleyiciler, yapmaları gereken tek işi (suyu ısıt, kazanı döndür) her zaman aynı hızda ve hatasız yaparlar.
- Maliyet ve Enerji: Bir Windows işlemcisi yüzlerce Watt güç tüketirken, 8051 pili bitirmek bilmez. Ayrıca çok ucuzdur; bir çamaşır makinesine 1000 dolarlık işlemci takmak mantıklı olmazdı, değil mi?
- Harvard Mimarisi Avantajı: Kod ve verinin yolları ayrı olduğu için, 8051 dışarıdan gelen (sensör verisi gibi) bilgilere anında tepki verebilir. Bu, "gerçek zamanlı" kontrol için kritiktir.
Şimdi benim mutfakta bir 6220 FT Bulaşık makinası var tahmin et onun MCU'su nedir !!!
Şimdi sana 64 Bit işlemciden yazıyorum oda duruma göre Realistik ve aynı zamanda duruma göre Bare Metal aradaki köprüde BARA..
Bu iki işlemci (Qualcomm ve STM32) arasındaki "bara", aslında verilerin aktığı yüksek hızlı bir yoldur.
Linux tarafı (Qualcomm) ağır hesaplamaları yaparken, RTOS tarafı (STM32) milisaniyelik hassasiyetle fiziksel dünyayı kontrol eder.
Bir önceki UNO R4 WiFi ise o da belli sahalarda ki gelişmeleri bir kaldırım taşı gibi döşeme kronolojisi ve zemine yayam açısından müthiştir aslında..
Ama gel gelelim bir başka gerçeğe Raspberry Pi Pico ---- Raspberry Pi 5 16GB..
Arduino oraya oynamalı mı oynamamalı mı !
Eğer oynarsa onu hani kim tutabilir !
Ben biterim Sen bitersin Arduino dahi biter ama O bitmez !!!
Computational Thinking ve STEAM+'yı ele aldığın zaman onun sac ayaklarının biri de Arduino ve bir sonraki yansıması dünya çapında, vesilesi artık Qualomm oldu bu şu o olur du da vs ama yine O, geçmiş 15 sene ve gelecek 15 sene bir bütünsellik içinde gözlemlendiğinde, tüm inkar edilemez katkılarıyla ve her an solunan hakikati ile parıl parıl yansımaya devam edecektir !!!
Kod:
; ATmega328P için LED yakma (Assembly)
.org 0x0000 ; Kodun başlangıç adresi (Reset vektörü)
jmp start ; Program başladığında 'start' etiketine git
start:
sbi 0x04, 5 ; DDRB (Data Direction Register B) adresindeki 5. biti 1 yap.
; Bu, 13. pini ÇIKIŞ (OUTPUT) olarak ayarlar. (Adres 0x04 = DDRB)
loop:
sbi 0x05, 5 ; PORTB (Port B Data Register) adresindeki 5. biti 1 yap.
; Bu, 13. pine güç verir ve LED YANAR. (Adres 0x05 = PORTB)
rjmp loop ; Sonsuz döngü: Sürekli LED'i açık tut.
veya
Kod:
.set PINB, 0x03
.set DDRB, 0x04
.set TCCR0B, 0x25
.set TCNT0, 0x26
.set LED_MASK, 0b00100000
.set PS_1024, 0b00000101
setup:
ldi r16, PS_1024 ; Set r16 with prescaler 1024 value
out TCCR0B, r16 ; Set the TCCROB to 1024
ldi r16, LED_MASK ; Set r16 to the LED bit
out DDRB, r16 ; Set LED pin to output
clr r18 ; Clear the saved timer
loop:
ldi r20, 61 ; Initialize our software counter
check_timer:
in r17, TCNT0 ; Read the timer
cp r17, r18 ; Compare with previous value
mov r18, r17 ; Save current value
brsh check_timer ; unless the timer has decreased, repeat
decrement:
dec r20 ; decrement the software counter
brne check_timer ; if not zero, go back to checking the timer
toggle:
out PINB, r16 ; toggle the LED
rjmp loop
Zamanlayıcı taşma kesme bayrağını kullanabilirsek, test şu şekilde olur:
Daha basit ve önceki ve mevcut değerleri saklamamıza gerek yok.
Kaydedilen zamanlayıcı:
check_timer:
sbis TIFR0, TOV0 ; unless the timer has overflowed
rjmp check_timer ; check again for overflow
sbi TIFR0, TOV0 ; otherwise clear the overflow flag
veya simülasyonu ile
Kod:
#define __SFR_OFFSET 0
#include "avr/io.h"
.global main
main:
sbi DDRB, 5 ; Set PB5 as output
blink:
sbi PINB, 5 ; Toggle PINB
ldi r25, hi8(1000)
ldi r24, lo8(1000)
call delay_ms
jmp blink
delay_ms:
; Delay about (r25:r24)*ms. Clobbers r30, and r31.
; One millisecond is about 16000 cycles at 16MHz.
; The inner loop takes 4 cycles, so we repeat it 3000 times
ldi r31, hi8(4000)
ldi r30, lo8(4000)
1:
sbiw r30, 1
brne 1b
sbiw r24, 1
brne delay_ms
ret