USBasp ile ATtiny serisini değil, Atmel AVR ailesine mensup tüm 8-bit mikroişlemcileri doğrudan devre içi seri programlama (ICSP) protokolü üzerinden programlayabilen endüstri standardı bir donanımdır.
Gömülü sistemler ve mikrodenetleyici programlamada, kodların entegreye kararlı bir biçimde yüklenmesi donanım geliştirme sürecinin en temel aşamasıdır. ATtiny serisi (ATtiny85/45/25) mikrodenetleyicileri programlarken doğrudan USB arabirimi veya Arduino UNO kartlarını ISP (In-System Programmer) olarak kullanmak yaygın yöntemler olsa da, bu yöntemlerde yaşanan sürücü uyumsuzlukları veya kablolama hatalarında en profesyonel ve kararlı alternatif USBasp donanımsal programlayıcısıdır.
USBasp Nedir ve Donanım Yapısı?
USBasp, Thomas Fischl tarafından geliştirilen ve Atmel AVR mikrodenetleyicileri için tasarlanmış açık donanım/yazılım tabanlı bir devre içi seri programlayıcıdır (ISP). Donanım, temel olarak bir 8-bit ATmega8 (veya ATmega88) mikrodenetleyicisi ile USB haberleşmesi ve elektriksel koruma sağlayan birkaç pasif bileşenden oluşur. Özel bir donanımsal USB entegresi gerektirmeden, USB protokolünü tamamen yazılımsal olarak işlemci üzerinde koşturabilen esnek bir firmware sürücü mimarisiyle çalışır.

ISP (In-System Programming) Protokol Kuralları ve SCK Frekans Limiti
USBasp, hedef mikrodenetleyiciyi programlarken standart SPI (Serial Peripheral Interface) haberleşme hattını (MOSI, MISO, SCK) ve aktif-düşük (active-low) çalışan bir RESET kontrol hattını kullanır. Bu elektriksel veri iletim sürecinde uyulması gereken en katı kural, SPI saat sinyalinin (SCK) frekans sınırıdır.
Atmel AVR programlama standartlarına göre, ISP modunda programlama yapabilmek için USBasp’nin ürettiği SCK frekansı (
), hedef mikrodenetleyicinin o anki çalışma frekansının (
) 4’te 1’inden kesinlikle daha düşük olmalıdır:
![]()
Fabrikadan yeni çıkmış standart bir ATtiny85 mikrodenetleyicisi, dahili
RC osilatörün
olan CKDIV8 (dahili saat bölücü) sigortası aktif olarak gelir. Bu durum, çipin varsayılan olarak
(
) frekansta çalışmaya başladığı anlamına gelir. Formülü uygulayarak maksimum SCK sınırını bulalım:
![]()
Eğer USBasp programlayıcınızın varsayılan SCK hızı (genellikle
veya
) bu limitin üzerindeyse, ATtiny85 gelen verileri algılayamaz ve avrdude hata çıktısı olarak ünlü “avrdude: error: program enable: target doesn’t answer” uyarısını verir.
Çözüm (JP3 Jumper – Yavaş SCK): USBasp modülü üzerinde yer alan JP3 (Slow SCK) jumper’ı kapatıldığında (kısa devre yapıldığında), USBasp donanımı SPI SCK hızını
ila
seviyelerine düşürür. Bu sayede
‘de çalışan ham ATtiny85 mikrodenetleyicileri kararlı bir biçimde programlanabilir.
USBasp ile ATtiny Programlama: ATtiny Core ve Arduino IDE Kütüphane Entegrasyonu
USBasp ile program yazmak için en esnek ve güncel çekirdek olan Spence Konde’nin ATTinyCore kütüphanesini kullanacağız. Eğer kütüphane yüklü değilse, ATTinyCore resmi GitHub deposunu inceleyebilir ve aşağıdaki URL adresini `Dosya -> Tercihler -> Ek Kart Yöneticisi URL’leri` kısmına ekleyebilirsiniz:
http://drazzy.com/package_drazzy.com_index.json

Ardından `Araçlar -> Kart -> Kart Yöneticisi` arayüzünden “ATTinyCore” araması yaparak kütüphanenin kurulumunu tamamlayın.

Kart seçimi yapıldıktan sonra, entegre parametrelerini (Saat hızı, çip modeli) donanım tasarımınıza göre yapılandırın:

Kodları USBasp üzerinden yükleyebilmek için Araçlar -> Programlayıcı ayarının kesinlikle USBasp (ATTinyCore) olarak ayarlanması gerekmektedir. Kodları yüklemek için standart “Yükle” butonu yerine “Programlayıcı Kullanarak Yükle” (Ctrl+Shift+U) komutu çalıştırılmalıdır.

USBasp Sürücülerinin İşletim Sistemi Bazlı Kurulumu
1. Windows İşletim Sistemi Altında Zadig Entegrasyonu
Windows işletim sistemlerinde, USBasp modülü takıldığında imzasız sürücü hatası veya eksik sürücü uyarısı alınabilir. Bu durumda en kararlı çözüm resmi Fischl USBasp sayfası sürücülerini kullanmak ya da evrensel sürücü yükleyici olan Zadig yazılımını çalıştırmaktır.
Zadig arayüzünden USBasp aygıtını seçip sürücüyü libusb-win32 (veya WinUSB) olarak değiştirdiğinizde, avrdude programlayıcıya doğrudan erişim sağlayacaktır.

2. macOS İşletim Sistemi Altında Kullanım
macOS işletim sistemi, UNIX tabanlı yapısı sayesinde libusb uyumlu cihazları çekirdek (kernel) seviyesinde doğrudan tanır. Herhangi bir ek USBasp sürücüsü yüklenmesine gerek kalmaksızın, donanım USB portuna takıldığı anda çalışmaya hazır hale gelir. Sistem durumunu doğrulamak için sistem raporundan USB veri ağacını kontrol edebilirsiniz:

USBasp – ATtiny85 Donanımsal Bağlantı Şeması
USBasp programlayıcısının ISP konnektörü ile ATtiny85 entegresinin pinleri arasındaki eşleşme tablosu şu şekildedir:
| USBasp ISP Pin Adı | ATtiny85 Pin Numarası | Elektriksel Fonksiyonu |
|---|---|---|
| MOSI | Pin 5 (PB0) | Master Out Slave In – Seri Veri Girişi |
| MISO | Pin 6 (PB1) | Master In Slave Out – Seri Veri Çıkışı |
| SCK | Pin 7 (PB2) | Serial Clock – Seri Haberleşme Saati |
| RESET | Pin 1 (PB5) | Hardware Reset – Aktif Düşük Reset Hattı |
| VCC | Pin 8 (VCC) | |
| GND | Pin 4 (GND) | Ortak Toprak Hattı |
AVR Fuse Bytes (Sigorta Bitleri) Mimarisi
ATtiny85’i programlarken en kritik aşamalardan biri, çipin saat kaynağını ve elektriksel parametrelerini belirleyen Sigorta Bitlerinin (Fuse Bytes) doğru konfigüre edilmesidir. ATtiny85 üzerinde üç adet sigorta yazmacı bulunur: Low Fuse (LFUSE), High Fuse (HFUSE) ve Extended Fuse (EFUSE). Spence Konde çekirdeğinde “Burn Bootloader” komutu çalıştırıldığında bu yazmaçlar otomatik olarak güncellenir. En sık kullanılan LFUSE saat konfigürasyonları şunlardır:
Dahili RC Osilatör (Varsayılan): `LFUSE = 0x62` (Dahili saat bölücü aktif).
Dahili RC Osilatör: `LFUSE = 0xE2` (Dahili saat bölücü pasif, yüksek hızlı kararlı saat).
Dahili Yüksek Hızlı PLL: `LFUSE = 0xE1` (USB emülasyonları için saat kaynağı).
Eğer sigorta bitlerini yanlışlıkla “External Crystal (Harici Kristal)” olarak ayarlarsanız ve sisteme fiziksel bir kristal bağlamazsanız, ATtiny85 bir daha programlama komutlarına cevap vermeyecektir (brick durumu). Bu durumda çipi kurtarmak için harici bir kare dalga enjekte edilmeli veya bir HVSP (High-Voltage Parallel Programmer) donanımı kullanılmalıdır.
3D Yazıcı ile USBasp Koruyucu Kutu Üretimi
Açıkta duran programlayıcı kartları, çalışma tezgahındaki metal çapaklar veya kablo artıkları nedeniyle kolaylıkla kısa devre olarak bozulabilir. Bu riski ortadan kaldırmak için, 3D yazıcı yardımıyla USBasp donanımına tam oturan şık bir koruyucu plastik kutu basabilirsiniz.
Thingiverse üzerinde yer alan USBasp koruyucu kutu tasarımı stl belgesini indirerek yazıcınızda basabilirsiniz. Kutu, pin çıkışlarına erişimi engellemeden donanımı dış etkenlerden korur.



Kronik USBasp Hataları ve Saha Çözümleri
- “target doesn’t answer (1)”: JP3 yavaş saat (Slow SCK) jumper’ının takılı olduğunu doğrulayın. Ayrıca breadboard üzerindeki güç (VCC, GND) kablolarının gevşek olmadığından emin olun.
- “cannot set sck period…”: Genellikle avrdude’un USBasp üzerindeki eski bir firmware sürümü nedeniyle verdiği zararsız bir uyarıdır, programlamayı engellemez. Donanım yazılımını güncellemek için JP2 jumper’ı kapatılarak başka bir programlayıcıyla en son firmware yüklenebilir.
USBasp, ATtiny projelerinizde bootloader yüklemek, sigorta bitlerini sıfırlamak ve doğrudan devre içi güvenli programlama gerçekleştirmek için gömülü yazılımcı alet çantasında bulunması gereken en önemli ve kararlı araçlardan biridir.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.
