Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

52 wiersze
1.1 KiB

  1. #include "SPI.h"
  2. #include "define.h"
  3. #include "BoardCfg.h"
  4. #include "DACInterface.h"
  5. unsigned char mDACSPIBaudrate;
  6. void DACInit()
  7. {
  8. mDACSPIBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 20000000);
  9. }
  10. int DACSetValue(int Channel, int Value)
  11. {
  12. unsigned short Buf;
  13. unsigned char LSByte, MSByte;
  14. Buf = Value << 2;
  15. Buf &= (0x0FFF);
  16. LSByte = (unsigned char)(Buf & 0xFF);
  17. Buf >>= 8;
  18. MSByte = (Buf & 0xFF);
  19. switch(Channel)
  20. {
  21. case BUREAU_DAC_CHANNEL:
  22. {
  23. SPI2CONbits.CKE = 0;
  24. VU1_DAC_SYNC_PIN = 0;
  25. SPITransaction(MSByte,mDACSPIBaudrate);
  26. SPITransaction(LSByte,mDACSPIBaudrate);
  27. VU1_DAC_SYNC_PIN = 1;
  28. SPI2CONbits.CKE = 1;
  29. break;
  30. }
  31. case CUISINE_DAC_CHANNEL:
  32. {
  33. SPI2CONbits.CKE = 0;
  34. VU2_DAC_SYNC_PIN = 0;
  35. SPITransaction(MSByte,mDACSPIBaudrate);
  36. SPITransaction(LSByte,mDACSPIBaudrate);
  37. VU2_DAC_SYNC_PIN = 1;
  38. SPI2CONbits.CKE = 1;
  39. break;
  40. }
  41. default:
  42. {
  43. break;
  44. }
  45. }
  46. }