İçindekiler:

ATtiny84/85 SPI Arayüz Pimi Yeniden Kullanımı: 6 Adım
ATtiny84/85 SPI Arayüz Pimi Yeniden Kullanımı: 6 Adım

Video: ATtiny84/85 SPI Arayüz Pimi Yeniden Kullanımı: 6 Adım

Video: ATtiny84/85 SPI Arayüz Pimi Yeniden Kullanımı: 6 Adım
Video: Digispark ATtiny85 with Arduino 2.0: How to program? 2024, Aralık
Anonim
ATtiny84/85 SPI Arayüzü Pimi Yeniden Kullanımı
ATtiny84/85 SPI Arayüzü Pimi Yeniden Kullanımı

Bu talimat, "ATtiny84/85 Seri Çıkışlı Devre İçi Hata Ayıklama" talimatının devamı niteliğindedir ve uygulama programı tarafından programlama indirme pinlerinin yeniden kullanılması sorununu ele almak için bu donanım ve yazılım yapılandırmasını genişletir. Toplamda, bununla ve bölüm 1 öğretilebilir kısmı arasında, aşağıdaki konular tartışılır/gösterilir:

Başlık ATtiny84 ATtiny85
SoftwareSerial sınıfını kullanarak Seri İletişim x x
Uygulama ve indirme arasında cihaz pinlerini paylaşma x x
Pin Değiştirme kesintisi x
Harici kesme x
POWER_DOWN modunda uyku; kesintide uyan x
SoftwareSerial ile ilgili "çoklu tanımlı" kesme vektörü bağlantı hatası için geçici çözüm x
ATtiny cihazları için devre içi değiştirme, indirme, hata ayıklama, … geliştirme döngüsü x x

SPI programlama arayüzüne tahsis edilmiş pinlerden birine bir donanım G/Ç bileşeni eklemek bazen tamam, bazen değil. Örneğin, MISO'ya bir LED eklemek, indirme sırasında LED'in titremesine neden olur ve ardından uygulama için kullanılabilir hale gelir. Bununla birlikte, MISO'ya bir piezo buzzer eklemek, korkunç bir gıcırtı sesine ve ardından indirme hatasına neden olur.

Bu talimat, SPI arabirimi MISO, MOSI ve SCK sinyallerine atanan pinlerin indirme sırasında koruyarak kullanımını "kurtarmak" için 4x2:1 çoklayıcının nasıl kullanılacağını açıklar. RESET piminin yeniden kullanımı, bir sigorta değişikliği gerektirir ve bu yaklaşımın kapsamında değildir. Pinlerin ikili ataması, indirmenin devam edip etmediğine bağlı olarak uygulama ve programlama girişleri arasında geçiş yapmak için çoklayıcı kullanılarak gerçekleştirilir. ATtiny84 ve ATtiny85 için kod ve şemalar dahildir. ATiny84 yapılandırması, iki G/Ç bağlantı noktasına sahip olduğundan ve bazı ek sorunları/çözümleri göstermek için kullanılabildiğinden ilk olarak ele alınmıştır. Tiny84 tartışmasının ardından, ATtiny85 için aynı senaryolar tartışıldı.

Adım 1: Gerekli Donanım

resim
resim

Gerekli donanımların çoğu, talimat verilen kısım 1'de listelenmiştir, bu nedenle aşağıda yalnızca yeni donanım listelenmiştir.

İsim Olası Kaynak Nasıl Kullanılır
4x2:1 Çoklayıcı Avcı kedi SPI Arabirim sinyallerinin ve uygulama G/Ç'lerinin paylaşıldığı mekanizma olan dört adet 2 girişli; 1 çıkışlı anahtar içerir.
SPST anahtarı Herhangi bir anahtar türü (anlık veya mandallı) çalışacaktır. Anahtar, bir uygulama girişi için pin paylaşımını göstermek için kullanılır.
10K direnç Değişken bir girişi önlemek için SPST anahtarı için aşağı çekme direnci
resim
resim
resim
resim

Çoklayıcı, pin indirme kullanımını uygulama kullanımından ayırmanın anahtarıdır. 4x2:1 çoklayıcının genel işlevselliği, 2 kontrol sinyali ve aynı şekilde çalışan 4 anahtardan oluşan oldukça basittir. Her bir çoklayıcı pininin davranışı aşağıda tartışılmaktadır:

Toplu iğne İsim İşlev
15 G Doğruluk tablosunda belirtildiği gibi, çoklayıcı yalnızca G etkinleştirme pimi düşük olduğunda çalışır. Çoklayıcıyı asla tamamen devre dışı bırakmak istemediğimiz için pin 15 doğrudan toprağa bağlanacaktır.
2-4; 5-7; 9-11;12-14 A(giriş), B (giriş), Y(çıkış) Dört adet 2 giriş vardır; A (giriş), B (giriş), Y (çıkış) sırasına göre ardışık olarak numaralandırılmış 3 pinli her grup ile 1-çıkış anahtarları örn. anahtar 1 için; pim 2=1A; pim 3=1B; pim 4=1Y.
1 Seçme Seçim düşük olduğunda, anahtar girişi A, ilişkili anahtar çıkış pini Y'ye bağlanır. Seçim yüksek olduğunda, anahtar girişi B bunun yerine çıkışa bağlanır. Anahtarlar, Select sinyali tarafından aynı anda kontrol edilir ve aynı şekilde çalışır.
8 GND çoklayıcı IC topraklama
16 VCC çoklayıcı IC gücü

2. Adım: Test Durumlarına Genel Bakış

resim
resim
resim
resim

Pin yeniden kullanımı için iki senaryo, pinin bir uygulama girişi mi yoksa çıkışı mı olduğuna bağlıdır. Herhangi bir girdiyi işleme prosedürü her zaman aynıdır; ayrıca uygulama çıktıları için prosedür, donanım bileşeninden bağımsız olarak aynıdır. Öyle olsa bile, belirli örnekler verilirse açıklama daha kolay ve umarım daha açıktır. İki durum için minimalist düzenler yukarıda gösterilmiştir. Daha sonra ayrıntılı kurulumlar için bağlantılar biraz sincap yuvası haline gelir, bu nedenle bu daha temiz diyagramlara başvurmak faydalı olabilir.

RESET, indirme sırasında düşük olduğu, ancak indirme tamamlandığında tekrar yükseldiği için çoklayıcı Seçim sinyali için mükemmel bir seçimdir. Tüm anahtarlar aynı şekilde davrandığından, çoklayıcı anahtarlardan herhangi birinin her iki durumda da kullanılabileceğini unutmayın. Ayrıca, örneklerin hiçbiri "gerçekçi" değildir; bunun yerine izolasyon tekniklerini göstermenin en basit yolu olarak seçildiler

  1. Çıkış Durumu: ATtiny84 pin 4'ten (SCK) gelen LED çıkışı çoklayıcı anahtar 2 kullanılarak izole edilmiştir

    • çoklayıcı pin 2A'yı toprağa bağlayın
    • çoklayıcı pin 2B'yi ATtiny85 pin 4'e bağlayın
    • 2Y çıkışını LED anotuna bağlayın

      • Beklenen sonuçlar:

        • 2A'ya bağlı olduğundan indirme sırasında LED kapalı, toprak
        • 2B üzerinden indirildikten sonra uygulama çıkış pimi 4'e bağlanan LED ve yanıp sönmeye başlar
  2. Giriş Durumu: ATtiny84 pin 6'ya (MOSI) SPST anahtar girişi çoklayıcı anahtar 3 kullanılarak izole edilmiştir

    • AVR Programlayıcı başlığından gelen MOSI kurşun kablosu 3A'ya taşındı
    • anahtar girişi 3B, SPST çıkışına bağlanır
    • çıkış 3Y, ATtiny84 pin 6'ya bağlanır

      • 3A, MOSI, indirme sırasında pim 6'ya bağlanır
      • 3B, SPST çıkışı, indirme işleminden sonra pin 6'ya bağlanır

Program indirme sırasında LED titremiyorsa ve ardından program kontrolü altında beklendiği gibi indirmeyi takiben her iki saniyede bir yanıp sönüyorsa Durum 1 başarılıdır. İzolasyon olmadan LED, durumu saat verisi alma/gönderme olarak değiştiren SCK sinyaline doğrudan bağlı olduğu için indirme sırasında titreyecektir.

İndirme sırasında MOSI sinyali ATtiny84'e iletilirse, yani indirme başarısız olmazsa ve LED, indirmeden sonra SPST açma/kapama işlemine yanıt verirse Durum 2 başarılıdır. Durum 2, olası olmayan bir indirme hatasını önler. İzolasyon olmadan SPST anahtarı, 1) mandallı bir anahtar kullanılırsa ve 2) indirme sırasında anahtar açık konumda bırakılırsa arızaya neden olur. Çoklayıcı tarafından izole edildiğinde, anahtar hiçbir koşulda indirme hatasına neden olamaz. Biraz gergin ama biz yaşlılar için rahatlatıcı.

Çoklayıcı kullanmanın bir sonucu, donanım bileşeninin artık doğrudan mikrodenetleyici G/Ç pinine bağlanamamasıdır. Bu biraz elverişsizdir, ancak bileşenin test sırasında diğer uygulama donanımıyla birlikte devre tahtasında kalmasına izin verir ve test tamamlandığında doğru konumuna geri taşınabilir.

Adım 3: ATtiny84 Durum 1 - Uygulama Çıktısını İzole Etme

resim
resim

Bu adım, bir uygulama çıkış pininin bir indirme sinyali ile paylaşılması için kurulumu açıklar. Kullanılan örnek, pim 4'e (SCK) bağlı LED'dir. Örnek olarak mevcut LED'i kullanmak, çoklayıcının bölüm 1 donanım ve yazılım ortamına eklenmesine vurgu yapılmasını sağlar.

  • Donanım

    • Çoklayıcıyı yukarıdaki fritzing şemasında gösterilen göreli konumda devre tahtasına ekleyin. Çoklayıcı, Durum 2'de ihtiyaç duyulan SPST anahtarına yer açmak için merkeze doğru konumlandırılmıştır.
    • ATtiny84 pin 11'den multiplexer pin 1'e bir kurşun tel (sarı öneri) ekleyerek RESET sinyalini çoklayıcıya uzatın.
    • Kalan donanım kurulumu Adım 2'de verildiği gibidir

      • çoklayıcı pin 2A'yı doğrudan toprağa bağlayın
      • pin 2B'yi ATtiny84 pin 4'e bağlayın
      • 2Y çıkışını LED anotuna bağlayın

        • Beklenen sonuçlar:

          • indirme sırasında 2Y toprağa bağlanır (2A) böylece LED kapalı kalır
          • İndirdikten sonra 2Y, ATtiny84 pin 4'e bağlanır - uygulama LED kontrolü
  • Yazılım

    • Bölüm 1 kodu yeniden kullanılır; burada çoğaltılmak yerine 1. bölümden alınabilir
    • Arduino IDE'de bölüm 1 programını yükleyin ve derleyin
    • Tiny AVR programlayıcısını bir PC USB bağlantı noktasına takın
    • Adafruit USB - Seri kablosunu ikinci bir USB bağlantı noktasına takın

      • Bir COM bağlantı noktası oluşturulur ve otomatik olarak IDE bağlantı noktası listesinde kullanıma sunulur
      • COM penceresini başlatın
    • Derlenmiş kodu ATtiny84'e indirin

Uygulama programı sonuçları, tek değişiklik LED'i "korumalı" bir konuma taşımak olduğundan, bölüm 1 ile aynıdır: LED 2 saniye aralıklarla yanıp söner; Seri çıkış aynı. Olması gereken tek fark, indirme sırasında LED'in artık titrememesidir, çünkü bu süre boyunca çoklayıcı pim 2A üzerinden toprağa bağlanır.

resim
resim

Adım 4: ATtiny84 Durum 2 - Uygulama Girişini İzole Etme

resim
resim

Bu adım, önceki çıkış izolasyon durumu için kurulum üzerine kuruludur. Donanım değişiklikleri, çoklayıcı aracılığıyla ATtiny84 pin 6'ya (MOSI) bir SPST anahtarının eklenmesinden oluşur. Bu nedenle donanım değişiklikleri minimum düzeydedir ancak SPST anahtarının bir pin değiştirme kesmesi kullanarak LED'i kontrol etmesine izin veren birkaç yazılım değişikliği vardır. Güncellenen kod bu bölümün alt kısmında yer almaktadır. Kod Arduino IDE'ye kopyalanmalıdır; Multiplexer_Input adı altında kaydetmenizi öneririz. (Bu bölümün uzunluğu için özür dilerim, ancak bu, öğreticinin amacının kalbidir ve yapay aralar eklemek yerine monolit olarak daha iyi okunduğunu düşünüyorum.)

Güncelleme Konum Amaç
"saldırıya uğramış" SoftwareSerial sınıfını dahil et bölümü dahil et LED şimdi bir pin değiştirme kesmesi aracılığıyla SPST anahtarı tarafından kontrol edilir. SoftwareSerial sınıfı değiştirilmelidir, aksi halde TÜM pin değiştirme kesme vektörlerini tahsis eder. Bu, SPST anahtarına atanan (port 0) vektörü için bir "çoklu tanım" bağlantı hatasına neden olur. Saldırıya uğramış SoftwareSerial sürümü, yalnızca bu uygulamayı etkilemesi için programla aynı dizine yerleştirilmelidir.
SPST giriş pini tanımı dahil etme/tanımlama bölümü SPST girişinin bir cihaz pinine atanması. Pin cihaza özel olduğundan #ifdef ATtiny8x bölümlerine eklenir.
SPST giriş pin modu kurulum işlevi SPST pini bir INPUT olarak yapılandırılmıştır.
SPST pin kesmesini yapılandırın kurulum işlevi Kesme vektörü, SPST giriş pinine atanır, böylece bir anahtar durumu değişikliği bir kesintiye neden olur. Konfigürasyon kayıtları ve kesme tipi cihaza özeldir. Kodu olabildiğince basit hale getirmek için, farklılıklar #if tanımlı bir bölüm içinde ele alınır.
Kurulum tamamlandı seri mesajı kurulum işlevi Kurulum tamamlandı seri çıkış mesajı, Çoklayıcı Giriş uygulamasını yansıtacak şekilde değiştirilir
SPST anahtarı ISR işlevi ekleyin kod bölümü SPST pin değiştirme kesmesi için ISR eklenir. Kod yaygındır ancak kullanılan vektör cihaza özeldir ve programın üst kısmındaki cihaza bağlı bölümlerde tanımlanmıştır. ISR'nin etkinleştirildiğini doğrulamak için LED durumu değiştirilir. Gerçek bir uygulamada hayır-hayır olmasına rağmen, yeni LED durumunu yansıtan bir seri çıkış mesajı üretilir.
Döngü işlemeyi değiştir döngü işlevi ISR şimdi LED'in açılıp kapanmasını kontrol eder, böylece işlevsellik döngü rutininden çıkarılır. ATtiny84 için bir tür "ekstra" olarak uyku rutinine bir çağrı eklenir. Bu uygulama için ATtiny85 uyku çalışmıyor; Belki de SoftwareSerial kaldırılmış olarak çalıştığı için Software Serial sınıfının girişimi nedeniyle.
Uyku rutini ekleyin kod bölümü Çoklayıcının kullanımını göstermek için uyku işlevi gerekli değildir. Yeni eklendi çünkü normalde bir giriş gerçekleşene kadar hiçbir şey yapmadan program döngüsünde çalışmaya devam etmek yerine güç tasarrufu yapmak için POWER_DOWN modunda bir giriş beklemek isteyecektir.

SoftwareSerial sınıf Kodunu değiştirin

SoftwareSerial sınıfının, tüm pin değiştirme kesme bağlantı noktalarını doldurmaması için değiştirilmesi gerekir. SoftwareSerial sınıf kodu şu adreste bulunur:

C:\Program Dosyaları (x86)\Arduino\donanım\arduino\avr\libraries\SoftwareSerial\src

Kod değişikliklerinin başlangıç konumunu bulmak için SoftwareSerial.cpp'de PCINT0_vect üzerinde bir bulma yapın. Mevcut #ifdefined(PCINT0_vect) ifadesinin hemen önüne aşağıdaki kodu ekleyin.

#if tanımlı(_AVR_ATtiny84_)

#define MYPORT PCINT1_vect #elifdefined(_AVR_ATtiny85_) #define MYPORT PCINT0_vect #endif ISR(MYPORT) { SoftwareSerial::handle_interrupt(); }

Şimdi, aşağıda belirtildiği gibi bağlantı noktası kesme vektörlerini tahsis eden mevcut kod bloğunu yorumlayın (sadece başlangıç ve bitiş bloğu yorum sembollerini /* ve */ ekleyin):

/*

#if tanımlı(PCINT0_vect) ISR(PCINT0_vect) { SoftwareSerial::handle_interrupt(); } #endif #if tanımlı(PCINT1_vect) ISR(PCINT1_vect) { //SoftwareSerial::handle_interrupt(); ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect)); } #endif #iftanımlı(PCINT2_vect) ISR(PCINT2_vect, ISR_ALIASOF(PCINT0_vect)); #endif #if tanımlı(PCINT3_vect) ISR(PCINT3_vect, ISR_ALIASOF(PCINT0_vect)); #endif */

Donanımı Yapılandırın

SPST anahtarı, Adım 2'de özetlendiği gibi ATtiny84 pin 6'ya (MOSI) takılır. Kolaylık sağlamak için prosedür burada tekrarlanmıştır.

  • 3A anahtar girişini Tiny AVR Programmer başlığı MOSI kablosuna bağlayın
  • 3B'yi SPST anahtarı AÇIK çıkış pinine bağlayın
  • 3Y'yi ATtiny84 pin 6'ya bağlayın

    • SONUÇLAR:

      • 3A, MOSI, indirme sırasında ATtiny84 pin 6'ya bağlanacaktır
      • 3B, SPST çıkışı, indirme işleminden sonra pin 6'ya bağlanacaktır

Programı çalıştır

Çalıştırmadan önce SPST anahtarını kapalı konuma getirin. Aksi takdirde, anahtar kapatıldığında LED yanar ve bunun tersi de geçerlidir. Arduino IDE'yi kullanarak uygulama giriş programını yüklemek, derlemek ve indirmek için 3. adımdaki prosedürü izleyin. Daha önce olduğu gibi, indirme sırasında LED yanıp sönmemelidir, bu nedenle programın çalışır durumda olduğunu gösteren tek gösterge kurulum rutininin sonundaki seri mesaj olacaktır: KURULUM Tamamlandı - Giriş Örneği

Bu noktada program SPST anahtarından bir giriş beklemektedir. Anahtarı AÇIK konuma getirmek LED'in yanmasına neden olur; kapalı konuma geri dönmek LED'i kapatır. Çıkış mesajları, ISR'nin çağrıldığını doğrular (ISR: Led YÜKSEK, ISR: Led DÜŞÜK). Seri mesajların sırasının, önce bir anahtar durumu değişikliğini bekleyen UYKUYA GİDİN olduğuna dikkat edin; bir anahtar girişi alındığında, ISR çağrılır, LED'i değiştirir ve değişikliği belgeler; daha sonra kesme, işlemciyi uyandırdığından uyku çağrısının ardından işleme başlar.

resim
resim

BU EĞİTİM İÇİN PROGRAM:

//************************************************************************

// BÖLÜM 2: Uygulama/indirme cihazı pin paylaşımı //. SPI programlama arayüzüne // atanan pinlerin // uygulama yeniden kullanımını desteklemek için Bölüm 1 kodunu değiştirir. ATtiny85 ve ATtiny84 için "Common" kodu //********************************************* *********************************** #include "SoftwareSerial.h" // Modifiye Arduino SoftwareSerial sınıfı #include // while işlem kodu ortaktır, kullanılan pinler cihaza özeldir #if tanımlı(_AVR_ATtiny84_) || tanımlanmış(_AVR_ATtiny84A_) #define ledPin 4 // Bağlı Led'i açmak/kapatmak için değiştirildi #define rxPin 9 // Seri alma için kullanılan pin #define txPin 10 // Seri iletim için kullanılan pin #define SpstPin 6 // SPST anahtarından giriş (MOSI) #define ISR_VECT PCINT0_vect // SPST anahtarı Pin değiştirme kesme vektörü #elif tanımlı(_AVR_ATtiny85_) #define ledPin 1 #define rxPin 4 #define txPin 3 #define SpstPin 2 // SPST anahtarından giriş (INT0) #define ISR_VECT INT0_ // SPST anahtarı Pin değiştirme kesme vektörü #else #error Bu Proje tarafından Yalnızca ATiny84 ve ATtiny85 Desteklenir #endif // Hangi aygıtın alınması ve iletilmesi için pinlerin kullanılacağını belirten Software Serial sınıfının örneğini oluşturun SoftwareSerial mySerial(rxPin), txPin); //------------------------------------------------ --------------------------- // İşleme kaynaklarını başlat //---------------------- -------------------------------------------------- --- geçersiz kurulum() { mySerial.begin(9600); // Seri işleme gecikmesini başlat(2000); // Seri Com port'a başlatmayı tamamlaması için süre verin. // aksi takdirde, 1. çıktı muhtemelen eksik veya bozuk pinMode(ledPin, OUTPUT); // OUTPUT pinMode için led pinini yapılandırın(SpstPin, INPUT); // SPST anahtar pinini bir INPUT olarak yapılandırın #if tanımlanmış(_AVR_ATtiny84_) || (_AVR_ATtiny84A_) // pin 6 (MOSI) üzerindeki anahtar girişini işlemek için pin değiştirme kesmesini ayarla GIMSK |= (1<

Adım 5: ATtiny85 Durum 1 - Uygulama Çıktısını İzole Etme

resim
resim

ATtiny85 için yinelenen bir donanım kurulumu oluşturmak yerine, ATtiny84 için Adım 4'teki bitmiş konfigürasyonla başlamak ve tiny84 yongasını tiny85 ile değiştirmek muhtemelen daha kolaydır. Gerekli tüm donanım o zaman zaten mevcuttur. Bu yaklaşımı kullanıyorsanız, 3 ve 4 numaralı pinler seri kablo tx ile hizalanacak ve kabloları alacak şekilde tiny85'i bulun. O zaman sadece, ATtiny85 için gerekli konumlarına uyması için SPI arayüzü kurşun kablolarını yeniden yerleştirme meselesidir.

Sıfırdan başlıyorsanız, Adım 3'teki genel adımları ve yukarıdaki fritzing şemasını izleyin. Kod, Adım 3'te ATtiny84 için kullanılanla aynıdır ve aynı sonuçlar beklenir - indirme sırasında titreme olmaz; çalışırken LED 2 saniye aralıklarla yanıp söner ve seri çıkış mesajları LED durumunu takip eder.

resim
resim

Adım 6: ATtiny85 Vaka 2 - Uygulama Girişini İzole Etme

resim
resim

Donanım kurulumu için Adım 5'teki konfigürasyonla başlayın ve yukarıdaki fritzing şemasında gösterildiği gibi SPST anahtarını ekleyin. Tiny85 sürümü için aslında bir anlık anahtar kullandım ve bu, doğrulamayı biraz daha kolaylaştırıyor. Anahtar çıkışının ATtiny84 konfigürasyonundan 180 derece döndürüldüğüne dikkat edin. Bu değişiklik, ATtiny85 için 3 SPI sinyalinin tümü aynı tarafta olduğundan, bağlantı kablolarının yönlendirilmesini kolaylaştırır.

ATtiny84 Adım 4 ile aynı programı kullanın. Aynı genel sonuçlar beklenir - SPST anahtarı açıldığında/kapatıldığında LED durumu değişir ve seri çıkış mesajları değişiklikleri belgelemektedir. ATtiny85 için uyku işlevi çağrılmadığı için UYKUYA GEÇ mesajları eksik. Aynı program kullanılmasına rağmen, ATtiny85'in yalnızca bir port kaydına (Port 0) sahip olduğu gerçeğini hesaba katan uygulamada önemli farklılıklar vardır:

  1. SoftwareSerial artık seri iletişim için bağlantı noktası 0 pin değiştirme kesmesini tahsis ediyor (ATtiny84 için bağlantı noktası 1'i kullanabildiğimizi hatırlayın.)
  2. SPST anahtar kesmesi, SoftwareSerial tarafından bir ve tek pin değiştirme kesmesi tahsis edildiğinden, harici kesme 0 (INT0) ile uygulanmalıdır. Bu, pin değiştirme kesintilerinin ve harici kesintilerin mantıksal olarak bağımsız olduğunu ve aynı port kaydı içinde kullanılabileceğini gösterir.
  3. Değiştirilmiş bir SoftwareSerial sürümü kullanılarak hiçbir şey kazanılmaz - yalnızca bir bağlantı noktası vardır ve SoftwareSerial sınıfı onu kapar. Ancak, değiştirilen sınıf, yalnızca bu adımın amacı ile doğrudan ilgili olmayan bir değişiklikten kaçınmak için hala kullanılıyordu.

Önerilen: