Kayan yazı devrelerinde genelde pic, atmel uygulamalarını sık sık gördüm arm nxp lpc2101 ile yapılan proje değişiklik oldu ayrıca ARM ile kayan yazı uygulamaları için iyi bir örnek kaynak kodlar, devre şeması var. COM Port üzerinden Terminal programı ile yazı yüklenebiliyor.
İlerleme durmuyor ve üreticiler yeni tip mikro kontrolörler piyasaya sürüyor. ARM çekirdeği son yıllarda çok popüler hale geldi. Zamana ayak uydurmak için NXP (Philips) çipleri üzerinde çalışmaya başladım ve örnek olarak çalışan bir çizgi seçtim. Projenin eğitici olmasına rağmen gerekli tüm işlevselliğe sahiptir. Peki, cihaz ne yapabilir:
-harici bir EEPROM çipinden bir dizi oluşturmak;
– dahili RAM’den bir satırın oynatılması;
– satırın sonuna ulaşıldığında zamanı göster;
-Veri indirmek için bir bilgisayar ile iletişim.
U1 LPC2101 – aslında MK ARM7’nin kendisi (8KB Flash + 2KB RAM). MK’nin normal çalışması için iki voltaj gereklidir: işlemci için 1,8V ve çevresel modüllere güç sağlamak için 3,3V. Bu voltajlar, U2 ve U3 doğrusal regülatörleri tarafından sağlanır. Çıktı metni bellek yongası U4’te saklanır (güç pimleri şemada gösterilmemiştir: 4=toprak ve 8=+3,3V). Potansiyometre RV1, dahili ADC U1’in girişine bağlıdır ve metin kaydırma hızını ayarlar. Yedek pil BAT1, ana güç kapalıyken RTC modülüne güç sağlar ve böylece saatin çalışmasını sağlar.
Bu çetele, diğerleri gibi, dinamik gösterge ilkesini kullanır. LED kartı, 64×7’ye kadar bir matriste düzenlenmiştir. Matris sütun verileri seri kodda 74HC595 kaydırma yazmaçlarına (J3 konnektörü) aktarılır: DS=veri hattı, SH_CP=bit flaş, ST_CP=sıra mandalı ve LED’lere iletme. Görüntülenen hat daha sonra Q1-Q7 transistörleri (konektör J4) tarafından açılır. Matris organizasyonu: sıralar LED katotlarını, sütunlar diyot anotlarını oluşturur.
J2 konnektörü, denetleyiciyi programlamak ve bilgisayarla iletişim kurmak için kullanılır. İletişim için MAX232 tipinde bir RS232-TTL seviye dönüştürücü çipi gereklidir. RS-232 seviye dönüştürücünün şeması.
U4, 3,3V ile çalıştırıldığında tam hızlı değişimi (100KHz) desteklemelidir (ancak kontrolör bu tür günlük seviyeleri ile çalışmanıza izin verdiği için 5 volttan güç sağlayabilirsiniz). Sabitleyici yongalar (1V8 ve 3V3), DVD-ROM’lardan ve diğer bilgisayar aygıtlarından gelen kartlarda bulunabilir. Voltajların olduğu yer orası.
C10 ve C11 kapasitans değerleri, kullanılan kuvars saatin özelliklerine göre seçilmelidir (saatin doğruluğunu etkiler). UM10161 kılavuzunun 18. bölümünde önerilen değerler tablosu bulunabilir.
Program, ICCV7ARM derleyicisi altında C dilinde yazılmıştır. Çalışan satırın ihtiyaçları için iki adet 32-bit zamanlayıcı kullanılır: TIMER0’dan gelen vektör kesmesi ekranı yeniden oluşturur ve TIMER1’den gelen kesme ADC’yi sorgulayarak metnin çalışma hızını alır, EEPROM / RAM’den yeni bir karakter okur, geçişler ekranı sola kaydırır ve yeni çıktı karakterinin görüntüsünü yükler.
Program bir orantılı yazı tipi içerir (artık sığmıyordu, yazı tipi.c dosyası). Karakter üreteci iki tek boyutlu dizi ile temsil edilir: char_set[], karakter görüntülerini ve bunların genişliklerini içerir ve charLUT[], char_set[] dizisindeki her karakter için başlangıç ofsetini tanımlar. Onlar. bir karakteri çıkarmak için, başlangıç baytı N’yi belirlemek için charLUT[] tablosunu kullanırız, ardından N adresinde char_set[]’e erişir ve bu karakter için W genişliğini okuruz. Artık gerekli tüm verilere sahibiz ve karakterin kendisini okuyabiliriz (bayt N + 1 … N + W). Bu yaklaşım, Flash bellekte %5’ten fazla tasarruf etmemizi sağladı. Tüm hizmet ve temel olmayan karakterlerin resimlerini kaldırırsanız yazı tipini daha da küçültebilirsiniz.
I2C modülüyle çalışmak, kesintilerden gelen isteklerin işlenmesine dayanır. i2c veri yolunun herhangi bir durum değişikliği (STOP sinyali hariç), bir IRQ oluşturulmasına ve vektör boyunca i2c_isr işlevine geçişe neden olur. Anahtar yapısındaki işlev, I2STAT durum kaydının durumunu okuyan ve bir sonraki programlanmış eylemi gerçekleştiren bir durum makinesi uygular. O. tüm verilerin yavaş arayüzden geçmesini beklemeye gerek yoktur ve işlemciye daha faydalı işler yüklenebilir.
mem_write ve mem_read işlevleri, baytları rastgele bir adrese yazar ve okur.
Değişkenler ve bayraklar:
i2c_msg[] – iki baytlık PL adresi (MSB+LSB) + veri baytı (yazma işlemi için).
i2c_mem_wr – yazma bayrağı (TRUE), okuma için FALSE olmalıdır.
i2c_lock – arayüz meşgul bayrağı, yani DOĞRU ise, şu anda bir işlem devam ediyor demektir.
i2c_max_cnt – paketteki bayt sayısı, yazma için 3 ve okuma için 2.
i2c_nack – çip adresi onaylanmama bayrağı. Verileri yazmak için aktardıktan sonra, bellek yongası kesilir ve bu bayrağın yardımıyla çipin yeni bir işlem için ne zaman hazır olduğunu bileceğim (ACK yoklama prosedürü olarak adlandırılır).
Bir sonraki karakteri okurken bus üzerinden verinin iletildiği anı beklememek için ön okuma gerçekleştirdim. mem_read önceden çağrılır, sonuç i2c_out global değişkenine yerleştirilir.
Güç açıldığında, EEPROM’dan bir satır görüntülenmeye başlar. Bellek yongası temizse “yyyyyy…” görüntülenir.
Cihaz, herhangi bir terminal programı (Hyperterminal, Tera-Term, vb.) kullanılarak PC COM portu üzerinden yapılandırılabilir. Port ayarları: 9600 baud, 8N1, akış kontrolü yok.
Terminalde hızlıca iki kez [ENTER] tuşuna basın. Menü görüntülenecektir:
1- RAM’e bir anlık mesaj dizisi yazın (1000 karaktere kadar). Anlık mesaj, güç kapatılana veya menü aracılığıyla sıfırlanana kadar döner;
2- EEPROM’a bir dizi yazın (8 kilobayt, daha doğrusu 8191 karakter). Metin girerken logolu satır kayar. Düzenleyiciden çıktıktan sonra, eeprom’dan gelen metin görüntülenir;
3- Sıfırla, eeprom’dan gelen satır en baştan görüntülenir;
4- Zaman gösterimini etkinleştirin/devre dışı bırakın. Zaman, satırın sonunda gösterilir.
5- Zamanı değiştirin. Saat 24 saat biçiminde SS:DD biçiminde iki nokta üst üste kullanılmadan girilir. SS 10’dan küçükse, örneğin sabah 8:35, sonra 08:35’i girin. Geçersiz bir numara girildiyse, bir zaman hatası mesajı görüntülenecektir;
6- Menüden çıkın.
Cihaz, alınan tüm karakterleri PC tarafına geri döndürür.
Kaynak: laserium.narod.ru
Şifre-Pass: 320volt.com
Yayım tarihi: 2011/11/27 Etiketler: arm, arm leds, arm marquee, arm projeleri, kayan yazı, lpc
Bunun katalog bilgilerinde 70mhz işlem yapabileceği yazıyor.Ancak osilatör bilgilerinde en az 10 en fazla 25mhz osilator kullanılabileceği gösterilmiş. Bu entegrenin kaç MIPS olduğunu bilen var mı acaba? 25mips üstünde işlem yapabiliyorsa bu entegrenin programlanmasını öğrenmeye çalışacağım. Bilgilendirirseniz sevinirim.