element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Enchanted Objects
  • Challenges & Projects
  • Design Challenges
  • Enchanted Objects
  • More
  • Cancel
Enchanted Objects
Blog 1958 Turntable from the Black Forest - 15: SAMA5D4 Blinky
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: Jan Cumps
  • Date Created: 12 May 2015 4:01 PM Date Created
  • Views 586 views
  • Likes 3 likes
  • Comments 3 comments
  • sama5d4
  • enchanted_player
  • enchanted_objects
  • xplained_ultra
  • atmel
Related
Recommended

1958 Turntable from the Black Forest - 15: SAMA5D4 Blinky

Jan Cumps
Jan Cumps
12 May 2015

image

 

I've done many attempts to build and execute my own C program on the atmel sama5d4 xplained ultra board.

 

Thanks to the tutorial on mikrocontroller-software.de, I was able to cross-compile and run my first binary (see post 13: Breakthrough - Run my own C++ Program on the SAMA5D4).

 

 

That same mikrocontroller-software.de has also helped me with the next step: blink the led.

 

 

Getting to Blinky

 

I've stolen the title of this section. Getting a led to blink is the "Hello, world!" of the embedded world.

Usually, this is the first exercise you do right after unboxing.

It took me so long to get here because of several reasons. I knew that the example that I'm trying here was around, but I held off trying it out.

Grease up your German skills once more, and visit Atmel SAM5D4 LED D8 blinken lassen Beispiel [ATMELRegistered SAMA5D4 Xplained Ultra Getting Started] .


File Handle based I/O with Linux


I'm still struggling with the example.

The author uses the file handles that are created in the linux distro to talk with the peripherals. That part I get.

But I don't know yet why there's both a call to set the GIO ("/sys/class/gpio/pioB3/value") and a call to set the brightness as below:


        if(true==on)
        {
        LinuxFile("/sys/class/leds/d8/brightness",
                O_WRONLY).Write("1");
        std::cout << "Switch LED on";
        }
        else
        {
            LinuxFile("/sys/class/leds/d8/brightness",
                            O_WRONLY).Write("0");
            std::cout << "Switch LED off";
        }


I'll have to do some more reading, learning and and testing to understand that.

I'm a bit in a disadvantage there, because I don't have wired network in my lab. The board is dangling from my router/wifi device in the living room image.


Anyway, the program works. In debug mode, it compiles to 101 KB.

In the console, this is how the execution looks like:

image


The blue led on the board blinks:



image


Customer Action Photo:



image



 

Table of Contents
Chapter 1: Fix the turntable
1: Perpetuum Ebner Musical 1
2: A Time to Kill and a Time to Heal
3: Preparation for Motor Drive
4: Motor control with Infineon Motor Shield and Arduino UNO
5: Turntable speed sample testbed with Arduino UNO
6: Turntable Speed Sensor design
7: Control Theory - End of Chapter 1
Chapter 2: First Enchantments
8: Digital Light Organ Enchantment
9: Autonomous Servo Lift
10: SMD Time - Solder the IR Speed Sensor PCB
11: Yelp - who can Help me to Compile and Run my First SAMA5D4 C Program
12: Son et Lumiere - End of Chapter 2
Chapter 3: Taming the Board
13: Breakthrough - Run my own C++ Program on the SAMA5D4
14: Digital Light Organ Input Buffer
15: SAMA5D4 Blinky
16: Scope Creep
17: Audio Sampling with 16-bit ADC ADS8343
18: Sending Files to SAMA5D4 over USB
19: Port my Light Organ from Arduino to SAMA5D4
20: Fast Fourier Transform on the SAMA5D4 - End of Chapter 3
Epilogue: Reaching for the Clouds
21: Right-Sizing my Plans
22: My Own C++ Buffered Sampler on the SAMA5D4
Interlude
23: Building In the Motorized Light Organ
24: Up to the Clouds with Yún
25: Publish or Perish
26: Turntable Finished
Stretch & Boni
Bonus 1a: Remote Light Organ with WiFI pt. 1
Bonus 1b: Remote Light Organ with WiFI pt. 2
Grande Finale: Paho MQTT Client on the SAMA5D4
Related blog
Vintage Turntable repair: Can I fix a Perpetuum Ebner from 1958
Review 1: Atmel SMART SAMA5D4 Xplained Ultra Unboxing and First Steps
Review 2: Atmel SMART SAMA5D4 Xplained Ultra - Building the Libraries from Source
Review 3: Digital Continuous Rotation (360°) Servo Part 1
Review 4: Digital Continuous Rotation (360°) Servo Part 2
Review 5: Atmel SMART SAMA5D4 Xplained Ultra - TCP/IP running
Review 6: Atmel SMART SAMA5D4 Xplained Ultra - LINUX Distro with SSH support
poem
Enchanted Objects: Let's work together to tame the ATMEL SMART SAMA5D4 Xplained Ultra kit
17 bis: Off South...
Review 7: Atmel SMART SAMA5D4 Xplained Ultra - C++ ADC Example on Linux
Review 8: Atmel SMART SAMA5D4 Xplained Ultra - Product Review
Review 9a: Atmel SMART SAMA5D4 Xplained Ultra - Set up ADC Buffer with Hardware Trigger Part 1
Review 9b: Atmel SMART SAMA5D4 Xplained Ultra - Set up ADC Buffer with Hardware Trigger Part 2
Review 10: Atmel SMART SAMA5D4 Xplained Ultra - New Content on AT91.com
1958 Turntable from the Black Forest - Summary of the Enchanted Player Story
  • Sign in to reply

Top Comments

  • Workshopshed
    Workshopshed over 10 years ago in reply to Jan Cumps +3
  • Former Member
    Former Member over 10 years ago in reply to Workshopshed +1
    I Like!
  • Former Member
    Former Member over 10 years ago in reply to Workshopshed

    I Like!

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Workshopshed
    Workshopshed over 10 years ago in reply to Jan Cumps

    Know the rules well so you can break them effectively

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps over 10 years ago

    While experimenting, I discovered that the whole example also works with a small subset of the code,

    without the I/O handle exports etc...

     

    class LinuxFile {
    private:
        int m_Handle;
    
    
        /*
         * Linux File Handling to acces devices via filesystem
         */
    public:
        LinuxFile(const char *pFile, int flags = O_RDWR) {
            m_Handle = open(pFile, flags);
        }
    
    
        ~LinuxFile() {
            if (m_Handle != -1)
                close(m_Handle);
        }
    
    
        size_t Write(const void *pBuffer, size_t size) {
            return write(m_Handle, pBuffer, size);
        }
    
    
        size_t Read(void *pBuffer, size_t size) {
            return read(m_Handle, pBuffer, size);
        }
    
    
        size_t Write(const char *pText) {
            return Write(pText, strlen(pText));
        }
    
    
        size_t Write(int number) {
            char szNum[32];
            snprintf(szNum, sizeof(szNum), "%d", number);
            return Write(szNum);
        }
    };
    
    
    
    
    int main() {
    
    
        bool on = true;
        for (;;)
        {
            on = !on;
    
    
            if(true==on)
            {
            LinuxFile("/sys/class/leds/d8/brightness",
                    O_WRONLY).Write("1");
            }
            else
            {
                LinuxFile("/sys/class/leds/d8/brightness",
                                O_WRONLY).Write("0");
            }
            /*
             *  // With this sleep(1) command the task sleeps 1 second and wake then. This is not a good solution but for this example ok
             */
                sleep(1);
        }
    
    
        return 0;
    }

     

    I'm continuing my exercise to find out if I'm breaking linux rules, or if I don't fully understand why the example is doing exports.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube