Bu konu ile ilgili elinde picbasic / proton uygulaması veya kodu olan paylaşabilirmi acaba ?
selamlar
Proton+ için "SHIN" ve "SHOUT" inceleyiniz.
Teşekkürler inceledim ama sonuç alamadım ,
anlamadığım şey ,acaba kimse bilmiyormu bunu ?
yoksa sır gibi saklanmasının başka bir nedeni varmı ?
Sır olacak bir konu değil. Clock eşliğinde veri aktarımı işte.
Herhangi bir SPI unitesinin dokümanını incelediğinde timing diagramdan nasıl haberleşileceğini anlarsın.
Picproje yöneticilerinin yüksek müsadesi ile "More Pitfalls for Real-Time Software Developers" isimli yazının 15. maddesini orijinal olarak (anlamadığım şey ,acaba kimse bilmiyormu bunu ?) sorusuna cevap olarak yapıştırıyorum:
#15 "Nobody else here can help me."
As most any teacher will confirm, you learn more about a topic by teaching it. Real-time programmers often feel helpless when they encounter obstacles (which happens all the time) such as an I/O device not working as described in the documentation. Often, few others in the organization have the level of knowledge required for this kind of programming, leaving these programmers to solve the problem without assistance. Unfortunately, this misconception often leads to the downfall of projects or quality, as adequate solutions might never be found. If no one else has more expertise, the programmer should teach the material to someone with less expertise, so that both the teacher and the student can arrive at a better understanding of the problem. Many organizations have new recruits who are willing to learn new things to gain experience. Explain to such eager people how the program works and what the problem is. They likely will not be able to fully understand the problem. However, their questions may expose an issue or problem that was overlooked and may lead to a solution. This approach also has an important side effect. It doubles as a training technique so that when advanced programming knowledge is required, there are more programmers qualified to contribute.
Bunalmış hocamın da belirttiği gibi sır olabilecek bir konu değil. Hatta tam tersine bu konuda yazılmış okadar çok makale ve kaynak kod var ki bizim vereceğimiz cevap bunlardan farklı olmayacaktır. Cevap vermekteki isteksizlik de muhtemelen bu sebepten.
@maxiboost, sır olacak bir konu değil.Önemsiz gibi görünmesinin sebebi bu protokol hakkında söylenecek fazla bir sözün olmamasıdır.En basitinden @Bunalmış hocanın dediği gibi clock ile veri aktarımıdır.74595 entegresinin çalışma prensibi, bu protokole verilecek anlaşılır ve kolay bir örnektir.Ayrıca kullanılan entegreye göre farklılık gösterebilir. Bazı entegrelerde sadece data ve clock ucu olurken, kimi entegrelerde ise CS ucu bulunmaktadır.Basit ve detaysız bir protokoldür.Kolay gelsin.
Sayın gsever ,
Amacım konunun uzaması ,off topic olması veya "neden kimse bana yardım etmiyor " tarzı bir sitem değildir .Bir forumda nasıl konuşulması gerektiğini az çok bilen biriyim.
İlk başta olayın bu kadar basit birşey olabileceğini düşünemedim sonra bana verilen son cevaplardan anladığım kadarı ile bu konu gerçekten çok önemsiz ,herkes tarafından az-çok bilinen ,üzerinde fazla durulması gerekmeyen ,basit ve sade bir iletişim protokolü .
Haliyle bende çok fazla birşey istemediğimi düşünmüştüm ,fakat kimsenin cevap vermeme nedenini anlamaya çalıştım ,o yüzden "neden sır gibi saklanıyor acaba ?" dedim .
Zaten bilseydim buraya yazmaz ,gereksiz yere forumu boşu boşuna allahın SPI protokolü için meşgül etmezdim .
Ya arkadaşlar sanki insanlar hemen cevap vermek zorundaymış gibi davranmayın, konu da uzamasın lütfen.
SPI hakkında zamanında ben de konu açmıştım onu aratırsan bir çok bilgi bulabilirsin.
Bir de microchipin sitesinde SPI mantığını anlatan çok iyi 2-3 döküman var.
Birşeyler yaptım ,çalışmadı bi türlü .
(http://img399.imageshack.us/img399/6338/max6675my0.th.jpg) (http://img399.imageshack.us/my.php?image=max6675my0.jpg)
http://rapidshare.com/files/3466236/Max6675.rar.html
DEVICE 16F877
Declare XTAL 4
Declare LCD_DTPIN PortD.4
Declare LCD_RSPIN PortD.0
Declare LCD_ENPIN PortD.1
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
Symbol SI = PORTC.4
Symbol CS = PORTC.5
Symbol SCK = PORTC.3
dim OLCU as word
dim ABC as word
loop:
cs=0
shin si,sck,msbpre,[OLCU\16]
cs=1
ABC=OLCU
print $fe ,2
print "ISI > "
GOSUB DEC_ABC
DEC_ABC:
select ABC
case < 10 : PRINT DEC1 ABC," "
case < 100 : PRINT DEC2 ABC," "
case < 1000 : PRINT DEC3 ABC," "
case else : PRINT DEC4 ABC,""
endselect
RETURN
delayms 250
goto loop
Yaptığın devreyi ve kod dilini bilmiyorum ama
hemen gözüme çarpan muhtemel bir hatayı söyleyeceğim :
MAX6675 elemanın CS pinini, PICin SDO (SPI OUTPUT) pinine
bağlamışsın, yani data out yapılan pine.
SPI işlem sırasında CS herzaman 0 olmalı (komutlar arası hariç),
ve SPI çift yönlü bir haberleşmedir yani bir in data gelirken, aynı zamanda bir out data gider herzaman.
Dolayısıyla devre o yüzden çalşmamış olabilir,
CS pinene giden yolu PIC'teki bir normal output pinene bağlayıp dene istersen.
Alıntı yapılan: "Subzero"Yaptığın devreyi ve kod dilini bilmiyorum ama
hemen gözüme çarpan muhtemel bir hatayı söyleyeceğim :
MAX6675 elemanın CS pinini, PICin SDO (SPI OUTPUT) pinine
bağlamışsın, yani data out yapılan pine.
SPI işlem sırasında CS herzaman 0 olmalı (komutlar arası hariç),
ve SPI çift yönlü bir haberleşmedir yani bir in data gelirken, aynı zamanda bir out data gider herzaman.
Dolayısıyla devre o yüzden çalşmamış olabilir,
CS pinene giden yolu PIC'teki bir normal output pinene bağlayıp dene istersen.
denedim şimdi fark yok,
data out derken ? yani max6675 3 wire ,kısacası CS ucu dediğin gibi 0 olmalı ,bir tane clock girişi var bu pic`in clock out çıkışında ve son olarak data out ucu var .O ucu`da pic`in data in girişine verdim .
Yani entegreye anladığım kadarı ile birşey gitmiyor ,cs ve clock ucu dışında .Datasheetinde yazığına göre readonly modunda çalışıyor .
Clock veriyorsun ve CS yi de 0 yaptınmı amcam gönderiyor datayı .
Benim anladığım böyle .
Hımmm ,acaba aynı uçtan shout komutunudamı kullanmalıyım ?
@maxiboost, sende max6675'in library ve model dosyaları var mı? Eğer elinde varsa ve bana da gönderirsen çok sevinirim.
logan ,
model directory`sinde sadece bunu bulabildim ,
http://rapidshare.com/files/3584579/MAX6675.MDF.html
libraryde birşey yok ,
yoksa ben entegreyi simule edemiyormuyum ?
ama o zaman hata vermesi lazımdı ..
isis 6.9 sp5
proteusa cok guvenme basit bir eeprom programını bile simule edemedigi oluyor.
Alıntı yapılan: "goktug1217"proteusa cok guvenme basit bir eeprom programını bile simule edemedigi oluyor.
Valla arkadaşım galiba sen haklısın ,
Bir kere daha olmuştu bana ,basit bir opamp devresi bana kafayı yedirmişti günlerce ...
Sonuç olarak bu devreyi ben canlı canlı yapıp deniycem ,çünkü ;
Böyle birşey yaptım ,bu devrede SPI girişlerine proteus içerisinde bulabildiğim çok basit bir entegre olan MCP3001 (10bit ADC) kullandım .
Resimde`de görüldüğü üzere SPI girişlerine 3 adet switch koyarak bu iki entegre arasında seçim yapma şansımız var .
Bu kod MCP3001 entegresine tam uymasada çalıştırıyor bi şekilde ,fakat MAX6675 entegresini devreye alırsanız ekranda sıfırdan başka bişey göremiyorsunuz .
http://rapidshare.com/files/3748822/MAX6675_SON.rar.html
DEVICE 16F876
Declare XTAL 4
Declare LCD_DTPIN PortB.4
Declare LCD_RSPIN PortB.2
Declare LCD_ENPIN PortB.3
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
symbol SO = portc.4
Symbol CS = PORTC.2
Symbol SCK = PORTC.3
DIM X AS WORD
DIM Y AS WORD
Low CS
ShIn SO,SCK,0,[X\16]
High CS
PRINT $FE,$84,DEC4 X >> 3 / 4," C"
Y = X & %1000000000000000 >> 1
IF Y <> 0 Then
PRINT $FE,$C0,"THERMOCOUPLE OPEN"
EndIF
DELAYMS 100
Budur .
(http://img518.imageshack.us/img518/8386/dsc01471no6.th.jpg) (http://img518.imageshack.us/my.php?image=dsc01471no6.jpg)
DEVICE 16F877a
Declare XTAL 4
Declare LCD_DTPIN PortD.4
Declare LCD_RSPIN PortD.0
Declare LCD_ENPIN PortD.1
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
symbol SO = portc.4
Symbol CS = PORTC.2
Symbol SCK = PORTC.3
DIM X AS word
DIM Y AS byte
loop:
Low CS
ShIn SO,SCK,0,[X\16]
High CS
PRINT $FE,$83,"ISI"
PRINT $FE,$87,DEC X >> 5 ," C"
Y = X & %1000000000000000 >> 1
IF Y <> 0 Then
PRINT $FE,$C3,"TC OPEN"
Else print $FE,$C3,"MaxiBoost"
EndIF
delayms 250
goto loop
Demekki proteusun biraz daha gelişmesi gerekiyor. Senin adına sevindim ...
teşekkürler,
unutmadan 2 numaralı ayak şaseye verilmeli ,
selam arkadaslar,
Bende bu devre ile ugrasiyorum.Ayni problemi yasiyorum.Acaba bu sorunu simulasyonda cozen varmi?
proteusta çalışmıyor
Versiyon veya benzeri bir sorun olabilir sanirim. Basit bir kod yazdim ve isiste (7.1 sp2) denedim. 0.25 hassasiyet ile simule edebiliyor. Model dosyasinda bir problem yok.
Arkadaşlar konu hortlatma rekorunu kırıyor olabilirim. :)
Bu Max6675 yongasını bende bi ele alayım diyorum. Maxim Hocamız bu çip ile epeyi uğraşmış anlaşılan forumda bu çiple ilgili biraz araştırma yapınca bunu anladım. Aklıma takılan bazı konular var. Bu çipten okuma yaptığımız zaman okuduğumuz 12 bitlik sıcaklık bilgisini herhangi bir çevrim işleminden geçirmeye gerek varmı. Yanı okuduğumuz 12 bitlik değerin desimal karşılığı sıcaklığımı temsil ediyor. Bununla ilgili datasheette pek bişey bulamadım. Belkide ben göremedim. Forumda bu konular çok eski olduğu için bir çok link bunun gibi silinmiş. Maxim arkadaştan ricam linki yeniler sesevinirim.
linkleri yenilermisiniz saygılar..
arkadaşlar o dosyalar yok artık üzerinden 5 sene geçmiş ama kodu vermişim orada dosyayı ne yapacaksınız ?
Tamam Maxim hocam gerek kalmadı çözdüm işi. Sadece biir konuyu merak ediyordum onuda anladım. Teşekkürler..