İçindekiler:

VUSBTiny AVR SPI Programcısı: 3 Adım
VUSBTiny AVR SPI Programcısı: 3 Adım

Video: VUSBTiny AVR SPI Programcısı: 3 Adım

Video: VUSBTiny AVR SPI Programcısı: 3 Adım
Video: VUSBTINY AVR Programmer 2024, Kasım
Anonim
VUSBTiny AVR SPI Programcısı
VUSBTiny AVR SPI Programcısı

bir usbtiny isp programcısı yaptıktan ve 6 ay boyunca kullandıktan sonra, taşımak için bir tane daha yapmayı düşünüyordum. usbtiny isp tasarımının sadeliğini seviyorum ama daha da küçültmek ve daha az parça almak istiyorum. Orijinal tasarımda değiştirmek istediğim bir şey saat kristali kullanımını ortadan kaldırmak. Bulduğum bir çözüm, v-usb sürücülerinin attiny25/45/85 cihazlarda 16.5Mhz dahili osilatörü desteklemesidir. bu yüzden bu projeye usbtiny isp'nin usb iletişimi için v-usb kullanması için başladım. Anında sağladığı fayda, yerden tasarruf sağlaması ve daha az bileşen sayısına sahip olmasıdır (artık kristal yok). Atmel ATtiny mikrodenetleyicileri için protokol. Elbette ATmega serisinde de çalışacak. Yazılım, saat hızı 12 MHz olan bir AVR için yazılmıştır. Bu frekansta, USB veri yolundaki her bit 8 saat döngüsü alır ve birçok hile ile USB dalga formlarını yazılımla çözmek ve kodlamak mümkündür. USB sürücüsü, yapılandırmaya ve derleyici sürümüne bağlı olarak yaklaşık 1250 ila 1350 bayt flash alanına (isteğe bağlı tanımlama dizeleri hariç) ve 46 bayt RAM'e (yığın alanı hariç) ihtiyaç duyar. C arayüzü, https://www.obdev.at/products/vusb/ adresindeki configuration.vusb açıklamasına bağlı olarak 3 ila 5 işlevden oluşur. V-USB, Atmel's için düşük hızlı bir USB aygıtının yalnızca yazılım uygulamasıdır. AVR mikrodenetleyicileri, herhangi bir ek çip gerektirmeden hemen hemen her AVR mikrodenetleyici ile USB donanımı oluşturmayı mümkün kılar. Yapım ve kullanım hakkında video

Adım 1: Özellikler ve Parçalar

Özellikler ve Parçalar
Özellikler ve Parçalar

* usbtiny isp'den programlama mantığı, olgun avr-dude desteği * küçük ayak izi * minimum bileşenler * hedef cihaza güç sağlar hedef mcus'a giden io hatlarının korunmadığını unutmayın. https://www.obdev.at/vusb/ usbtiny isp https://www.xs4all çerçevesinden v-usb'de bulunan çalışmalara göre SCK ve MOSI'ye 1k-2k dirençler ekleyerek olası yanlış bağlantı referanslarına karşı koruma sağlayabilirsiniz. nl/~dicks/avr/usbtiny/parça listesi * attiny45/85 (85 daha kolay gelir) * 3.6v zener diyotlar (1n747, BZX79,..1W tiplerinden kaçının) * 68ohm direnç x 2 * 1.5K direnç * mini breadboard 170 bağlantı noktası * usb kablosu (dolar dükkanı usb yazıcı kablosu iyidir) * io hatları koruması için 1k/2k dirençler (isteğe bağlı) gerekli araçlar * çalışan bir avr programcısı (evet, bu bir catch22, bir tane yapmamız gerekiyor) * çalışan avr programlama ortamı

Adım 2: Breadboard Düzeni, Şeması ve Yapısı

Breadboard Düzeni, Şeması ve Yapısı
Breadboard Düzeni, Şeması ve Yapısı
Breadboard Düzeni, Şeması ve Yapısı
Breadboard Düzeni, Şeması ve Yapısı

yapı

* breadboard düzenini takip edin, bileşenler, 3 direnç, 2 diyot, 1 kapak artı 8 pin mcu yok. * Bir dolar dükkanı usb yazıcı kablosunu yazıcının ucunu kesin, 4 açık tel olacak, sabitleyin ve 4 pinli erkek başlık haline getirin, bunu breadboard'a bağlamak için kullanacağız. düzen ve pin ataması için şemaya bakın (J1). * diyot polaritesine dikkat edin.

projeyi inşa etmek ve yanıp sönmek

proje, avr-gcc toolchain ile bir linux ubuntu lucid kutusunda inşa edildi. zaten böyle bir ortamınız olduğu varsayılır veya nasıl kurulacağını internetten öğrenebilirsiniz. kaynak kodları, kalıtım yoluyla lisanslanan gnu gpl v2'dir.

kaynak kodu v-usb tarafından önerilen bir kuralı izler, vusbtiny.tgz kaynak paketini indirebilir ve bir proje dizinine katlanmamış olarak indirebilirsiniz. kaynak dizininizde, benim değiştirilmiş usbtiny programlayıcı versiyonum olan bir main.c var. ve v-usb katmanını içeren bir usbdrv alt dizini. Lütfen bunu oluştururken yukarıdaki iki projedeki lisans koşullarına uyun. programcı mantığıyla ilgili kaynağım ladyada versiyonuna değil (neredeyse aynı olmalarına rağmen) Dick Streefland versiyonuna dayanıyor.

Çok zincirli bir yapıya sahip olmayanlar için aşağıdaki ikili dosyayı kullanabilirsiniz.

vusbtiny.hex'i indirmek için tıklayın

ve bellenimi flaş etmek için avrdude kullanın

avrdude -c usbtiny -p t45 -e -V -U flash:w:usbtiny.hex

(cihazınız bir tiny85 ise, -p t45 w/ -p t85'i değiştirin)

kaynak buradan indirebilirsiniz vusbtiny.tgz indirmek için tıklayın

kaynak paketi çalışma dizininize çıkarın

tar -zxvf vusbtiny.tgz

* vusbtiny çalışma dizinine geçmek için cd vsubtiny yapın * kullanacağınız çipe göre hedef cihaz için bir makefile yapın. yani PROGRAMMER_MCU=t45 veya t85 * make yapın * favori ISP programlayıcınızı ekleyin * makefile'i değiştirin ve gerekirse avrdude parametrelerinizi değiştirin. stok bir USBTiny programcısı varsayar. yani AVRDUDE_PROGRAMMERID=usbtiny * make install aracılığıyla flash bellenimi

Firmware yanıp söndükten sonra sigortayı düzgün bir şekilde ayarlamamız gerekiyor, bu projede pin 1 reseti io olarak kullanıyoruz

* usb zamanlaması için v-usb katmanının gerektirdiği şekilde kullanılan ppl saati * io olarak kullanmamız gerektiğinden sıfırlama pini devre dışı

avrdude -c usbtiny -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m

io için RESET pinine (pin1) ihtiyacımız olduğundan, bu ayar 5V SPI aracılığıyla daha fazla programlamayı devre dışı bırakır. sigortayı kurtarmak için bir HVSP programlayıcısına erişmeniz gerekecek.

3. Adım: Kullanım ve Uygulama

Kullanım ve Uygulama
Kullanım ve Uygulama
Kullanım ve Uygulama
Kullanım ve Uygulama
Kullanım ve Uygulama
Kullanım ve Uygulama

breadboard üzerinde doğrudan yanıp sönme

8 pinli AVR cihazlarını flaş etmek için vusbtiny kullanıyorsanız, hedef cihazınıza programlayıcı cihazın üstüne basmanız yeterlidir. programlayıcı, programlama pinleri hedeflerle eşleşecek şekilde tasarlanmıştır. Yine de bir püf noktası var, PC'ye bağlanan USB D+ ve D- pinleri oldukları için programlayıcı mcu'daki pin 2 ve 3'ü izole etmeniz gerekecek. Bunu başarmak için bir parça bant kullanıyorum, fotoğraflarda görebilirsiniz. Aşağıdaki gösteri, tiny45'te bellenimi almaya hazır bir tiny13v "sürme" dir.

ISP, jumper üzerinden yanıp sönüyor

ISP (sistem içi programlama) aracılığıyla bir hedef devreyi programlamak için bir ISP kablosuna ihtiyacınız vardır. burada standart 2x3 veya 2x5 pin başlıklarını kullanmıyorum. Bunun yerine, daha çok breadboard dostu olan bir 1x6 jumper kullanıyorum, bunları breadboard düzeninde ve şemalarında gösterildiği gibi J2'ye eşleyerek 2x3 veya 2x5 pin başlığı yapabilirsiniz. Aşağıdaki fotoğraf, ISP aracılığıyla flaşlanmaya hazır bir küçük 2313'ü göstermektedir.

sorun giderme

* bellenimi yanıp sönemez mi? orijinal programlayıcınızı kontrol edin, avrdude'daki -B bayrağı aracılığıyla zamanlamayı ayarlamanız gerekebilir. çip 1'i okumaya çalışın, bozuk bir sigorta olabilir, çipinizin harici bir saat sinyaline ihtiyacı olabilir. çipinizi varsayılan 1'e geri döndürmeniz gerekebilir. * Bağlantıları kontrol edin * Farklı io pinleri kullanıyorsanız, kodu ve bağlantıları kontrol edin * 500mw, 400mw tiplerinde zener diyotları değiştirebilirsiniz * R3 değerini 1.2K veya altına düşürmeyi deneyebilirsiniz -B bayrağı avrdude, daha kısa bir USB kablosuna sahip olmanıza yardımcı olur

Önerilen: