# Bilinen tuzaklar

Hepsi yaşandı, hepsi ölçüldü. Bir şey "çalışmıyor" gibi görünüyorsa önce buraya bak.

## Kart

- **Panel MISO bağlı değil** (CYD): ekrandan geri okuma `0xFF` döner. Denetleyici kimliği ve MADCTL sorgulanamaz; yön ayarı gözle yapılır (Ayarlar → Ekran ayarı). Doğrulanmış ayar `rotation=0`, `bgr=False`; dokunma.
- **SD yalnız VSPI'de (slot 3).** Slot 2 ekranın HSPI hattıdır; başarısız bir deneme host'u kilitli bırakıp ekranı öldürür. SD takılı değilken `os.statvfs('/sd')` kök dosya sistemine düşer ve sahte pozitif verir.
- **64 GB ve üstü SD kartlar exFAT gelir**, MicroPython yalnız FAT okur. `sd_kontrol.py` teşhis eder, `BICIMLE = True` ile FAT olarak biçimlendirir (karttaki her şeyi siler).
- **Modül adı ile klasör adı çakışmasın.** `projects.py` + `/projects` çakıştı, MicroPython klasörü paket sandı; o yüzden modül `store.py`.
- **Thread izolasyon sağlamaz.** GIL var; CPU'yu bırakmayan proje paneli aç bırakır. `sleep_ms(1)` bile yeter.
- **Normal mod + `def` içinde bekleme:** MicroPython `await`'i düz `def` içinde sessizce kabul edip fonksiyonu generator yapar, gövde hiç çalışmaz. Ön tarama yakalar ve projeyi T'de açar.
- **Kesici (ESP8266) bloke eden C çağrısının içine giremez** (`uart.write`, büyük SPI); o milisaniye mertebesidir.
- **`uart.write(512 bayt)` 44 ms bloke eder** ve bekçiyi tetikler: 64 baytlık parçalar, aralarda `sleep_ms(1)`.
- **Modül önbelleği:** projenin `import` ettiği modüller `sys.modules`'te kalıyordu, 6 KB geri gelmiyor ve düzeltmeler görünmüyordu. `Job._run` artık projenin getirdiği modülleri bitince siliyor.

## PC ve seri port

- **`mpremote` kartı REPL'de bırakır.** `fs cp` önce `main.py`'yi Ctrl-C ile keser, yeniden başlatmaz; her deploy'dan sonra panel kapalıdır. `--reset` ver.
- **Klon CH340 sürücüsü 3.9.2024.9** (Windows) portu 38400 ve üstü hızda açarken `PermissionError(31, 'A device attached to the system is not functioning')` verir. 9600'de açıp hızı yükseltmek çalışır; `sitecustomize.py` ile `serial.Serial.open` yamalanabilir ya da sürücü 3.5 (2019) sürümüne alınır.
- **CH340 takılması:** port sürekli aynı çöp baytı basıyor (`0xE2`), yazma `Write timeout` ile düşüyor. Yazılımla toparlanmaz; USB kablosunu çıkar-tak.
- **PowerShell BOM:** `Set-Content -Encoding utf8` dosya başına BOM ekler, MicroPython `NameError: name '﻿' isn't defined` der. Python ya da editörle yaz.
- **esptool baud tuzağı:** `--baud 460800` stub'ı o hızda bırakır, sonraki komut 115200'den bağlanamaz. Çok adımlı işlerde 115200'de kal.
- **Yarım kalan flash:** port düşerse kart download modunda kalır; tuşa tekrar gerek yok, `flash.py --koru`'yu hemen yeniden çalıştır. Reset sonrası hâlâ `boot:0x3 DOWNLOAD_BOOT` görünüyorsa BOOT fiziksel olarak basılı.
- **`txbuf=` parametresi** ESP32 UART'ta `EPERM` verir; yalnız `rxbuf` ver.
- **İlk açılış formatı (ESP8266):** silinmiş 4 MB flash'ta LittleFS formatı birkaç saniye sürer; `mpremote` her bağlanışta reset atar ve formatı baştan başlatır. Flash'tan sonra ~10 sn dokunma.

## Güç

- **Beslemesiz USB hub:** ekranlı kart WiFi açınca hub'ın akımı yetmez, kart ve USB çipi birlikte kopar (COM 1,5 saniyede kaybolur). Doğrudan PC portu ya da beslemeli hub.
- **ESP32 OLED PC USB'sinden:** WiFi açıldığı anda 3,3 V hattı 1,63 V'a düşer, brownout döngüsü. 2 × 1000 µF kondansatör de kurtarmaz (~2 ms tampon). Çözüm pil, beslemeli hub ya da harici 3,3 V.
- **Kablo direnci:** 300 mA çekişte ince/uzun kabloda ~1 V düşer, regülatör dropout'a girer. Adaptörün 3 A vermesi kabloyu kurtarmaz.

## Ağ

- **İkinci HTTP sunucusu** ikinci dinleyici soketle lwIP tamponlarını ve dahili DRAM'i tüketip paneli kilitler. `cyd.rota` kullan.
- **`requests` ile HTTPS normal modda `ENOMEM`**, BLE `EIO`. İkisi de Solo modda.
- **PC'deki VPN** yerel ağı kesebilir: kart kendi IP'sinde "bağlıyım" derken PC modeme bile ping atamaz. Önce VPN'i kapat.
- **Yavaş istemci** dosya gönderirken paneli kilitliyordu: soket zaman aşımı 5 sn ve her parçada nabız; 512 B / 0,5 sn okuyan istemciyle 50 sn, 0 hata.

## Gölgeleme

Dosya sistemindeki aynı adlı `.py` dondurulmuşu ezer (öncelik `.py` > `.mpy` > frozen). Bir `server.py` yüklersen RAM kazancı sessizce kaybolur. Deploy araçlarını dondurulmuş kartlarda hep `--frozen` ile çalıştır.
