Universal bir proglamlayıcı yapıyoruz ...

Başlatan Ziya, 29 Temmuz 2006, 14:35:30

e3

@ Ziya hocam size PIC komponentleri için adaylar buldum. :D Buyrun inceleyin, yakışıklıları seçin bir kenara bırakın. :P Saygılar.Kolay gele. ;)

Kod Seç

DSPIC30F5016 
DSPIC30F2010
DSPIC30F2011 
DSPIC30F2012 
DSPIC30F3010
DSPIC30F3011 
DSPIC30F3012 
DSPIC30F3013 
DSPIC30F3014 
DSPIC30F4011 
DSPIC30F4012 
DSPIC30F4013
DSPIC30F5011 
DSPIC30F5013 
DSPIC30F5015 
DSPIC30F6010
DSPIC30F6011 
DSPIC30F6012 
DSPIC30F6013 
DSPIC30F6014 
PIC10F200 
PIC10F202 
PIC10F204 
PIC10F206 
PIC12C508 
PIC12F508 
PIC12C508A
PIC12C509
PIC12F509 
PIC12CR509A 
PIC12C509A
RFPIC12C509AF 
RFPIC12C509AG
PIC12F510 
PIC12CE518 
PIC12CE519 
PIC12F629 
PIC12F635 
PIC12C671 
PIC12C672 
PIC12CE673 
PIC12CE674 
PIC12F675 
RFPIC12F675F 
RFPIC12F675H
RFPIC12F675K 
PIC12F683 
PIC14000 
PIC16F54 
PIC16F57 
PIC16F59
PIC16C61 
PIC16C62 
PIC16CR62
PIC16C62A 
PIC16C62B 
PIC16CR63 
PIC16C63 
PIC16C63A
PIC16CR64
PIC16C64
PIC16C64A 
PIC16C65 
PIC16CR65 
PIC16C65A 
PIC16C65B 
PIC16C66 
PIC16C67
PIC16C70 
PIC16C71 
PIC16C72 
PIC16F72 
PIC16CR72 
PIC16C72A 
PIC16F73 
PIC16C73 
PIC16C73A 
PIC16C73B 
PIC16F74
PIC16C74 
PIC16C74A 
PIC16C74B 
PIC16LC74B 
PIC16F76 
PIC16C76 
PIC16C77 
PIC16F77
PIC16F83 
PIC16C83 
PIC16CR83 
PIC16F84 
PIC16C84 
PIC16CR84 
PIC16LF84A 
PIC16C84A 
PIC16F84A 
PIC16F87 
PIC16F88 
PIC16C432 
PIC16C505
PIC16F505 
PIC16F506 
PIC16C554 
PIC16C558 
PIC16C620 
PIC16C620A 
PIC16C621  
PIC16C621A 
PIC16C622 
PIC16C622A 
PIC16CE623 
PIC16CE624 
PIC16CE625 
PIC16F627 
PIC16F627A 
PIC16F628 
PIC16F628A 
PIC16F630 
PIC16F636 
PIC16F639 
PIC16C641 
PIC16C642  
PIC16F648A 
PIC16C661 
PIC16C662 
PIC16F676 
PIC16F684 
PIC16F685 
PIC16F687  
PIC16F688 
PIC16F689 
PIC16F690 
PIC16C710 
PIC16C711  
PIC16C712 
PIC16C715  
PIC16C716 
PIC16F716 
PIC16C717 
PIC16F737 
PIC16C745 
PIC16F747
PIC16C765 
PIC16F767 
PIC16C770 
PIC16C771 
PIC16C773 
PIC16C774 
PIC16F777 
PIC16C781 
PIC16C782 
PIC16F785 
PIC16F818 
PIC16F819 
PIC16F870  
PIC16F871 
PIC16F872 
PIC16F873  
PIC16F873A
PIC16F874 
PIC16F874A 
PIC16F876 
PIC16F876A 
PIC16F877 
PIC16F877A 
PIC16F913 
PIC16F914 
PIC16F916 
PIC16F917 
PIC16C923 
PIC16C924 
PIC16C925  
PIC16C926  
PIC16F946  
PIC18F242 
PIC18C242 
PIC18F248 
PIC18F252 
PIC18C252
PIC18F258  
PIC18F442  
PIC18C442 
PIC18F448 
PIC18F452 
PIC18C452 
PIC18F458 
PIC18C601 
PIC18C658  
PIC18C801 
PIC18C858  
PIC18F1220 
PIC18F1320 
PIC18F2220 
PIC18F2320 
PIC18F2331 
PIC18F2410 
PIC18F2420 
PIC18F2431  
PIC18F2439 
PIC18F2455 
PIC18F2480 
PIC18F2510  
PIC18F2515 
PIC18F2520 
PIC18F2525 
PIC18F2539 
PIC18F2550  
PIC18F2580  
PIC18F2585 
PIC18F2610 
PIC18F2620 
PIC18F2680 
PIC18F4220 
PIC18F4320  
PIC18F4331  
PIC18F4410 
PIC18F4420  
PIC18F4431 
PIC18F4439 
PIC18F4455 
PIC18F4480  
PIC18F4510  
PIC18F4515  
PIC18F4520  
PIC18F4525  
PIC18F4539 
PIC18F4550 
PIC18F4580 
PIC18F4585  
PIC18F4610 
PIC18F4620 
PIC18F4680 
PIC18F6310 
PIC18F6390 
PIC18F6410 
PIC18F6490 
PIC18F6520 
PIC18F6525 
PIC18F6527 
PIC18F6585 
PIC18F6620 
PIC18F6621  
PIC18F6622 
PIC18F6627 
PIC18F6680 
PIC18F6720 
PIC18F6722 
PIC18F8310 
PIC18F8390 
PIC18F8410
PIC18F8490
PIC18F8520 
PIC18F8525 
PIC18F8527 
PIC18F8585 
PIC18F8620 
PIC18F8621 
PIC18F8622 
PIC18F8627 
PIC18F8680 
PIC18F8720 
PIC18F8722 
DSPIC30F6010A 
DSPIC30F6012A 
DSPIC30F6013A 
DSPIC30F6014A 
DSPIC30F6015 
DSPIC30F6011A 


Alın size PIC için Good-Prog 8O . ( Baba Programlayıcı :P )
.eem.

mp3dragon

@Ziya,

Universal programlayıcı yapıyorsak eğer hedef chip seçimi projeyi universal olmaktan çıkarır. Devreyi biraz büyük tutup bir kere yaptıktan sonra algoritma değişimi ile tüm chipler programlanmalı. Hatta daha piyasada olmayan chipler bile. Benim önerim;

1. Vpp ve Vcc programlanabilmeli,
2. 40 bacaklı zif soket üzerinde tüm bacaklar giriş/çıkış/vpp/vcc/gnd olarak seçilebilmeli
3. yanlış chip, hatalı ve ters takma durumunda koruma ve uyarı olmalı
4. ICSP/JTAG için konnektör olmalı
5. PC bağlantısı USB olmalı
6. Devre ayrı kaynaktan beslenmeli (bazı laptopların USB çıkışları 200 ma olabiliyor. Devre için 25 volt Vpp de düşünüldüğünde yetersiz gelebilir. voltaj dalgalanmaları istenmeyen bir durum)

Çözüm önerilerim ise;

1. LM317 + dac veya digital pot
2. Transisör + buffer + 1n4148
3. Vpp ve Vcc akımının sürekli ölçümü akım bir değer üzerine çıktığında uyarı ve koruma
4.
5.ft232/245
6.24 volt AC
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

Allegro

Alıntı yapılan: "mp3dragon"...
3. Vpp ve Vcc akımının sürekli ölçümü akım bir değer üzerine çıktığında uyarı ve koruma...


Evet Jetprog 16 adet 16F628A yi ust uste programlamama izin verirken 17. de "Aşırı Akım Hatası" veriyor.
Yani programlama esnasında akımlar ölçülüyor.... :D

Ziya

Alıntı yapılan: "mp3dragon"@Ziya,

Universal programlayıcı yapıyorsak eğer hedef chip seçimi projeyi universal olmaktan çıkarır. Devreyi biraz büyük tutup bir kere yaptıktan sonra algoritma değişimi ile tüm chipler programlanmalı. Hatta daha piyasada olmayan chipler bile.
Sorun da burada. 40 bacaklı zif soketler 16 bitlik eepromlar için yetersiz kalıyor. En azından data ve adres hatları arttırılması gerekiyor.
AlıntıBenim önerim;

1. Vpp ve Vcc programlanabilmeli,
2. 40 bacaklı zif soket üzerinde tüm bacaklar giriş/çıkış/vpp/vcc/gnd olarak seçilebilmeli
İkinci madde bence pratikte mümkün değil. Vpp olarak belirlenen bir bacağa gerektiğinde 12.5 Volt verilecek. Fakat bu bacak çıkış olarak kullanıldığında bu çıkış işlemcinin bşr bacağına gelecek. Arada optocoupler gibi bir şey olmadan bunu yapmak mümkün değil. Hedef çipleri belirleyelim demekten kastım aslında hangi bacaklar Vpp ve Vcc olacak, hangilerine gerektiğinde 5 yada 12.5 volt verilecek bunları belirlemek idi. Vpp olarak gösterilen bir bacak başka bir çip için çıkış olması gerekiyor ise o bacağın Vpp ile bağlantısı kesilmeli (röleler ile). Bunun bütün bacaklara uygulanması pratikte mümkün değil (yani zor ve gereksiz anlamında demek istiyorum).
Alıntı
3. yanlış chip, hatalı ve ters takma durumunda koruma ve uyarı olmalı
Bu da aslında karmaşık bir işlem ama olması gerekir. Yanlış bacağa Vpp vermemek gerek.
Alıntı4. ICSP/JTAG için konnektör olmalı
5. PC bağlantısı USB olmalı
6. Devre ayrı kaynaktan beslenmeli (bazı laptopların USB çıkışları 200 ma olabiliyor. Devre için 25 volt Vpp de düşünüldüğünde yetersiz gelebilir. voltaj dalgalanmaları istenmeyen bir durum)
Bunlar tamam.
AlıntıÇözüm önerilerim ise;

1. LM317 + dac veya digital pot
2. Transisör + buffer + 1n4148
3. Vpp ve Vcc akımının sürekli ölçümü akım bir değer üzerine çıktığında uyarı ve koruma
4.
5.ft232/245
6.24 volt AC
USB çipi için ayrı para ödemektense USB'si üzerinde olan işlemci kullanmayı tavsiye ediyorum. Bu konuda ARM7 işlemciler kullanılmalı derim. Bulunması zor demiştiniz. Bakın böyle bir pazar oluşturunca onun da bulunması kolay olacak. 2 yıl önce 18 serisi picler bulunmuyordu. Şimdi pek çok yerde var. Neden?

LM317 ve DAC her bacak için kullanılabilir mi? Her bir bacak için bir DAC adresi belirlemek ve voltaj değerini DAC'a yüklemek gerekir. Her bir bacaktaki değeri okuma için de ADC mi kullanmak gerekir bu durumda?

Bence Vpp ve Vcc için kullanılabilecek bacaklar belirlendikten sonra bunlara röleler vasıtasıyla değişik düzenlemeler yapılarak (gerektiğinde bir bacak Vpp olmaktan çıkıp, çıkış olarak işlemcinin bir bacağına yönlendirilebilmeli). Tabi bu durumda gelecekte çıkacak olan işlemcilere destek verilebilir mi burası işlemicinin tasarımcısına bağlı kalacak.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

Ziya

Protection,

rf picler normal b6,b7 pinlerinden de programlanabiliyormudur? (yani rfsiz)
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

mp3dragon

@Ziya,


AlıntıSorun da burada. 40 bacaklı zif soketler 16 bitlik eepromlar için yetersiz kalıyor. En azından data ve adres hatları arttırılması gerekiyor.


maksimum 40 bacaklı DIP paket harici çipler için adaptör şart zaten

Alıntıİkinci madde bence pratikte mümkün değil. Vpp olarak belirlenen bir bacağa gerektiğinde 12.5 Volt verilecek. Fakat bu bacak çıkış olarak kullanıldığında bu çıkış işlemcinin bşr bacağına gelecek. Arada optocoupler gibi bir şey olmadan bunu yapmak mümkün değil. Hedef çipleri belirleyelim demekten kastım aslında hangi bacaklar Vpp ve Vcc olacak, hangilerine gerektiğinde 5 yada 12.5 volt verilecek bunları belirlemek idi. Vpp olarak gösterilen bir bacak başka bir çip için çıkış olması gerekiyor ise o bacağın Vpp ile bağlantısı kesilmeli (röleler ile). Bunun bütün bacaklara uygulanması pratikte mümkün değil (yani zor ve gereksiz anlamında demek istiyorum).


zor olduğu kesin ama bir kere yaptıktan sonra değmeyin keyfimize. willem de olduğu gibi pcb1.0, pcb3.5 gibi donanım değişikliği gerekmez. Sadece ihtiyaca göre adaptör kartı yapılır.Universal programlayıcıların fiyatı da malum. Fiyat konusunda sıkıntımız olacağını zannetmiyorum.

AlıntıBu da aslında karmaşık bir işlem ama olması gerekir. Yanlış bacağa Vpp vermemek gerek.


çok karmaşık değil sadece vpp ve vcc nin çektiği akım ölçülecek ve datasheetlerde verilenden fazla bir değer varsa uyarı verecek. Hatta vpp ve vcc kademeli olarak arttırılabilir. MCU Pic serisi olursa içerisindeki adc iş görür.

AlıntıUSB çipi için ayrı para ödemektense USB'si üzerinde olan işlemci kullanmayı tavsiye ediyorum. Bu konuda ARM7 işlemciler kullanılmalı derim. Bulunması zor demiştiniz. Bakın böyle bir pazar oluşturunca onun da bulunması kolay olacak. 2 yıl önce 18 serisi picler bulunmuyordu. Şimdi pek çok yerde var. Neden?


USB gömülü ARM kullanmak elbette projeyi süper yapar ama işin zorlukları da var.

1. ARM de USB için kodu kendimiz yazmamız lazım PC tarafındaki driver dahil. USB protokolu RS232 kadar da basit değil.
2. Forumda ARM tecrübesi yok denecek kadar az.
3. ARM işlemcilerde gerektiğinde asm'ye inmek pic ve muadili işlemciler kadar rahat değil. Yani ARM de işlemciye pic kadar hakim olmak o kadar kolay değil.
4. ARM USB işi ile de ilgilenmesi gerekeceği için ekstra kod ve zaman çalacaktır.

AlıntıLM317 ve DAC her bacak için kullanılabilir mi? Her bir bacak için bir DAC adresi belirlemek ve voltaj değerini DAC'a yüklemek gerekir. Her bir bacaktaki değeri okuma için de ADC mi kullanmak gerekir bu durumda?


Vpp ve Vcc üretimi ayrı ayrı değil tek bir lm317 + dac ile olacak, sadece hangi bacağa bağlanacağı tarafımızdan seçilecek. Her bacakta ölçüm değil sadece Vpp ve Vcc çıkışında yapılacak. Dac olarak R-2R bile kullanılabilir.

her bacağa Vpp verilmeyebilir ama her bacak giriş/çıkış/vcc/gnd olabilmeli.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

röle kullanmadan zif soket bacakları için örnek in/out devresi aşağıda;




edit:
ise ve Ziya arkadaşların hatırlatması ile üsteki devredeki npn/pnp hatası değiştirildi
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

Ziya

Alıntı yapılan: "mp3dragon"
her bacağa Vpp verilmeyebilir ama her bacak giriş/çıkış/vcc/gnd olabilmeli.
Her bacağı giriş yada çıkış yapabiliriz. Bunun için çok bacaklı işlemci kullanmak gerekir. Fakat her bacağa Vcc vermek yine röle kullanımı gerektirir. Zira Vcc için gerekli 5 Volt, 6.5 volt gibi değerleri işlemcilerle sürmek zor.

Alıntıröle kullanmadan zif soket bacakları için örnek in/out devresi aşağıda;
Altta görünen devreyi anlamadım. Üsttekinde de transistör pnp olmayacak mı? Sanki ters olmuş gibi. Ben daha önce bir eprom programlayıcı yapmıştım (Avustralyadan Andrew isminde birinin geliştirdiği programlayıcı). Orada Vpp ve Vcc aynı bacağa nasıl uygulandığı gayet güzel denendi. Sorun Vpp ya da Vcc nin bağlandığı bacak output olarak kullanılacağı zaman arada izolasyon yapmak gerekecek. Ya da çıkışı en fazla 5 volt ile sınırlayacak bir düzenekle mcu ya bağlamak gerekecek. Tabi bu işlemler için mcu dan Vpp tetiklemek için bir, Vcc tetiklemek için bir, Vpp/2 tetiklemek için bir ve input için bir bacak kullanmak gerekir. Topraklama için de bir npn transistörle mcu dan çıkış alacak olursak her Vpp nin bağlanacağı bacak için en az 5 mcu GPIO pini kullanılacak demektir. Yüzey montaj transistörlerle belki bu sorun aşılabilir. MCU GPIO dan çıkış olarak kullanılacak pinlerin yerine de 74hc595ler kullanılabilir.

Tasarımı çok iyi optimize etmek gerekir. Birkaç değişik yöntem üzerinde çalışıp artılarını ve eksilerini değerlendirelim derim. Vpp ve Vcc her bacak için düşünülmeyebilir.

ARM7 kullanma konusunda bahsettiğiniz gerekçeler çok gerçekçi görünmedi bana. Yazılımda assemblera neden gerek duyduğunuzu anlayamadım. 50 MHzlik işlemcide işlemler 20 ns sürede gerşekleşecek. Programlama için gerekli olabilecek 120 us gibi süreler timerlar ile elde edilecek. İnterrupta geçiş süreleri o kadar fazla değil ki assemblera ihtiyaç duyulsun. Üstelik interrupta geçişte ARM7 context saving işlemi yapmıyor, sadece interruptlarda (herbirinde farklı) yeni working registerler kullanıyor. Yani hız kaybı falan yok.

ARM tecrübesi az olması o işlemciyi kullanmayacağımız anlamına gelmez. Zaten sorun peripherallerin kullanımından kaynaklanabilir ki o da bence sorun değil. Derleyicinin simulatörü ve ISIS varken bence ARM7 kullanmakta bir problem yok.

ARM7 USB windows driverları sanıyorum üretici firma tarafından web sitelerinde bulunuyor. Kaldı ki lpc2000 yazışma forumunda ve lpc örnek kodlarında usb kullanımı konusunda örnekler de mevcut. Bence güzel bir çalışma olurdu bu.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

mp3dragon

Alıntı50 MHzlik işlemcide işlemler 20 ns sürede gerşekleşecek. Programlama için gerekli olabilecek 120 us gibi süreler timerlar ile elde edilecek.


benim ARM için 1 beden büyük dememin sebebi bu idi. Birde bunalmiş hocamın önerdiği gibi algoritmalar PC tarafında durursa çok bacaklı olması haricinde bir avantajı kalmaz oda f452 için.

Ama madem ARM ısrarı var benim için farketmez. Hiç değilse ARM öğrenmiş oluruz. Resimde altta görünen mosfetlerin amacı vcc/gnd/in işlemi; hem 1/0 data hemde vcc/gnd bir arada tristate'in yüksek akım basabilmesi için. Bu devrenin önüne 74hc573 gibi bir latch bağlandığında tris registeri gibi in/out olarak pinler programlanabilir.
Epromlarda VCC bacağı %99,99 sağ üstte (ZIF 40. bacak) buda 5/6.5 v. işini kolaylaştırıyor.
İşlemci LPC 21xx olursa seri porttan programlama avantajı var. ama o zaman fazladan bir rs232 portu koymak gerekecek. Veya dönüp dolaşıp  ft232 kullanmak gerekecek.

mosfetler için bs170/bs250 kolay bulunabilen seçenekler. daha düşük RDSon direncine sahip ve smd mosfet seçenekleri düşünülebilir.

geriye birtek Vpp ile zif soketten okuma çakışması problemi kalıyor.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

başlangıç algoritması şöyle olabilir;

1- Programlayıcı PC ile iletişimi kontrol eder,
2- PC programından hangi çipin seçildiğine bakar,
3. Seçilen çipe ve işleme göre in/out/Vpp/Vcc/Gnd pinlerini ayarlar.
3- ZIF soketin boş olup olmadığına bakar (Icc = 0) boş ise xxx'i yerleştirin der.
4- Çipin doğru olup olmadığına bakar (Icc akımı kontrol eder hatta Vcc yi kademeli arttırır)
5- Vpp yi 5 volttan başlayarak kademeli olarak arttırır ve çektiği akıma bakar eğer akım aniden yükseliyorsa hata mesajı verir.
6. Her şey yolunda ise programlamaya başlar aradaki işlemleri LCD ve PC de ekrana basar.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

power supply;

mantık elemanları ve işlemci için 5 ve 3,3 volt (ARM olacaksa) sabit

Vcc için 3...7 volt arası 0,25 volt adımla değiştirilebilen

Vpp için 3...26 volt arası 0,25 volt adımla değiştirilebilen.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

Ziya

ARM7 timerlarını kullanmakta bir sorunumuz yok o nedenle assemblera geçmeye ihtiyaç yok. zaten ARM7 lerde 32 bitlik timerlar var. istenilen zaman gecikmesini üretmede bir problem yok.

Kabaca bir taslak çizip üzerinde konuşmak daha iyi olacak. Epromlar için mantığı oturttuktan sonra diğer çipler için detaylandırırız.

LPC2148 de USB üzerinde ve 512 kb gibi bir hafıza var. 4.5 dolarlık ft232 ye gerek kalmıyor. Bence PC tarafında script language benzeri basit ama herhangi bir çipin programlama algoritmasını tarif edebilecek bir dil geliştirmek gerek.  Böylece PC programlayıcıya algoritmayı ve verileri gönderir, gerisi mcu tarafından halledilir.

Başlangıç algoritmasında
2. adımdaki işlem yapılmadan da hangi çipin zif sokete yerleştirildiği test edilerek bulunabilir. Bu konuda detaylı bir işlem sırası tablo haline getirilmeli derim.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

mp3dragon

LPC2148 nerden bulcaz şu an benim en büyük problemim bu oldu!
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

Allegro


Ziya

Alıntı yapılan: "mp3dragon"LPC2148 nerden bulcaz şu an benim en büyük problemim bu oldu!
Galiba bu işlemci bize io pin bakımından yeterli olmayacak.

Erol hocam, öyle fotolar gösterip moralimizi bozmasan :D

Yanlış hatırlamıyorsam Aster hocamın fiyat performans açısından tavsiye ettiği ve yine üzerinde usb bulunan işlemciler sanki daha çok io portuna sahiptiler diye hatırlıyorum.

İşlemci konusu daha sonraya kalabilir. Bir 40 pin zif sokete Vpp, Vcc-1, Vcc-2, GND, ... vs nasıl sürebileceğimizi bir kararlaştıralım. İşlemci sorunu nasıl olsa halledilir.

Bu konuda katkı sağlayabilecek başka arkadaş varmı? Değişik fikirler doğruyu bulmamızda yardımcı olacaktır.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey