MAX6675

Başlatan Maxim, 02 Kasım 2006, 12:07:29

Maxim

selamlar ,
Max6675 typeK thermocouple entegresi ,
SPI protokolu ile haberleşiyormuş ,
acaba elinde picbasic/proton örnek kodu olan varmıdır bunun için ?
16f877 ile haberleştirmem gerekiyor ..

arslan74

Renesas için hazırlanmış C kodu. Ama aynı mantıkla bunu PIC'e de uyarlayabilirsin. ancak bu kod'un geri dönüş değeri "char" değil "int" olması lazım.



// Der MAX6675 wird ausgelesen und der 12-Bit-Wert zurückgegeben ********
//P3 = x x x x x CS SCK SO
//max_reg=0 b11 b10 b9 b8 b7 b6 b5 / b4 b3 b2 b1 b0 tco 0 0

char temperature(void)
{
  int i;
  unsigned int data;
  data=0;
  p3_2=0;								//CS=Low
  for(i=0;i<16;i++)
  {
    delayus(100);						//warte 100us
	p3_1=1;								//SCK=High
    delayus(100);						//warte 100us
    data=((data<<1)|p3_0);				//schiebe nach links und lies SO
    p3_1=0;								//SCK=Low
  }
  delayus(100);
    p3_2=1;								//CS=High
  delayus(100);							//warte 100us
  return (data>>3);						//gib 12-Bit Wert zurück
}

Maxim

teşekkürler ama C dilinden anlamıyorum ,
picbasic veya proton plus arıyordum .

arslan74

Anlamaya çalış, cünkü Basic ile fazla ileriye gidemessin. Bir yerlede mutlaka tıkanırsın. Herhangi bir programlama dilini bilen birisi için bir diğerini öğrenmek daha kolay dır. Bu işler için tek ve alternatifsiz dil C dir. Bir an önce bu dili öğrenmeye çalışsan iyi olur.

Maxim

Alıntı yapılan: "arslan74"Anlamaya çalış, cünkü Basic ile fazla ileriye gidemessin. Bir yerlede mutlaka tıkanırsın. Herhangi bir programlama dilini bilen birisi için bir diğerini öğrenmek daha kolay dır. Bu işler için tek ve alternatifsiz dil C dir. Bir an önce bu dili öğrenmeye çalışsan iyi olur.



Asıl düşüncem şu ;
Daha önceki 16f877 ve ad595 toplamda 6 adet analog girişi olan 2 adet Lm324 opamp kullandığım devreyi ,belkide 28 pin soic 16f876 ve soic kılıfında olan max6675 entegresi ve gene soic opamplar kullanarak çok daha az yer kaplayan bir pcb ile değiştirmek.

arslan74

Merhaba,

SPI iletişimi en basit işetişim protokolerinden birisidir. data ve clock ucları vardır. mesela 8 bit bir bilgiyi bit bit göndermek istersek. örneğin "0b01100101" şekilndeki bilgiy göndermek için sıfırıncı bit data ya yazılır ardından clock ucuna bir tane puls uygulanır. sonra birinci bit data ya yazılır tekrar puls verirsin. bu işlemi sırayla bütün bitlere uygulanır, 8 pulsın sonunda gönderme işlemi bitmiş olur.

Almayı olayıda bunu işlemin tersi şeklinde oluyor. gelen her pulsda data ki bit bilgisi puls geliş sırasındaki bilgiye göre ilgi bit sırasına yazılır. 8 puls sonunda  bilgi okuması yapılmıştır.

Bu mantığa göre cok basit bir program yazabilirsin.

max6675 dikkat etmen gereken konu bilgi 12 bit uzunluğunda gönderiliyor, her puls belli bir bekleme süresi var burda 100micro saniye yapmışlar. Ayrıca bilgi okuduktan sonra tekrar okumamak için beklemen gerek. Bu süreleri chipin datasheetlerinden bulabilirsin.


Selamlar.