Hot!Newbie: controlling duty cycle of PWM set up with MCC

Page: << < ..11121314 Showing page 14 of 14
Author
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/07 20:05:31 (permalink)
0
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory '/Users/steve/MPLABXProjects/Annealer_ver_3.X'
make -f nbproject/Makefile-default.mk dist/default/production/Annealer_ver_3.X.production.hex
make[2]: Entering directory '/Users/steve/MPLABXProjects/Annealer_ver_3.X'
"/Applications/microchip/xc8/v2.00/bin/xc8-cc" -mcpu=16F1829 -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -Wa,-a -DXPRJ_default=default -msummary=-psect,-class,+mem,-hex,-file -ginhx032 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c90 -gdwarf-3 -mstack=compiled:auto:auto -o build/default/production/main.p1 main.c
main.c:176:38: warning: (373) implicit signed to unsigned conversion  [OvrTmpLED_Toggle();]
main.c:193:12: warning: (356) implicit conversion of float to integer  [return Temp;]
main.c:200:24: warning: (356) implicit conversion of float to integer  [int CCPR_Val = CCPR_Min;]
main.c:206:34: warning: (356) implicit conversion of float to integer  [int Increment_Count = 79-CCPR_Min;]
main.c:207:65: warning: (356) implicit conversion of float to integer   [int Temp_Increment = (Over_Temp - 10 - 25)*10000/Increment_Count;]
main.c:209:35: warning: (356) implicit conversion of float to integer  [CCPR_Val = Adj_Temp + CCPR_Min + 1;]
main.c:214:38: warning: (373) implicit signed to unsigned conversion [case '1': PWM4_LoadDutyValue(CCPR_Val);]
main.c:216:38: warning: (373) implicit signed to unsigned conversion [case '2': PWM3_LoadDutyValue(CCPR_Val);]
main.c:258:63: warning: (328) int argument required in printf-style format string
main.c:259:92: warning: (328) int argument required in printf-style format string
 
[printf("p for Thermal Protection Limit degC = %d\n", Over_Temp);
printf("m for Minimum Fan Duty Cycle (>=20) for temps below or equal to 25C = %d\n", Min_DC);]

main.c:279:6: warning: (373) implicit signed to unsigned conversion [Cmd = Input_Char;]
"/Applications/microchip/xc8/v2.00/bin/xc8-cc" -mcpu=16F1829 -Wl,-Map=dist/default/production/Annealer_ver_3.X.production.map -DXPRJ_default=default -Wl,--defsym=__MPLAB_BUILD=1 -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx032 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c90 -gdwarf-3 -mstack=compiled:auto:auto -Wl,--memorysummary,dist/default/production/memoryfile.xml -o dist/default/production/Annealer_ver_3.X.production.elf build/default/production/mcc_generated_files/adc.p1 build/default/production/mcc_generated_files/pwm3.p1 build/default/production/mcc_generated_files/pin_manager.p1 build/default/production/mcc_generated_files/pwm4.p1 build/default/production/mcc_generated_files/mcc.p1 build/default/production/mcc_generated_files/device_config.p1 build/default/production/mcc_generated_files/eusart.p1 build/default/production/mcc_generated_files/tmr2.p1 build/default/production/main.p1
/Applications/microchip/xc8/v2.00/pic/sources/c90/common/doprnt.c:1278:53: warning: (373) implicit signed to unsigned conversion
/Applications/microchip/xc8/v2.00/pic/sources/c90/common/doprnt.c:1508:24: warning: (373) implicit signed to unsigned conversion
Non line specific message::: advisory: (1492) using updated 32-bit floating-point libraries; improved accuracy might increase code size
mcc_generated_files/adc.c:83:: warning: (520) function "_ADC_SelectChannel" is never called
mcc_generated_files/adc.c:91:: warning: (520) function "_ADC_StartConversion" is never called
mcc_generated_files/adc.c:98:: warning: (520) function "_ADC_IsConversionDone" is never called
mcc_generated_files/adc.c:104:: warning: (520) function "_ADC_GetConversionResult" is never called
mcc_generated_files/adc.c:133:: warning: (520) function "_ADC_TemperatureAcquisitionDelay" is never called
mcc_generated_files/pin_manager.c:105:: warning: (520) function "_PIN_MANAGER_IOC" is never called
mcc_generated_files/eusart.c:78:: warning: (520) function "_EUSART_is_tx_ready" is never called
mcc_generated_files/eusart.c:83:: warning: (520) function "_EUSART_is_rx_ready" is never called
mcc_generated_files/eusart.c:88:: warning: (520) function "_EUSART_is_tx_done" is never called
mcc_generated_files/eusart.c:120:: warning: (520) function "_getch" is never called
mcc_generated_files/tmr2.c:79:: warning: (520) function "_TMR2_StartTimer" is never called
mcc_generated_files/tmr2.c:85:: warning: (520) function "_TMR2_StopTimer" is never called
mcc_generated_files/tmr2.c:91:: warning: (520) function "_TMR2_ReadTimer" is never called
mcc_generated_files/tmr2.c:100:: warning: (520) function "_TMR2_WriteTimer" is never called
mcc_generated_files/tmr2.c:106:: warning: (520) function "_TMR2_LoadPeriodRegister" is never called
mcc_generated_files/tmr2.c:111:: warning: (520) function "_TMR2_HasOverflowOccured" is never called
Memory Summary:
Program space used 1C81h ( 7297) of 2000h words ( 89.1%) [Yuck but least of my worries for now]
Data space used D9h ( 217) of 400h bytes ( 21.2%)
EEPROM space used Ch ( 12) of 100h bytes ( 4.7%)
Data stack space used 0h ( 0) of 321h bytes ( 0.0%)
Configuration bits used 2h ( 2) of 2h words (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
make[2]: Leaving directory '/Users/steve/MPLABXProjects/Annealer_ver_3.X'
make[1]: Leaving directory '/Users/steve/MPLABXProjects/Annealer_ver_3.X'
BUILD SUCCESSFUL (total time: 3s)
Loading code from /Users/steve/MPLABXProjects/Annealer_ver_3.X/dist/default/production/Annealer_ver_3.X.production.hex...
Loading completed

post edited by SGK - 2018/08/07 20:06:44
PStechPaul
Super Member
  • Total Posts : 2060
  • Reward points : 0
  • Joined: 2006/06/27 16:11:32
  • Location: Cockeysville, MD, USA
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/07 21:15:37 (permalink)
+1 (1)
I just tried again, and this time it built OK with those as float. I don't know what C standard I am running. I don't see any way to select that.
[edit] The command line indicates -std=c90
post edited by PStechPaul - 2018/08/07 21:20:21

 
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 06:53:29 (permalink)
+1 (1)
It is selectable under Dashboard->Spanner->XC8 Global options->C Standard
 
So just to clarify, initially ver3 compiled ok under XC8 ver 2.0 with the eeprom constants as either float or int. It did not compile under XC8 1.45 but does under 1.41.  Having tried the earlier compilers it will now only compile under 2.0 if the eeprom variables are float and with C90 (which is consistent with what I see here).  I wonder whether if you start with a fresh download of my zip file whether it will compile under 2.0 with the eeprom constants set to int.  
 
As I uninstalled everything I no longer have earlier versions of the compiler on my Mac. 
 
EDIT: I found legacy versions here: http://www.microchip.com/development-tools/pic-and-dspic-downloads-archive
 
post edited by SGK - 2018/08/08 07:08:25
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 11:06:47 (permalink)
0
I rolled back to XC8 ver 1.41 and I can compile my ver3 code. However I have two problems with the code.
 
1. I realised that my 'algorithm' was exceeding the bounds of what can be stored even in as an unsigned 16 bit integer and hence the computation is wrong. 
 
2. Even in the simple case where temperatures are less than 25C (no NTC attached) and so the duty cycle should be set to the minimum DC (Min_DC), even though CCPR_Val is being correctly computed (a value of 16) the code
 

 
 
 
switch (Fan_Num){
case '1': PWM4_LoadDutyValue(CCPR_Val);
break;
case '2': PWM3_LoadDutyValue(CCPR_Val);
break;

 
or the code underlying PWMx_LoadDutyValue(CCPR_Val) is not working
 

 
 
 
void PWM3_LoadDutyValue(uint16_t dutyValue)
{
// Writing to 8 MSBs of pwm duty cycle in CCPRL register
CCPR3L = ((dutyValue & 0x03FC)>>2);

// Writing to 2 LSBs of pwm duty cycle in CCPCON register
CCP3CON = ((uint8_t)(CCP3CON & 0xCF) | ((dutyValue & 0x0003)<<4));
}

 
The duty cycle at the associated PIC pin is not being changed from its initialised value in MCC. I initialised both to 50% for which MCC derives a CCPR value of 39 which equates to an actual DC of 49% which is what I see with my 'scope.
 
I can look at the first but I'm unsure about the second. I had thought that PWMx_LoadDutyValue was expecting the CCPR value rather than a duty cycle percentage but now I am doubting this. It would be better to get this cleared before spending too much time on item one. 
 

 
//Set CCPR value for duty cycle and return Duty Cycle
int Set_Duty_Cycle(int Fan_Num, int Fan_Temp)
{
float CCPR_Min = round(Min_DC * 79.0/100.0);
uint16_t CCPR_Val = CCPR_Min;
if (Fan_Temp > 25){
if (Fan_Temp >= (Over_Temp - 10)) {
CCPR_Val = 79;
}
else {
int Increment_Count = 79-CCPR_Min;
uint16_t Temp_Increment = (Over_Temp - 10 - 25)*10000/Increment_Count;
uint16_t Adj_Temp = (Fan_Temp - 25)*10000/Temp_Increment;
CCPR_Val = Adj_Temp + CCPR_Min + 1;
}
}
printf("Fan number = %d\n",Fan_Num);
printf("CCPR = %d\n", CCPR_Val);
switch (Fan_Num){
case '1': PWM4_LoadDutyValue(CCPR_Val);
break;
case '2': PWM3_LoadDutyValue(CCPR_Val);
break;
}
uint16_t Duty_Cycle_x10 = CCPR_Val*1000/79;
printf("DC = %d\n",Duty_Cycle_x10);
return (Duty_Cycle_x10);
}

post edited by SGK - 2018/08/08 11:09:19
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 11:48:31 (permalink)
+1 (1)
I had thought that PWMx_LoadDutyValue was expecting the CCPR value rather than a duty cycle percentage but now I am doubting this.

 
This tutorial suggests I was not wrong:
 
https://www.studentcompanion.co.za/pulse-width-modulation-pwm-with-pic-microcontroller-xc8/
 
PWMxInitialize() is called as part of SYSTEM_Initialize(). In the above tutorial, the values being passed to the function are hardcoded rather than a variable but I can't see an issue with what I am doing. I have the program writing info to EUSART as a debugging tool. Here's the output.  I only have one NTC connected. NTC1 and 2 are for fan 1 and 3 and 4 for fan 2. The CCPR value and DCx10 for fan 2 are correct but the measured DC is still at the initialised value. 
 
Temperatures in degrees Celsius
NTC1 -79
NTC2 26
NTC3 -79
NTC4 -79
Duty cycles in per cent x 10.
Fan 1 569
Fan 2 202
 
Fan number = 1
CCPR = 45
DC = 569
Fan number = 2
CCPR = 16
DC = 202
 
 
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 12:33:43 (permalink)
+1 (1)
Bingo!
 
    case 1: PWM4_LoadDutyValue(CCPR_Val);
 
    case 2: PWM3_LoadDutyValue(CCPR_Val);
 
PStechPaul
Super Member
  • Total Posts : 2060
  • Reward points : 0
  • Joined: 2006/06/27 16:11:32
  • Location: Cockeysville, MD, USA
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 13:39:31 (permalink)
+1 (1)
Yes, your original code used characters '1' and '2'. Errors like that can be eliminated by using typedefs and enums:
typedef enum {Fan1, Fan2} tFanNum;
...
Fan1_DC = Set_Duty_Cycle(Fan1, High_Temp_Fan1 );
...
int Set_Duty_Cycle( tFanNum Fan_Num, int Fan_Temp )
...
switch( Fan_Num )
  case Fan1:  PWM4_LoadDutyValue(CCPR_Val);
...

If you use 1 a "duplicate case label error" will occur. But, surprisingly, it builds OK if you use '1' or 3. I may be thinking about Delphi (Pascal), which has strong type checking.
 
However, enums and defines and named constants can help. For instance, you could have:
#define RoomTempC 25
#define CCPR_Max 79
if (Fan_Temp > RoomTempC)
...
CCPR_Val = CCPR_Max;

This is important if you change something like PWM resolution. Instead of searching for all instances of 79, you just change the #define.

 
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 13:54:12 (permalink)
0
Thanks.  I will look at the changes you suggest.  Right now I'm trying to figure out why
 
uint16_t Temp_Increment = (Over_Temp - 10 - 25)*1000/Increment_Count;

 
is computed as -484 when
 
int Increment_Count = 79-CCPR_Min;



is correctly computed as 63.  I have 
 
__eeprom int Over_Temp = 70; 

 
and can print Over_Temp correctly i.e. it has the right number.
 
I thought unint16_t could represent 0-65535.
 
 
jack@kksound
code tags!
  • Total Posts : 2827
  • Reward points : 0
  • Joined: 2014/05/14 10:03:19
  • Location: 0
  • Status: online
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 14:02:04 (permalink)
0
SGK
Thanks.  I will look at the changes you suggest.  Right now I'm trying to figure out why
 
uint16_t Temp_Increment = (Over_Temp - 10 - 25)*1000/Increment_Count;

 
is computed as -484 when
 
int Increment_Count = 79-CCPR_Min;



is correctly computed as 63.  I have 
 
__eeprom int Over_Temp = 70; 

 
and can print Over_Temp correctly i.e. it has the right number.
 
I thought unint16_t could represent 0-65535.
 
 


You get a negative result from an unsigned integer variable? Must be how you are interpreting/displaying/printing the result.
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 14:11:26 (permalink)
+1 (1)
Doof! I had printf with %d.  If I change it to %u I get 65052.  Still formatting error or because Over_Temp is int rather than uint16_t?
 

 
int Increment_Count = 79-CCPR_Min;
uint16_t Temp_Increment = (Over_Temp-10-25)*1000/Increment_Count;
printf("Temp increment = %u\n",Temp_Increment);
uint16_t Adj_Temp = (Fan_Temp-25)*1000/Temp_Increment;
printf("Adj temp = %u\n",Adj_Temp);
CCPR_Val = Adj_Temp + CCPR_Min + 1;

 
Basically Adj_Temp is always being computed as zero. 
post edited by SGK - 2018/08/08 14:13:53
PStechPaul
Super Member
  • Total Posts : 2060
  • Reward points : 0
  • Joined: 2006/06/27 16:11:32
  • Location: Cockeysville, MD, USA
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 14:47:39 (permalink)
+1 (1)
I think your algorithm is way too complicated for what you really need. Basically, you probably just need maybe four fan speeds depending on temperature, and fan speed versus PWM has a wide tolerance. So I would suggest dispensing with all the calculations, and using something like:
int Set_Duty_Cycle( tFanNum Fan_Num, int Fan_Temp ) {
int Fan_DC, CCPR_val;
if( Fan_temp <= RoomTempC )
  Fan_DC = 0;
else if (Fan_temp < RoomTempC + 10)
  Fan_DC = 25;
else if (Fan_temp < RoomTempC + 20)
  Fan_DC = 50;
else if (Fan_temp < RoomTempC + 30)
  Fan_DC = 75;
else
  Fan_DC = 100;
 
CCPR_Val = Fan_DC*(CCPR_Max-CCPR_Min)/100;

switch( Fan_Num ) {
  case Fan1:  PWM4_LoadDutyValue(CCPR_Val);

    break;
  case Fan2:  PWM3_LoadDutyValue(CCPR_Val);

    break;

  }
return Fan_DC; }


post edited by PStechPaul - 2018/08/08 14:53:53

 
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 15:06:01 (permalink)
0
The algo works perfectly** in Excel for any Over_Temp and Min_DC etc. It will also work if frequency and resolution were to be changed (with proper adjustments for the max CCPR value). It's actually very simple and only 4 lines. 
a. work out how many increments there are between max CCPR value and min CCPR value. This is needed only because I allow the user to set a higher or lower DC for 25C.
b. convert that to temp increments in degrees C. (Use x1000 because we are using integer math.) Temp range is Over_Temp-10-25.
c. for any temp reading, calculate how many increments of temp it is above 25C.
d. set DC by adding that number to min CCPR. Because c is using integer maths we have to add 1.  
 
I just can't get C to do basic maths in two lines of code.  
 
For Over_Temp = 70 and a Min_DC of 20 (=> CCPR_Min = 16), Temp_Increment should equal (70-10-25)*1000/63 = 555.  Then Adj_Temp for, say, 32C = (32-25)*1000/555 = 12 and a correct CCPR_Val of 16+12+1 = 29 is calculated. (DC of 36%.)  
 
**Its only error (as a result of using integers for these two lines) is if Adj_Temp is an exact integer in which case the +1 should not be applied but I'm prepared to accept that. 
 
Weren't you the one who suggested reducing the prescaler to provide more PWM resolution? :) 
 
 
post edited by SGK - 2018/08/08 15:27:15
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/08 18:02:47 (permalink)
0
This works:
 

 
uint16_t Increment_Count = 79-CCPR_Min;
uint16_t Temp_Increment = (Over_Temp-10-25)*1000/Increment_Count;
uint16_t Adj_Temp = (Fan_Temp-25)*1000/Temp_Increment;
CCPR_Val = Adj_Temp + CCPR_Min + 1;

 
So for temps less than and equal to 25C we have Min_DC.  For temps >= Over_Temp less 10 degrees we have 100% DC.  And scaleable in between.  The response of the fan DC is very fast. 
post edited by SGK - 2018/08/08 18:08:55
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/09 10:35:54 (permalink)
0
PStechPaul
Yes, your original code used characters '1' and '2'. Errors like that can be eliminated by using typedefs and enums:
typedef enum {Fan1, Fan2} tFanNum;
 
...
 
Fan1_DC = Set_Duty_Cycle(Fan1, High_Temp_Fan1 );
 
...
 
int Set_Duty_Cycle( tFanNum Fan_Num, int Fan_Temp )
 
...
 
switch( Fan_Num )
 
  case Fan1:  PWM4_LoadDutyValue(CCPR_Val);
 
...
 


 
 
I get an error at int Set_Duty_Cycle( tFanNum Fan_Num, int Fan_Temp ) trying to do this.  tFanNum isn't recognised. I placed the typedef statement within void main(void) just ahead of the Fan1_DC... statement. (I implemented your other suggestions.)
PStechPaul
Super Member
  • Total Posts : 2060
  • Reward points : 0
  • Joined: 2006/06/27 16:11:32
  • Location: Cockeysville, MD, USA
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/09 12:28:10 (permalink)
+1 (1)
The function Set_Duty_Cycle() is global scope, but the typedef is local to main(). In general, it is good practice to put all #defines, typedefs, and function prototypes at the beginning of the file, or in a header if they might be needed elsewhere. And local variables should be declared at the start of functions, not within code. You have global variables and functions defined within main(), but it is better to have them also at the top of code. This makes debugging and code analysis easier.

 
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/08/15 10:35:14 (permalink)
+1 (1)
Hi sorry I have been away for a few days.  I will take a look at my variable/constant declarations again.  I'm hesitant to say this is done as I may jinx it but things seem to be working properly in testing.  I owe you guys a huge debt of gratitude for helping through this.  I really do appreciate it.  I've learnt a lot.  Thanks again!
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/09/07 15:55:37 (permalink)
0
 
So I went ahead and purchased an HM-10 module by DSD Tech. (HM-10 is needed for iOS.)
 
I can't for the life of me get it to work however. 
 
I can connect to the board via a USB to serial cable and Coolterm on my Mac.  I can follow this tutorial http://www.hangar42.nl/hm10  and connect the BLE module to the serial cable and use Coolterm to configure the module (albeit I left things at their default value). 
post edited by SGK - 2018/09/07 15:56:41
PStechPaul
Super Member
  • Total Posts : 2060
  • Reward points : 0
  • Joined: 2006/06/27 16:11:32
  • Location: Cockeysville, MD, USA
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/09/07 20:37:29 (permalink)
0

Access Denied

You don't have permission to access "http://www.microchip.com/forums/post.aspx?" on this server.
Reference #18.2d3a2b17.1536373292.5714a155

 
SGK
Senior Member
  • Total Posts : 158
  • Reward points : 0
  • Joined: 2018/05/14 13:55:08
  • Location: 0
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/09/08 04:57:47 (permalink)
0
Yeah I couldn't finish my post.  I gave up and sent you a PM.  I need to check if it is a baud rate issue.
 
EDIT:Got it working.  Baud rate wasn't set correctly.  So cool.  Thanks again!
post edited by SGK - 2018/09/08 09:45:11
PStechPaul
Super Member
  • Total Posts : 2060
  • Reward points : 0
  • Joined: 2006/06/27 16:11:32
  • Location: Cockeysville, MD, USA
  • Status: offline
Re: Newbie: controlling duty cycle of PWM set up with MCC 2018/09/08 11:54:55 (permalink)
0
Got your PM email, but I can't access my inbox on this horrible, goofy forum.
 
Using "thread reading mode" instead of default "flat reading mode".

 
Page: << < ..11121314 Showing page 14 of 14
Jump to:
© 2018 APG vNext Commercial Version 4.5