Forum: Mikrocontroller und Digitale Elektronik Temperatur mit MAX66xx


von Micha (Gast)


Lesenswert?

Hi all,

hat schon einmal jemand zuverlässig mit der Temp-Sensor-Reihe von Maxim
MAX66xx (genau hab ich den MAX6630) die Temp ausgelesen?

Ich bekomme von dem Teil hier aufm Schreibtisch 0011001000010000
zurück, das währen dann stolze 100,125 Grad ?!?

Jemand Erfahrungen mit den Teilen?

Gruß Micha,

PS: Wenn jetzt jemand nach Quellcode fragen sollte, selbst mit dem
Funktionsgenerator bringt er den Müll auf DO raus! Ja, mit dem Oszi
sehe ich das, ...das gleiche! :)

von Wolfgang (Gast)


Lesenswert?

Hallo Micha,
Wie wir das Problem lösen können, weiß ich noch nicht.
Bei mir läuft ein (bzw. zwei) MAX6630 problemlos über SPI an einem
MSP430F149. Was würde Dir evtl. weiterhelfen?
MfG
Wolfgang

von Micha (Gast)


Lesenswert?

Hallo Wolfgang,

vielen Dank für deine schnelle Antwort.

ja, wie das Problem zu lösen ist, ist echt eine gute Frage. Ich habe
alles nochmals durchgeschaut und auch das Timing bestimmt hundert mal
kontrolliert. Nix!

Ich hab das Timing zu Fuss Programmiert auf einem AVR. CS Low, Tcss
sicher verstreichen lassen und dann Clock für Clock... laut Datenblatt
halt. Mit den Patterngeneratur macht er das gleiche. Wobei man sagen
muss, bei den Timing kann man auch nicht viel falsch machen! :)

Kann du vielleicht mal dein Quellcodeschnippsel posten, soweit es nicht
Gehiem ist? :)

Hier mal mein Part in C (Assembler's bin ich aber auch Mächtig!)

[C-CODE START]
void GetTempMAX6630( void ){

   volatile unsigned char i;

   cbi( PORTF, Bitmask_TempCS );
   asm( "nop" );

   for ( i = 0; i < 16; i++ ){

      sbi( PORTF, Bitmask_TempSCK );
      asm("nop");

      // Sample Bit auf TempSO
      temp = inp( PINF );
      if( temp & Mask_TempSO ){
         StreamBufferTEMP[ i ] = HIGH;
         asm( "nop" );
      }
      else{
         StreamBufferTEMP[ i ] = LOW;
         asm( "nop" );
      }

      cbi( PORTF, Bitmask_TempSCK );
      asm("nop");

   }

   sbi( PORTF, Bitmask_TempCS );
   asm( "nop" );

   TempReceiveFlag = TRUE;

}
[C-CODE ENDE]

Sag mir jetzt bitte, ich hab was Übersehen, dann wäre ich Froh!

Dank&Gruß Micha,

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Leider versteh ich Dein Programmteil nicht, da:
a)  meine Programmierkünste zu unterentwickelt sind
b)  keine Verdrahtung angeben ist
c)  zu viel englisch (ist mein Problem)
d)  nichts kommentiert ist

vermutlich wird CS\  nicht richtig gesteuert bzw. die Wandlungszeit
wird nicht eingehalten
dazu kann ich im Programm nichts erkennen (aber s.o.)

als Anhang einige Ausschnitt aus meinem Programm;
da ist nichts geheim, aber der Programmierstil ist noch
verbesserungsbedürftig
MfG
Wolfgang

von Micha (Gast)


Lesenswert?

Hallo Wolfgang,

vielen Dank für deine Hilfe, zwischenzeitlich hat sich das Problem
geklärt. Es war versehentlich der MAX6629 draufgelötet, nicht der
MAX6630!

Beide haben unterschiedliche Pinouts!

Naja, zum Glück alles mit einer Lötbrück behebbar, jetzt tut das Teil
Einwandfrei!

Gruß&Dank Micha,

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.