Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Chairat

#34
มีท่านใดใช้ Arduino กับ LABview บ้างครับ อยากได้ข้อมูลครับ รบกวนทุกท่านด้วยครับ
#35
ลองดูก่อนครับ  เอามาจาก 877 ในหนังสือ INEX  ขอบคุณ INEX ด้วยครับ

//------------------------------------------------------------------------------------//
// Program      : Library for i2c bus   
// Description    : Library for i2c bus
// Frequency   : Crystal 20 MHz
// Filename      : i2c.h
// C compiler   : Hitech C Compiler
//------------------------------------------------------------------------------------//
#ifndef _I2C_H_
#define _I2C_H_
#include <pic.h>   // Include header file for MCU
#define ACK      1   // Macro for used acknowledge in i2c_read function
#define NACK   0   // Macro for not used acknowledge in i2c_read function
//----------------------------------------------------------------------------//
//---------------------- Function i2c start condition  -----------------------//
//----------------------------------------------------------------------------//
void i2c_start()
{
   SEN = 1;      // Start I2C
   while(!SSPIF);   // Wait for start complete
   SSPIF = 0;      // Clear flag
}
//----------------------------------------------------------------------------//
//---------------------- Function i2c stop condition  -----------------------//
//----------------------------------------------------------------------------//
void i2c_stop()
{
   PEN = 1;      // Stop I2C
   while(!SSPIF);   // Wait for stop complete   
   SSPIF = 0;      // Clear flag   
}
//----------------------------------------------------------------------------//
//---------------------- Function i2c write data  ----------------------------//
//----------------------------------------------------------------------------//
char i2c_write(unsigned char dat)
{
   SSPBUF = dat;      // Send data
   while(!SSPIF);      // Wait for send data complete
   SSPIF = 0;         // Clear flag
   if(ACKSTAT)         // Check ACK signal from slave
   {
      i2c_stop();      // When slave not connected
      return(2);
   }
   else
   {
      return(1);      // When slave connected
   }   
}
//----------------------------------------------------------------------------//
//---------------------- Function i2c read data  -----------------------------//
//----------------------------------------------------------------------------//
unsigned char i2c_read(char check)
{
   unsigned char dat;   // Keep data
   RCEN = 1;      // Recive enable
   while(!SSPIF);   // Wait for receive complete
   SSPIF = 0;      // Clear flag
   dat = SSPBUF;   // Get data
   if(check==NACK)   // Generate NACK signal?
      ACKDT = 1;   // Generate NACK signal
   else         // Case Generate ACK signal
      ACKDT = 0;   //    Generate ACK signal
   ACKEN = 1;      // ACK enable
   while(!SSPIF);   // Wait for ACK complete   
   SSPIF = 0;      // Clear flag
   return(dat);   // Return data
}
//----------------------------------------------------------------------------//
//---------------------- Function initial module i2c ------------------------//
//----------------------------------------------------------------------------//
void i2c_init()
{
   TRISC3 = 1;      // Ensure set SCL input mode // เปลี่ยนเป็น TRISC5 = 1;
   TRISC4 = 1;      // Ensure set SDA input mode // เปลี่ยนเป็น TRISC4 = 1;
   SSPADD = 49;   // Set SCL clock 100kHz
   SMP = 1;      // Standart mode
   SSPCON = 0x08;   // I2C master mode
   SSPEN = 1;      // Enable SSP module
}
#endif
#36
โดยความคิดผม  ไม่ต้องใช้ Software I2C ก็ได้นะครับเพราะแค่ขาเปลี่ยนตำแหน่งเอง
#37
Compiler ตัวไหนครับ
#38
ดูแรงดันผิด  เศร้าเลย
#39
ขอบคุณมากครับ