Soru:
ArduinoISP örneğinde kullanılan pinleri değiştirme
user1092
2014-04-18 01:33:48 UTC
view on stackexchange narkive permalink

Kendi ATTiny programcımı oluşturdum, ancak yol boyunca biraz hata yaptım - başlıkları doğru şekilde hizalamadım ve şimdi bunların yerine ArduinoISP uyarınca 10, 11, 12 ve 13 numaralı pinlere takmak yerine örnek - şimdi 8, 9, 10 ve 11 numaralı pinlere takılıyorlar.

Pinleri ArduinoISP örneğiyle eşleşecek şekilde bağlamak için bazı jumper kabloları kullanırsam, hepsi iyi çalışıyor, yani gerçek karttaki kablolar Tamam, ancak, sadece yaptığım kartımı doğrudan takabilmek istiyorum ve bu nedenle önyükleyicinin yazılması ve yüklemenin bunun yerine 8, 9, 10 ve 11 numaralı pinler aracılığıyla çalışması gerekiyor.

RESET, MOSI, MISO ve SCK referanslarını kendi pin numaralarımla değiştirerek örneği kendim değiştirmeyi denedim, ancak bu yeterli görünmüyor. Şimdi bootloader'ı yazmaya çalıştığımda şu hatayı alıyorum:

  avrdude: stk500_program_enable (): protocol error, wait = 0x14, resp = 0x50avrdude: initialization fail, rc = -1 Double bağlantıları kontrol edin ve tekrar deneyin veya bu check.avrdude: stk500_disable (): protokol hatası, wait = 0x14, resp = 0x51  

kullanarak bir eskiz yüklemeyi denersem özel pin numaralarına sahip sürümümde şu hatayı alıyorum:

  avrdude: stk500_getsync (): senkronize değil: resp = 0x00  

Kablolama Programcı çiziminin farklı pinlerle çalışmasını istemem dışında http://highlowtech.org/?p=1706 burada bulunanla aynı.

Teşekkürler

Iki yanıtlar:
Craig
2014-04-18 01:48:53 UTC
view on stackexchange narkive permalink

Pinleri değiştiremezsiniz.

ArduinoISP, temeldeki AVR donanımı tarafından sağlanan 10-13 pinlerinde SPI arayüzünü kullanır.

microtherion
2014-04-18 04:28:19 UTC
view on stackexchange narkive permalink

Pratik bir konu olarak, bir şeyleri düzeltmeniz çok daha iyidir, bu nedenle donanım SPI'sına karşılık gelen orijinal pimleri kullanırsınız.

Bununla birlikte, yazılımda SPI uygulamak çok zor değil (elbette daha düşük bir performansta):

  static uint8_t SPITransfer (uint8_t out) {uint8_t in = 0 ; for (int i = 0; i<8; ++ i) {digitalWrite (MOSI, (& 0x80 dışında)! = 0); << = 1; digitalWrite (SCK, HIGH); in = (<< 1 cinsinden) | digitalRead (MISO); digitalWrite (SCK, DÜŞÜK); } dönüş;}  

Birkaç SPI modu vardır, ancak bu ISP için kullanılanı uygular.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...