[TCPIP] [AI]
- 파일 분리 -TCPIP ㄴ AI 및 AO::0000,FFFF 등 명령 수행 가능 ㄴ Labview Test 파일 - 예제소스 (MCP4922)main
parent
5091ae49f7
commit
f96a5544b5
@ -0,0 +1,24 @@
|
||||
String Prcss_AI(){
|
||||
|
||||
String str = "";
|
||||
for (int i = 0; i < Size_AI; i++) {
|
||||
char formattedNumber[5]; // 4자리 숫자 + 널 종료 문자
|
||||
sprintf(formattedNumber, "%04X", AI_VALUES[i]); // 4자리로 고정된 형식의 문자열 생성
|
||||
str += formattedNumber; // 형식화된 문자열 추가
|
||||
//str += String(AI_VALUES[i]);
|
||||
str += ',';
|
||||
}
|
||||
|
||||
str += RcvOK;
|
||||
return str;
|
||||
}
|
||||
|
||||
String Prcss_AO(unsigned int data[], int dataSize){
|
||||
String str = "";
|
||||
for(int i=0 ; i<dataSize ; i++){
|
||||
str += String(data[i]);
|
||||
str += "\t";
|
||||
}
|
||||
Serial.println(str);
|
||||
return RcvOK;
|
||||
}
|
Binary file not shown.
@ -0,0 +1,36 @@
|
||||
String demuxCMD(String command, unsigned int data[], int* dataSize) {
|
||||
|
||||
command.replace(" ", "");
|
||||
|
||||
// "::"를 기준으로 문자열을 분리
|
||||
int separatorIndex = command.indexOf("::");
|
||||
String leftPart = command.substring(0, separatorIndex);
|
||||
String rightPart = command.substring(separatorIndex + 2);
|
||||
|
||||
// 우측의 16진수 배열을 분리하여 추출
|
||||
const char* delimiter = ",";
|
||||
int startIndex = 0;
|
||||
int endIndex = rightPart.indexOf(delimiter);
|
||||
int index = 0;
|
||||
|
||||
while (endIndex >= 0) {
|
||||
String hexValue = rightPart.substring(startIndex, endIndex);
|
||||
// 16진수 문자열을 16진수 숫자로 변환하여 data 배열에 저장
|
||||
data[index] = strtoul(hexValue.c_str(), NULL, 16);
|
||||
index++;
|
||||
|
||||
startIndex = endIndex + 1;
|
||||
endIndex = rightPart.indexOf(delimiter, startIndex);
|
||||
}
|
||||
|
||||
// 남은 마지막 16진수 배열 원소 처리
|
||||
String hexValue = rightPart.substring(startIndex);
|
||||
data[index] = strtoul(hexValue.c_str(), NULL, 16);
|
||||
index++;
|
||||
|
||||
// dataSize에 배열 크기 저장
|
||||
*dataSize = index;
|
||||
|
||||
// 왼쪽 부분인 "ABC"을 반환
|
||||
return leftPart;
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
// MCP4922 Demo code sinewave at 16 res top to bot.
|
||||
// For comparison to MCP4725 operation (DAC_RESOLUTION=-5).
|
||||
#include <SPI.h>
|
||||
|
||||
|
||||
|
||||
SPISettings settingsA(16000000, MSBFIRST, SPI_MODE0); // At 16 = SPI Clock = 8MHz.
|
||||
|
||||
int RCLKPin = 53; // pin 12 on the 74hc595 latch - nSS
|
||||
int SRCLKPin = 52; // pin 11 on the 74hc595 shift register clock - SCK
|
||||
int SERPin = 51; // MOSI
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void setup() {
|
||||
Serial.begin(115200); // Start serial port (debug).
|
||||
|
||||
pinMode(RCLKPin, OUTPUT); // Set SPI control PINs to output.
|
||||
pinMode(SRCLKPin, OUTPUT);
|
||||
pinMode(SERPin, OUTPUT);
|
||||
|
||||
SPI.begin();
|
||||
|
||||
Serial.println("MCP4922 SPI Dual DAC SPI hardware mode");
|
||||
noInterrupts();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// 0 - A, 1 - B
|
||||
//
|
||||
void writeMCP4922_AB(byte AB, uint16_t v) {
|
||||
|
||||
v |=0xf000; // B15(A/B)=1 B, B14(BUF)=1 on, B13(GAn) 1=x1 B12(SHDNn) 1=off
|
||||
if (!AB) v &= ~0x8000; // When zero clear B15 for A.
|
||||
|
||||
SPI.beginTransaction(settingsA);
|
||||
digitalWrite(RCLKPin, LOW);
|
||||
SPI.transfer( (0xff00 & v)>>8 );
|
||||
SPI.transfer( 0x00ff & v );
|
||||
digitalWrite(RCLKPin, HIGH);
|
||||
SPI.endTransaction;
|
||||
}
|
||||
|
||||
void loop() {
|
||||
writeMCP4922_AB( 0, 4092 );
|
||||
writeMCP4922_AB( 1, 3000 );
|
||||
|
||||
}
|
Loading…
Reference in New Issue