---
title: "Rastgelelik Tuzağına Düşmekten Kurtulmanın 5 Kritik Noktası"
description: "Birçok projede karşılaştığımız o an var ya; donanımımızdan ya da yazılım katmanlarımızdan bize geri gelen, tamamen beklenmedik bir veri akışı. Bir anda…"
date: 2026-11-03T15:42:29Z
updated: 2026-11-03T15:42:29Z
author: "Selda Kaya"
site: "Devre Tahtasından Kod Satırına"
language: "tr"
tags: ["mikrodenetleyici", "rastgele-sayılar", "programlama", "gürültü"]
url: "https://dev-labirinti.nasilalinir.com/rastgelelik-tuzagina-dusmekten-kurtulmanin-5-kritik-noktasi"
---

# Rastgelelik Tuzağına Düşmekten Kurtulmanın 5 Kritik Noktası

Birçok projede karşılaştığımız o an var ya; donanımımızdan ya da yazılım katmanlarımızdan bize geri gelen, tamamen beklenmedik bir veri akışı. Bir anda kodunuzun değil de, fiziksel dünyanın gürültüsünü dinlediğinizi fark ettiğiniz o an. Doğruysa, bu rastgelelik benim için bir hata değildir; çözülmesi gereken yeni bir alt sistemdir. Bu yazıda, özellikle düşük seviyeli donanım ile uğraşırken karşılaştığım ve "Bu neden böyle davranıyor?" diye sorduğum, rastgele görünen fakat aslında altyapısal bir kökene sahip olan durumları listeleyeceğim.

Bu, sadece "randevu aldığım gibi geldi" diye geçiştirilemeyecek, ölçülmesi gereken bir olgu.

## Donanım ve Yazılımın Kesiştiği Rastgelelik Vakaları

Mikrodenetleyicilerimizle, özellikle de çevreyle etkileşim kuran sensörlerle çalışırken, saf bir determinizm bulmak lüks olabiliyor. İşte benim son birkaç deneyimimde karşılaştığım, başlangıçta tamamen rastgele görünen ama derinlemesine incelediğimdeki gerçek nedenleri:

*   **Analogdan Dijitale Geçişteki Kayıp Bitler (ADC Threshold Noise):** Bir sıcaklık sensöründen okunan voltaj değerini ölçeklendirirken, her zaman aynı değeri almamalısınız. Eğer filtrelemeniz yetersizse ve buharlaşma sonrası gelen gürültü sinyali, örneğin 3.5V yerine 3.6V olarak algılanıyorsa, bu küçük fark, yazılımsal döngüde büyük bir değişkene neden oluyor. Bu benim için "gürültünün kazandığı puan" gibiydi.
*   **Kesme (Interrupt) Servis Rutinlerinde Zamanlama Kaymaları:** Bir olay olduğunda tepki vermek için kesmeler kullanıyoruz. Ancak işlemci çekirdek yükü yüksek olduğunda veya kesme vektörü tablosuna ulaşım gecikmeleri yaşandığında, bir olay ile diğerinin gerçekleşme zamanlaması milisaniyelerle kayabiliyor. Bu gecikmeler, uygulamanın mantıksal akışını bozuyor gibi görünse de, aslında zamanlama kesintilerinden kaynaklanıyor.
*   **Güç Kaynağı Salınımlarının Dijital Etkisi:** Özellikle çok düşük akımlarla beslenen veya uzun süreli uykudan uyandıktan sonra çalışmaya başlayan sistemlerde, güç hattındaki en ufak bir gerilim düşüşü bile mikrodenetleyicinin dahili saat kristalini veya sayaçlarını beklenmedik bir şekilde etkileyebiliyor. Bu, basitçe "besleme voltajındaki dalgalanma kaynaklı okuma hatası" olarak tanımlanabilir.
*   **Rastgele Sayı Üretecinin Tohumlanma Hatası (Poor Seeding):** Eğer bir projede gerçekten rastgele verilere ihtiyacınız varsa ve bunu sadece `time(NULL)` ile tohumluyorsanız, modern çok hızlı işlemcilerde veya tekrarlayan denemelerde hep aynı başlangıç noktasından geliyorsunuz demektir. Bu, altyapımdaki en büyük yazılımsal "tesadüf"tu. Gerçek bir fiziksel süreçten (örneğin termal gürültü) veri almadan rastgelelik elde etmek için daha yaratıcı bir kaynağa ihtiyaç var.
*   **Kablosuz Protokol Katmanındaki Paket Kayıpları:** IoT projelerinde en sık karşılaşılan bu. Bir paketin kaybolması, uygulamanızın mantıksal olarak hiçbir şey olmamış gibi davranmasına neden olabilir. Ancak bu kayıp, yazılımın hatalı değil; altta yatan MAC katmanının fiziksel ortamdaki elektromanyetik gürültüye karşı verdiği kaçınılmaz tepkidir.

Bu vakalar beni her seferinde aynı noktaya getiriyor: **Her aksaklık, ya yazılımda bir varsayımın yanlış çıkmasından ya da donanımın doğasında olan fiziksel gürültüyü göz ardı etmemizden kaynaklanıyor.**

Eğer kodunuzun çıktısı size "tutarsız" geliyorsa, derin bir nefes alın ve soruyu şu şekilde yeniden formüle edin: "Bu çıktı neden benim beklediğim gibi değil?" Cevap genellikle sizin yazılımınızın en ucuzlayarak geçtiği fiziksel katmanda gizlidir.

Devre Tahtasından Kod Satırına,
Selda
