bit kayrdırma sorun - GMTSuite FORUM - GMT Forum
Oluşturan: Ervin, 25 Mayıs, 2018 in GMTSuite FORUM
Oluşturuldu: 25 Mayıs, 2018 (düzenlendi)
Forumdaki mevcut bit operasyon örneğini inceledim. Yapmak istediğim aşağidaki çizimdeki gibi bir sistemde ürünleri takip edip, defolu ürünün rejektörden atılmasını sağlamak. buna istinaden zincir-bit diye bir operand oluşturdum word olarak. sıfırıncı adımda sensör ürünü görürse, sıfırıncı bit ..00001 olacak. enkoder 200 puls gönderince(bunu şimdilik 400ms lik pwm timer ile yapıyorum) ...00010 yapmak; bir 200 puls sonra ...000100 yapmak, eğer ürün gelirse bir sonraki tur ...0001001 yapmak. bitleri takip etmek için test bit komutunu kullandım. test bit 0, test bit1- test bit2... diye sıraladım. ilk komutum set bit 0 (yükselen kenar ile tetikledim). ama sola kaydır komutunu tetiklediğimde son hal 2 oluyor, bir daha tetiklediğimde bir değişim olmuyor. test bit lerden de sadece test bit 0 değişiyor, onun dışındakiler hep 0. yorum yapabilecek var mıdır acaba ? selamlar...
25 Mayıs, 2018 tarihinde Ervin tarafından düzenlendi
Test bit kullandığınız zaman kaçıncı biti kontrol edecekseniz onu girmeniz gerekiyor. Örneğin işaretlemeyi yaptınız 5 kere kaydırmanın sonucunda hatalı ürünü atacaksanız test bit 5 diyip ona göre pistonu tetikleyebilirsiniz.
Aşağıda örnek bir yazım şekli ekledim. Buna uygun şekilde yapabilirsiniz.
Hızlı geri dönüş için teşekkür ederim. sizin öreneğinizi denedim. lakin zincir sensörüne bir kez tıklayınca istasyon 1 eberjlieniyor; ama ikinci kez tıkladğığmda istasyon 2 de değişme olmuyor.
benim örneğime göz atar mısınız ? benim istediğim zincir bit 0 set edilince m1 enerjilenecek, sonra timer her puls gönderdiğinde birer adım sola kaydırma işlemi uygulanacak. sırasyla test bit 1, test bit 2, test bit 3, enerjilnecek, yanlarındaki m1, m2, m3 de enerjilenecek. ama dediğim gibi sadece test bit 0 yani m1 enerjileniyor.
Kaydırdığınız operandı sonuç operandına atamalısınız ki bit kaydıktan sonra işleme devam edebilsin.
Programınızı revize yaptım. Sizinle paylaşıyorum.
çok teşekkür ederim oldu sonunda selamlar...
uzun bir aradan sonra başka bir proje çıktı karşıma. yine benzer mantık, sıralı gelen malzemeleri belli pozisyona gelince atmam gerekiyor. Lakin bu sefer 42.adımda hatalı ürünü atmam gerekiyor. malum double word te 32 bit adım var. 42 ye nasıl uyarlayabilirim?
Ben su sekilde bir cozum buldum. Iki adet doubleword hafiza belirledim. A alani ve B alani. A+B toplam 64 bit oldu. A alaninin son bitine (31) kaydirma yaptigim satirda B nin 0 inci bitini set edip onu kaydirmaya devam ediyorum. Simulasyonda oldu gibi duruyor ama pratikte gorecegiz.
2 Mart tarihinde Ervin tarafından düzenlendi
Çok doğru düşünmüşsün. Kesinlikle çözüm olur.
örnek dosya ekledim.
Merhaba Ervin Bey,
Ekte sizin için hazırladığımız örnek proje yer almaktadır.
doubleword bit kaydırma.rar
ilgi ve alakanıza çok teşekkürler.