
İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13

JDM popüler bir PIC programcısıdır çünkü seri port kullanır, minimum bileşen kullanır ve güç kaynağı gerektirmez. Ancak, internette birçok programcı varyasyonu ile karışıklık var, hangileri hangi PIC'lerle çalışıyor? Bu "eğitim tablosunda" JDM'yi test ettik ve tüm sorularınızı cevaplayacak olan Spice kullanarak devrenin nasıl simüle edileceğini gösteriyorum!
Gereçler
Analog Cihazlardan buradan indirilebilen LTspice.
Ayrıca burada JDM devre dosyalarına ihtiyacınız var.
Adım 1: Seri Bağlantı Noktası Gereksinimleri

JDM, ideal olarak +12/-12 Voltaj seviyeleri ile EIA232 spesifikasyonunu karşılayan bir seri port gerektirir.
Texas Instruments Line Driver MC1488 veri sayfasına göre (Şekil 3)
Çıkış empedansı = 4V/8mA = 500 ohm.
Kısa devre akım limiti =12mV, zaman limiti olmadan - çipe zarar vermez.
Hat alıcısının giriş empedansı = 3k ila 7k ohm önerilir.
Eski masaüstü bilgisayarlardaki seri bağlantı noktaları, bu gereksinimi karşılayan +12v/-12V kullanır.
Daha yeni dizüstü bilgisayarlardaki seri bağlantı noktaları daha düşük voltaj kullanır. JDM çalışabilir veya çalışmayabilir - cevap daha karmaşıktır.
Adım 2: PIC Programlama Gereksinimleri

PIC programlama gereksinimleri ile ilgili bilgiler Microchip'ten alınır. Yukarıdakiler tipik bir cihaz içindir.
Adım 3: JDM Spesifikasyonu

Orijinal JDM web sitesi zamanın sisleri arasında mı kayboldu? Bu, tasarımcının başlangıçta spesifikasyon için ne amaçladığını tahmin etmemizi sağlar.
- VDD=5V ve maksimum IDD=2mA'ya kadar sağlayın ("soket içi" sürüm için)
- VHH=13V ve maksimum IHH=0.2mA'ya kadar sağlayın.
- MCLR Yükselme süresi tVHHR = 1uS maks.
- ICSP versiyonu, hedefte 22k pull-up'a karşı MCLR'yi düşük çekebilmelidir.
Adım 4: Devre Açıklaması

Şekil JDM1, PICPgm web sitesinden alınan “standart” JDM devresine dayanmaktadır. Bu, PIC'nin TX ve RTS pinlerinden güç aldığı “PIC in Socket” programcısıdır. Orijinal diyagramı anlamak zordu, bu yüzden yukarıdan aşağıya normal akım akışını kullanarak yeniden çizdim. Ve yapım ve test sırasında gerekli olan “RESET”, “PROG” ve “RTS” LED göstergelerini ekledim. Umarım bunların davranış üzerinde zararlı bir etkisi yoktur.
Devre tasarımının normal kuralı, tüm zeminleri ortak kılmaktır, ancak JDM'nin temel özelliği, seri port topraklamasının (GND) VDD'ye bağlı olmasıdır. Bu, seri bağlantı noktası sinyalleri GND'ye göre, PIC sinyalleri mantık zeminine (VSS) göre ölçüldüğünden karışıklık yaratır.
TX yükseldiğinde, Q1, iki ileri taraflı diyot gibi davranır. (Q1 toplayıcı, normal transistör çalışmasında olduğu gibi ters taraflı değildir). Q1 toplayıcı, Zener (D3) tarafından VDD+8V'de kenetlenen C2'yi şarj eder. Q1 emitörü, Programlama/Doğrulama Modu için MCLR'ye 13V iletir.
TX düştüğünde, C3 kondansatörü D1 üzerinden şarj edilir ve VSS, zener (D5) tarafından VDD-5V'de kenetlenir. Ayrıca TX, D1 tarafından (VSS-0.6)'da kenetlenir. Q1 kapalı, C1 bir sonraki programlama darbesi için şarjını koruyor. MCLR, D2 tarafından 0V'de sabitlenir, bu nedenle PIC şimdi Sıfırlanır.
RTS yüksek olduğunda, saat PGC'ye iletilir. D4 PGC'yi VDD mantığında yüksek tutuyor. RTS düşük olduğunda, C3 kondansatörü D6 üzerinden şarj edilir ve VSS, zener (D5) tarafından VDD-5V'de kenetlenir. D6, PGC'yi VSS'de veya mantık 0'da kelepçeler.
Programlama sırasında, DTR'den gönderilen veriler, PIC'nin giriş olarak konfigüre ettiği PGD'de okunur. DTR yüksek olduğunda, Q2 “yayıcı takipçisi” olarak hareket eder ve PGD voltajı yaklaşık (VDD-0.6) veya mantık 1'dir. DTR düşük olduğunda, Q2 kötü bir transistör görevi görür (verici ve toplayıcı pinleri ters çevrilir). Q2, D7 tarafından VSS veya mantık 0'da sabitlenen PGD'yi düşük çeker.
Doğrulama sırasında PIC, seri bağlantı noktasına veri göndermek için bir çıkış olarak PGD'yi yapılandırır. DTR yüksek ayarlanmalı ve veriler CTS'de okunmalıdır. PGD çıkışı yüksek olduğunda, Q2 kapalıdır, CTS = DTR = +12V. PGD çıkışı düşük olduğunda, Q2 açıktır. Q2 toplayıcı DTR'den akım (12V+5V)/(1k+1k5)=7mA çeker ve CTS'yi düşük, VSS'ye çeker.
Adım 5: Simülasyon için Hazırlanın

LT baharatını indirin, burada verilen devre dosyalarını (*.asc) kaydedin ve açın. Devreyi simüle etmek için, ona bazı girdiler vermeli, ardından çıktıları “izlemeliyiz”. V1, V2 V3, çıkış empedansı R11, R12, R13 ile 12V seri bağlantı noktasını simüle eder.
- V1, TX üzerinde 0,5 ms'den 4,5 ms'ye kadar 2 Program Darbesi üretir
- V2, DTR'de 1,5 ila 4,5 ms arasında veri darbeleri patlaması üretir
- V3, RTS'de 0,5'ten 3,5 ms'ye kadar saat darbeleri patlaması üretir
V4, X1, R15 ve R16 bileşenlerinin tümü simülasyonun bir parçasıdır.
- V4, verileri doğrulamak için 2,5 ila 4,5 ms arasında 2 darbe üretir.
- Jumper X1, PGD'de ÇIKIŞI simüle eder.
- R15, R16, PIC'nin VDD ve MCLR'ye “yüklenmesini” simüle eder.
Adım 6: ICSP için Değişiklikler


Şekil JDM3, "devre içi" programlama sürümünü gösterir. Orijinalden yapılan değişiklikler
- ZIF soketini ICSP konektörüyle değiştirin.
- PIC artık hedef devre (V5) beslemesi ile çalıştırılmaktadır.
- 5V zeneri (D5) çıkarın.
- Küçük 100pF kapasitör (C4), hedef devredeki PIC'nin yanına taşınır.
- LED'ler, mümkün olduğunda devre kartından güç alır.
- Hedef devrede MCLR çekme direnci (R10) ve diyot (D10) gereklidir.
- UYARI. Hedef kartında "kayan" bir besleme, ideal olarak bir pil olmalıdır.
- JDM ile aynı anda diğer bilgisayar bağlantı noktalarını bağlayarak hedef toprağı (VSS) bilgisayar/PC toprağına bağlamayın.
JDM1'i simüle ettikten sonra, C2'de uzun şarj süresi sorunu ortaya çıktı. Sonra Fruttenboel'i okuduktan sonra, C2 ve Q1'in orijinaline bir değişiklik olarak eklendiği anlaşılıyor. C2 ve Q1'in sorun yaratmaktan başka ne yapmak istediğini düşünemiyorum. Dolayısıyla JDM4 için, Fruttenboel'deki basit ve anlaşılması kolay eski tasarıma dönüyoruz. D1 ve D3/LED2, MCLR'yi VSS ve VDD+8V arasında sıkıştırır. R1'in değeri 3k3'e düşürülür, bu sadece LED2'yi 12V'de aydınlatmaya yeterlidir.
JDM4, ayrıca daha zayıf seri bağlantı noktalarıyla çalışmak üzere tasarlanmıştır. TX yükseldiğinde (+9V), TX akım kaynağı = (9-8)/(1k +3k3) = 0,2ma, LED2'yi aydınlatmak için yetersiz olsa da MCLR'yi yukarı çekmeye yeter. TX düştüğünde (yaklaşık -7V), TX akım düşüşü =(9-7)/1k = 2mA. LED1 akımı = (led için 7-2)/(2k7) = 1.8mA. MCLR aşağı çekme akımı = 7-5.5/3k3 = 0.5mA.
Bu devre ayrıca, VHH=13V'u sürdürmek için yetersiz voltajın olduğu yerde minimum +/-7V seri portlarla ne olduğunu görmek için test edilmiştir (JDM5 simülasyonu). C1'in amacı şimdi ortaya çıkıyor, C1, MCLR'ye kısa bir + ve destek, TX'in yükselen kenarında 33 us'luk bir artış, PIC'nin programlama moduna girmesi için yeterince uzun, belki de? Ancak, MCLR'yi aşağı çekmek ve LED1'i birlikte yakmak için yetersiz akım olduğundan X2 atlama telini çıkarın (LED1'i devre dışı bırakın). TX düştüğünde, TX akım düşüşü = (7V-5,5V)/(1k+3k3) = 0,3mA, sadece MCLR'yi yukarı çekme R10'a karşı aşağı çekmek için yeterlidir.
7. Adım: Simülasyon Sonuçları



Grafik dosyalarını görüntülemek için aşağıdaki bağlantılara sağ tıklayıp ardından "Bağlantıyı Yeni Sekmede Aç"ı seçmek daha iyidir.
Simülasyon 1: orijinal JDM1 için MCLR, VSS ve RTS izi. Hemen gözlem 1, 2 ve 3 belirgindir.
Simülasyon 2: MCLR ve VSS izi ve önceki sorunları gideren değiştirilmiş JDM2 için RTS.
Simülasyon 3: JDM2 için program modunda veri gönderme için PGD, VSS ve PGC izi. 3.5mS'de 4. Gözlem.
Simülasyon 4: doğrulama modunda JDM2 için PGD, VSS ve CTS izi (jumper X1 takılı). Tamam
Simülasyon 5: JDM3 için MCLR, VSS, PGD ve PGC izi. Devreden güç kullanan ICSP birçok sorunu çözer.
Simülasyon 6: +/-9V seri portlu JDM4 için MCLR, VSS, PGD ve PGC izi. MCLR hemen yükselir, tamamen çalışır.
Simülasyon 7: +/-7V seri bağlantı noktası ve X2 atlama teli ile JDM5 için MCLR, VSS ve TX izi. C1, MCLR'nin yükselen kenarında, MCLR'yi TX'in üzerinde 13V'a itmek için hemen hemen yeterli olan bir + ve artış (spike) oluşturur.
8. Adım: Sonuçlar
Spice, devre çalışmasının “gizli sırlarını” ortaya çıkarmakta gerçekten iyidir. Açıkça JDM devresi çalışıyor ve birçok PIC yongası ile uyumlu, ancak aşağıdaki gözlemler olası sınırlamaları/uyumluluk sorunlarını/hatalarını ortaya koyuyor?
- C2, TX'in ilk darbesinde VPP'ye şarj olurken MCLR'nin uzun yükselme süresi. Belirtim başarısız 3.
- Seri bağlantı noktası, TX yükseldiğinde ve RTS düştüğünde C2'yi şarj eder. Ancak RTS'nin C3'ü şarj etme işi de var. Her ikisi de aynı anda gerçekleştiğinde, bu RTS üzerinde daha fazla yük oluşturur, sonuç olarak C3 simülasyonda 2 ms'de yükü kaybeder (VSS yükselir). Başarısız belirtim 1.
- Saat darbeleri 3,5 ms'de durduktan sonra C3 şarjını kaybeder (VSS yükselmeye başlar).
- C2'nin amacı nedir, hiç gerekli mi?
Çözümler
- Muhtemelen PICPgm bir "çalışma ortamı" yazılımı kullanır. C2'ye ön şarj için uzun bir TX darbesi uygulamalı, ardından sadece ikinci TX darbesinden sonra programlama moduna mı girmelidir? Simülasyon için, 1 ms'lik bir yükselme süresi sağlamak için C2'nin değerini 1uF'ye düşürdüm. İdeal bir çözüm değil.
- C2 ve C3'ü ayırın, böylece bağımsız olarak şarj olurlar. JDM2'de yapılan küçük bir değişiklik olan C2, VSS yerine GND'ye atıfta bulunur.
- JDM3 tarafından çözüldü. PIC hedef devre tarafından desteklendiğinden ICSP çok daha güvenilirdir.
- JDM4, 1. sorunu çözer. Bu, C2'yi tamamen ortadan kaldıran basit bir tasarımdır.
9. Adım: Ve Sonunda

Pudingin kanıtı yemekte. Bu JDM çalışıyor, bu yüzden kullanmaya devam edin.
Ve önerilerim:
- soket programlama ve 12V seri portlar için JDM2 kullanın,
- ICSP programcısı ve +/-9V üzerindeki seri portlar için JDM4'ü kullanın,
- +/-7V üzerindeki seri bağlantı noktaları için X2 atlama teli çıkarılmış halde JDM4 kullanın.
Referanslar:
Analog Cihazlar LT baharatı
resim
Fruttenboel
Sinsi köşede daha fazla PIC projesini takip edin
Önerilen:
Elegoo Super Start Kit Uno R3 İncelemesi: 4 Adım

Elegoo Süper Başlangıç Kiti Uno R3 İncelemesi: Birkaç gün önce Elegoo, test için bana bu Süper Başlangıç Kitini gönderdi. Öyleyse, içinde ne olduğuna bir bakalım. Bu kompakt kasayı açarken pek çok şey görebiliyoruz. Kapakta tüm bileşenleri içeren bir dizin var. İçinde tüm bilgileri içeren bir teşekkür kartımız var
ISP Olarak Arduino -- AVR'de Hex Dosyası Yaz -- AVR'de Sigorta -- Programcı Olarak Arduino: 10 Adım

ISP Olarak Arduino || AVR'de Hex Dosyası Yaz || AVR'de Sigorta || Arduino As Programmer:……………………………Daha fazla video için lütfen YouTube kanalıma ABONE OLUN……..Bu makale isp olarak arduino ile ilgili. Hex dosyası yüklemek istiyorsanız veya sigortanızı AVR'ye ayarlamak istiyorsanız, bir programlayıcı satın almanıza gerek yok, yapabilirsiniz
ESP-01 Programcı Hack - Kolay Olan:): 6 Adım

ESP-01 Programmer Hack - The Easy One:): Merhaba ESPers, Bu talimatta size ESP-01 / ESP8266-01 / ES-01 modülü için bir programcı yapmak için basit bir hack göstereceğim. Çoğumuz bu modül için programlayıcı olarak bir Arduino kartı veya FTDI USB-TTL cihazları kullandık. Her iki yöntem de iyi çalışıyor. Ama t
Arduino UNO ile ATTINY Mikrodenetleyicileri için Minik Bir Programcı: 7 Adım

ATTINY Mikrodenetleyiciler için Arduino UNO ile Minik Bir Programcı: ATTINY serisi mikrodenetleyicileri çok yönlülükleri, düşük fiyatları ve aynı zamanda Arduino IDE gibi ortamlarda kolayca programlanabilmeleri nedeniyle kullanmak şu anda ilgi çekici. kolayca aktar
Arduino için Bir Başka ATTINY85 ISP Programcı Kalkanı: 8 Adım

Arduino için Bir Başka ATTINY85 ISP Programcı Kalkanı: بسم الله الرحمن الرحيمATTINY85 ISP Programcı Kalkanı, ATTiny85 µDenetleyicilerini kolayca programlamak için tasarlanmıştır. Kalkan, Arduino Uno kartına takılmalıdır. Arduino Uno, "Devre İçi" olarak hareket etmeye hazırdır. Seri Programcı"