CCS ufak sorular başlığı

Başlatan pea, 18 Şubat 2012, 21:06:32

pea

Forumda Ccs ile ilgili genel bir başlık göremedim , ben de bu başlığı açmak istedim.
Kısa sorular için sürekli yeni başlıklar açılması yerine bir başlıkta bu soruların sorulması ve el birliğiyle cevaplanmasının daha yararlı olacağı kanaatindeyim.
Hem böylece insanlar başlıktan çekinip konuya girmemezlik yapmaz , genel kültür olmuş olur.(Böyle böyle çok şey öğrendim de ben  :) )

İlk soru da benden gelsin :

Ccs'te Lcd sürerken satırı silmek için bir komut var mı?
\f komutu tüm ekranı temizliyor.Tüm satıra 16 tane boşluk koymayı düşündüm ama daha basit bir yöntemi olabilir diye düşünüyorum.
Flex_lcd kullanıyorum.Açıklamalarında bu tarz bir şey yazmamışlar ama ne olur ne olmaz.

tyildizak

lcd_putc("\f"); ile ekran temizlenebilir, boşluklara gerek yok.

CaFFeiNe

Alıntı yapılan: pea - 18 Şubat 2012, 21:06:32
Ccs'te Lcd sürerken satırı silmek için bir komut var mı?
\f komutu tüm ekranı temizliyor.Tüm satıra 16 tane boşluk koymayı düşündüm ama daha basit bir yöntemi olabilir diye düşünüyorum.
Flex_lcd kullanıyorum.Açıklamalarında bu tarz bir şey yazmamışlar ama ne olur ne olmaz.

baktığım kadarıyla flexlcd de böyle bir komut oluşturmamışlar, ama siz 16 tane boşluk yapan bir komut oluşturabilirsiniz library içerisine,

mesela clr_line() gibi nebiliyim, ama görüntüden başka ne faydası olacakki? LCD donanımsal olarak böyle bir özelliği sağlamıyorsa pekte anlamı yok 44780 çipsetli lcdlerdede satır sil gibi bir komut yok, komple ekran temizleme komutu var

http://fab.cba.mit.edu/classes/MIT/863.06/11.13/44780.pdf

pea

@tyildizak
Tüm ekran temizleme değil de satır temizlemeyi sordum :)

@CaFFeiNe
Kütüphaneye komut eklemek mantıklı geldi , teşekkürler.Lcd'yi incelemek aklıma gelmemişti.
Amaç görüntü değil de merak ve öğrenme isteği sadece :)

pea

Yeni soru :
unsigned int8 olarak tanımlı bir değişken var.
ADC modülü 8 bit'e ayarlı.read_adc komutu sonucunda bu değişkene sonuç yazılıyor.
Ancak printf fonksiyonunu kullanırken , bu değişken 127'den büyükse sorun çıkıyor.
printf(lcd_putc, "Oku=%3u", oku) ;   şeklinde LCD'ye yazdırmaya çalışıyorum.Sadece %u da denedim , sonuç aynı.

printf komutunda mı sorun , yoksa başka şekilde bir tanım mı yapmam gerekiyor değişkenime?

eemuratozan

sorun tanımlamanda ben aynı sorunu unsigned int8 yerine unsigned int yazarak çözmüştüm ne farkı var diceksen ben de anlamadım :D
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

pea

Bir önceki sorumda , hatanın nedeni gerekli ADC zamanlarını beklememekten kaynaklanıyormuş.Datasheet'e tekrar göz atıp , beklemeleri değiştirince düzeldi.

Yeni soru :
Bit dizisini Byte'a çevirmek için bir kod var mı?
For döngüsüyle 2^n ile çarparak , toplayarak da yapabilirim ama hazırı varsa işime gelir açıkçası.

Eren Eraslan

Alıntı yapılan: pea - 02 Temmuz 2012, 20:35:27
Bir önceki sorumda , hatanın nedeni gerekli ADC zamanlarını beklememekten kaynaklanıyormuş.Datasheet'e tekrar göz atıp , beklemeleri değiştirince düzeldi.

Yeni soru :
Bit dizisini Byte'a çevirmek için bir kod var mı?
For döngüsüyle 2^n ile çarparak , toplayarak da yapabilirim ama hazırı varsa işime gelir açıkçası.

bit dizisi nasıl byte çevriliyor hocam anlamadım?
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

pea

Dizinin 8 elemanını alıp byte haline getirmece.

for (i=0;i<=7;i++){
   Byte=Byte + bit[i]*2^i;
   }


Bunu kısayoldan yapan bir komutun olup olmadığını merak ediyordum.Mesela "Make16" komutu gibi bir şey.

justice_for_all

c18 de union denen yapi var onunla kolayca yaparsin ama ccsde varmi bilmiyorum.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

bulut_01

bide benden gelsın ccs pulsin komutu yanı pbp gibi puls dırek sayacak komut varmıdır? algorıtma kurmadan direk bir komutla puls sayacak komut varmıdır?
YENİLMEZ..

pea

Alıntı Yap
EX_CCPMP.C
Uses the PIC CCP module to measure a pulse width

EX_PULSE.C
Measures a pulse width using timer0

Şöyle 2 örnek gözüküyor ancak içeriklerini kurcalamadım.Bunlar dışında bir şey yok.Timer ve Capture kesmeleri dışında yapacak bir şey yok gibi

bulut_01

ilk defa pbp aradım orda pulsin diyosun port pelırtıyosun deger atıyosun oldu bıttı ama bu ccs de 50 tane takla atıyosun bıtane kıcı kırık puls saymak ıcın neden böyledır yada bız kolay yolunu bilmiyoruz.
YENİLMEZ..

pea

Değişim olduğu anda tetiklenen kesme var.Bu kesmede pin'in 0 mı 1 mi olduğu okunabiliyor.Hatta başlangıç durumu belliyse 0'a 1'e bakmaya da gerek yok.
Kesme geldiği anda Timer değeri okunacak o kadar.
3 satırlık bir kod alt tarafı :)

bulut_01

o zaman bana 0 ile 1 khz frekans sayacak ve benım ayarladıgım ornek 400 hz de portun bırıne cıkıs yapacak 3 satırlık kodu yazarmısın ?
YENİLMEZ..