Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pwm fails with file not found error On BeagleBoneBlack #97

Open
rickblair opened this issue Jan 18, 2017 · 2 comments
Open

pwm fails with file not found error On BeagleBoneBlack #97

rickblair opened this issue Jan 18, 2017 · 2 comments

Comments

@rickblair
Copy link

I am trying to run the PWM example. I run as root. System is BeagleBoard.org Debian Image 2015-11-12 Bulldog version is latest.

Here is the error:
[java] -- listing properties --
[java] First
[java] Exception in thread "main" java.lang.RuntimeException: java.io.IOException: No such file or directory
[java] at io.silverspoon.bulldog.linux.sysfs.SysFs.echoAndWait(Unknown Source)
[java] at io.silverspoon.bulldog.beagleboneblack.sysfs.BBBSysFs.createSlotIfNotExists(Unknown Source)
[java] at io.silverspoon.bulldog.beagleboneblack.pwm.BBBPwm.setupImpl(Unknown Source)
[java] at io.silverspoon.bulldog.core.pin.AbstractPinFeature.setup(Unknown Source)
[java] beagleboneblack.dogtag=BeagleBoard.org Debian Image 2015-11-12
[java]
[java] at io.silverspoon.bulldog.core.pin.Pin.activateFeature(Unknown Source)
[java] at io.silverspoon.bulldog.core.pin.Pin.as(Unknown Source)
[java] at com.honeywell.spsd.deliveryTruck.PWMTest.main(PWMTest.java:20)
[java] Caused by: java.io.IOException: No such file or directory
[java] at java.io.FileOutputStream.writeBytes(Native Method)
[java] at java.io.FileOutputStream.write(FileOutputStream.java:326)
[java] at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
[java] at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:316)
[java] at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:149)
[java] at java.io.OutputStreamWriter.close(OutputStreamWriter.java:233)
[java] at java.io.BufferedWriter.close(BufferedWriter.java:266)
[java] ... 7 more
[java] Java Result: 1

Here is the code I am trying to run:

import io.silverspoon.bulldog.core.gpio.DigitalOutput;
import io.silverspoon.bulldog.core.platform.Board;
import io.silverspoon.bulldog.core.platform.Platform;
import io.silverspoon.bulldog.core.pwm.Pwm;
import io.silverspoon.bulldog.core.pwm.SoftPwm;
import io.silverspoon.bulldog.core.util.BulldogUtil;
import io.silverspoon.bulldog.beagleboneblack.pwm.;
import io.silverspoon.bulldog.beagleboneblack.
;

public class PWMTest
{

public static void main(String[] args)
{
final Board board = Platform.createBoard();

  //These will always share the same frequency - same pwm group! 
  Pwm pwm1 = board.getPin(BBBNames.EHRPWM0A_P9_21).as(Pwm.class); 
  Pwm pwm2 = board.getPin(BBBNames.EHRPWM0B_P9_22).as(Pwm.class); 
  pwm1.setFrequency(50.0f);  // 50 Hz 
  pwm1.setDuty(0.5f);    // 50% duty cycle 
  pwm1.enable(); 
   
  pwm2.setFrequency(50.0f);  // 50 Hz 
  pwm2.setDuty(0.3f);    // 30% duty cycle*/ 
  pwm2.enable(); 
   
  //These will always share the same frequency - same pwm group! 
  Pwm pwm3 = board.getPin(BBBNames.EHRPWM1A_P9_14).as(Pwm.class); 
  Pwm pwm4 = board.getPin(BBBNames.EHRPWM1B_P9_16).as(Pwm.class); 
  pwm3.setFrequency(1000.0f);  // 1000 Hz 
  pwm3.setDuty(0.5f);    // 50% duty cycle 
  pwm3.enable(); 
   
  pwm4.setFrequency(1000.0f);  // 1000 Hz 
  pwm4.setDuty(0.9f);    // 90% duty cycle 
  pwm4.enable(); 
  
  //These will always share the same frequency - same pwm group! 
  Pwm pwm5 = board.getPin(BBBNames.EHRPWM2A_P8_19).as(Pwm.class); 
  Pwm pwm6 = board.getPin(BBBNames.EHRPWM2B_P8_13).as(Pwm.class); 
  pwm5.setFrequency(10000.0f); // 10 kHz 
  pwm5.setDuty(0.25f);   // 25% duty cycle 
  pwm5.enable(); 
   
  pwm6.setFrequency(10000.0f); 
  pwm6.setDuty(0.75f);   // 75& duty cycle 
  pwm6.enable(); 
   
  //On some pins there are conflicts with hdmi 
  if(!board.hasProperty(BBBProperties.HDMI_ENABLED)) { 
   Pwm pwm7 = board.getPin(BBBNames.ECAPPWM0_P9_42).as(Pwm.class); 
   pwm7.setFrequency(100.0f); 
   pwm7.setDuty(0.5f); 
   pwm7.enable(); 
   
   Pwm pwm8 = board.getPin(BBBNames.ECAPPWM2_P9_28).as(Pwm.class); 
   pwm8.setFrequency(100.0f); 
   pwm8.setDuty(0.9f); 
   pwm8.enable(); 
  } 
   
  // This is a software pwm. It has kind of high cpu costs  
  // and is far from precise, but it can be used to drive  
  // motors for example and can be set up on any digital output 
  Pwm softPwm = new SoftPwm(board.getPin(BBBNames.P8_12)); 
  softPwm.setFrequency(50.0f); 
  softPwm.setDuty(0.2f); 
  softPwm.enable(); 
   
  for(int i = 0; i < 10; i++) { 
   for(double d = 0.0; d < 1.0; d += 0.01) { 
    pwm5.setDuty(d); 
    pwm6.setDuty(d); 
    
    BulldogUtil.sleepMs(1); 
   } 
    
   for(double d = 1.0; d > 0.0; d -= 0.01) { 
    pwm5.setDuty(d); 
    pwm6.setDuty(d); 
     
    BulldogUtil.sleepMs(1); 
   } 
  } 
   
  System.out.println("You can exit with ctrl + c"); 
  while(true) { 
   BulldogUtil.sleepMs(100); 
  } 

}
@Aidan275
Copy link

Aidan275 commented May 1, 2018

@rickblair I'm getting the same errors, did you ever solve this issue?

@rickblair
Copy link
Author

Wow that was a while back. I believe I rolled back to an earlier version of Debian. The way the hardware mapping for GPIO changed between kernel versions.

Sorry I don't have the version info anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants