Changes between Initial Version and Version 1 of MAX6675


Ignore:
Timestamp:
Mar 17, 2009 11:54:27 PM (15 years ago)
Author:
sgk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MAX6675

    v1 v1  
     1= MAX665 =
     2
     3== MAX6675.pde ==
     4{{{
     5#!c
     6#include "SPI.h"
     7
     8#define VCC  8
     9#define GND  9
     10#define SLAVE  10
     11
     12void
     13setup()
     14{
     15  pinMode(GND, OUTPUT);
     16  pinMode(VCC, OUTPUT);
     17  digitalWrite(GND, LOW);
     18  digitalWrite(VCC, HIGH);
     19  Serial.begin(9600);
     20  SPI_Master.begin(SLAVE);
     21}
     22
     23void
     24loop()
     25{
     26  int value;
     27
     28  delay(500);
     29  SPI_Master.enable(SLAVE);
     30  value = SPI_Master.read() << 8;
     31  value |= SPI_Master.read();
     32  SPI_Master.disable();
     33 
     34  if ((value & 0x0004) != 0)
     35    Serial.println("Error");
     36  else
     37    Serial.println((value >> 3) * 0.25);
     38}
     39}}}
     40
     41== SPI.cpp ==
     42{{{
     43#!c
     44#include "SPI.h"
     45
     46boolean SPI_Master_Class::initialized_ = false;
     47int SPI_Master_Class::enabled_ = -1;
     48
     49void
     50SPI_Master_Class::begin(int slaveselecter) {
     51  if (!initialized_) {
     52    initialized_ = true;
     53    enabled_ = -1;
     54    pinMode(SS, OUTPUT);  // Must be set as OUTPUT before SPE is asserted.
     55    pinMode(MOSI, OUTPUT);
     56    pinMode(MISO, INPUT);
     57    digitalWrite(MISO, HIGH);  // Pull-up
     58    pinMode(SCK, OUTPUT);
     59    SPCR = (1<<SPE)|(1<<MSTR);  // SPE: SPI Enable; MSTR: Master
     60    byte garbage;
     61    garbage = SPSR;
     62    garbage = SPDR;
     63  }
     64
     65  if (slaveselecter != SS)
     66    pinMode(slaveselecter, OUTPUT);
     67  digitalWrite(slaveselecter, HIGH);  // Disable
     68}
     69
     70void
     71SPI_Master_Class::enable(int slaveselecter) {
     72  disable();
     73  digitalWrite(slaveselecter, LOW);
     74  enabled_ = slaveselecter;
     75}
     76
     77void
     78SPI_Master_Class::disable() {
     79  if (enabled_ >= 0) {
     80    digitalWrite(enabled_, HIGH);
     81    enabled_ = -1;
     82  }
     83}
     84
     85byte
     86SPI_Master_Class::write_and_read(byte data) const {
     87  SPDR = data;
     88  while (!(SPSR & (1<<SPIF)))
     89    ;
     90  return SPDR;
     91}
     92
     93void
     94SPI_Master_Class::write(byte data) const {
     95  write_and_read(data);
     96}
     97
     98byte
     99SPI_Master_Class::read() const {
     100  return write_and_read(0x00);
     101}
     102
     103SPI_Master_Class SPI_Master;
     104}}}
     105
     106== SPI.h ==
     107{{{
     108#!c
     109#ifndef __SPI_H__
     110#define __SPI_H__
     111
     112#include "WProgram.h"
     113
     114class SPI_Master_Class {
     115public:
     116  static void begin(int slaveselecter);
     117  void enable(int slaveselecter);
     118  void disable();
     119  byte write_and_read(byte data) const;
     120  void write(byte data) const;
     121  byte read() const;
     122
     123private:
     124  static boolean initialized_;
     125  static const int SS = 10;
     126  static const int MOSI = 11;
     127  static const int MISO = 12;
     128  static const int SCK = 13;
     129  static int enabled_;
     130};
     131
     132extern SPI_Master_Class SPI_Master;
     133
     134#endif //__SPI_H__
     135}}}
     136