i
3 Votes

|
|
|
◎유용한링크◎ |
→ Alldatasheet.com |
Using Atmel Studio 6
Introducing the All New
So till now, we all were using AVR Studio 5 for programming our awesome AVR microcontrollers. But now, we won’t be using that anymore, because Atmel has released its new version!
But why not AVR Studio 6?
Yes, this is a question which even I asked when I heard its name. Seems like Atmel has been manufacturing a lot of ARM Cortex-M and wanted to give its users seamless and easy-to-use environment to write, build and debug their applications written in C/C++ or assembly code. So this gave rise to the new Atmel (not AVR) Studio 6. Two architectures (ARM/AVR), One Studio! Have a look at the following video.
Using Atmel Studio 6
Those who have been using AVR Studio 5 will find the new Atmel Studio 6 “exactly” same as before! So since there isn’t quite much difference between the two softwares, I would copy and paste the same tutorial here, with the necessary changes done so that the newbies don’t have to read the previous post on AS5. So here it goes…
Embedded C welcomes you! – Revisited
Hello folks! Now that you are aware of the different port operations in AVR, we can move forward to actually code our way right through it! Since we will be using C (in fact Embedded C), the best software is the Atmel Studio 6 by Atmel. This version is the successor of the previous AVR Studio 5. The best part about both is that they are very interactive, user friendly, have awesome UI and unlike other compilers, they are totally free of cost. You can download it from here.
For those who do not want to register in order to download, I am posting the direct download links of the images here. Please report to me if the links are not proper, I will update them in that case.
- Atmel Studio 6.0 (build 1843) Installer (528MB) - Contains AS6.0, ASF, Atmel Toolchain
- Atmel Studio 6.0 (build 1843) Installer - Full (743MB) - Also contains Visual Studio Shell & .NET 4.0 (Download it if your system will not be connected to the internet during installation).
You have been familiar with C (I presume). You have been working with normal data types and have been writing codes that run on a computer. But now, we will be using the same C (with some modifications) to run our microcontroller (MCU). The C used in embedded systems design is called Embedded C. Here, you will come across the same if, for, while, do while, case, switch, etc, but you will be introduced to newer data types (actually a modification of the existing ones), newer libraries, newer built-in functions and newer registers!
What do we need?
The following software will assist you in your work. You can download them from the links provided. We will discuss them one by one here.
Installation of these software is pretty straightforward. You should not face any trouble in it. During the installation of Atmel Studio 6, it might need to install some other stuffs before the actual installation begins. If you face any trouble in installation, you are free to drop a comment below.
Let’s have a look at the features of Atmel Studio before we proceed.
Here is a step-by-step guide regarding how to create your first AVR Project using Atmel Studio 6.
Now that you have successfully created your new project, we need to write a code in the AVR Studio Code Window. Let’s write the code for the problem statement discussed in this post. We will write the code for blinking an LED. The schematic for physical connection is given below. Please note that it’s just a schematic of the region of interest. For full schematic, view the circuit diagram of your development board.
Now most of you will copy and paste the code. But I suggest you to type the whole code. This will introduce you to a whole new feature! While typing any keyword or inbuilt function, Atmel Studio 6 automatically displays a list of possible functions/keywords that you wish to type (thanks to Visual Basic support). You can select it and hit enter key. This increases your typing speed also (somehow!). Plus it also gives you greater confidence in writing the code.
#include #include // for _delay_ms()int main(void){ DDRC = 0x01; // initialize port C while(1) { // LED on PORTC = 0b00000001; // PC0 = High = Vcc _delay_ms(500); // wait 500 milliseconds //LED off PORTC = 0b00000000; // PC0 = Low = 0v _delay_ms(500); // wait 500 milliseconds }}
Code Explained:
#include
is a header files which provides you with various i/o operations like DDRx, PINx, PORTx, etc.#include
is a header file which provides you with inbuilt delay functions like _delay_loop_1(), _delay_loop_2(), _delay_ms(), _delay_us()
, etc._delay_ms(xxx)
provides a delay xxx milliseconds whereas _delay_us(xxx)
provides a delay of xxx microseconds. There are two more types of delays which are used commonly, _delay_loop_1()
and _delay_loop_2()
, but to understand their concept, you need to be familiarized with timers, which we will discuss later.There are two things that you must configure in order to make your code run in your MCU in a better way.
This is a very essential step. This is because if you don’t set your clock frequency, the whole timing would go wrong. _delay_ms(500) will wait for 500ms, but it counts with respect to your clock frequency. If your F_CPU setting is wrong, it won’t wait for 500ms. It will either wait longer or for lesser time. By default, delay.h defines F_CPU=1000000UL (1MHz). UL stands for unsigned long. But this isn’t always the case. Check your development board if any crystal oscillator is present or not (across the XTAL pins). If it is present, note down the exact value of the frequency. If no, then choose either 1MHz, 2MHz, 4MHz or 8MHz depending upon the fuses set in your MCU (I expect that correct fuses must have been written. We will discuss about fuses later).
Note: You must set fuse bits for a new AVR microcontroller. These fuse bits will specify the correct clock frequency (whether to follow internal clock or external clock) and many other settings. They are set only once, and hence MUST be set correctly, or else you will render your MCU useless. To learn about fuses, view this.
Now, how to put? Well, the simplest way is to add the following code before including the header files.
#ifndef F_CPU#define F_CPU 16000000UL // or whatever may be your frequency#endif// remember to put it before delay.h// now include the header files#include #include // rest code goes here
You need to add it before every code you write. Or else, you can go to Project menu → HelloWorld Properties (Alt+F7) → Toolchain → AVR/GNU C Compiler → Symbols → Add F_CPU=16000000UL to Defined Symbols.
Always check this out before compiling your code.
You need to choose an appropriate optimization level for your code. Choosing the right optimization level will result in smaller hex file and faster compilation time. You can do it so by going to Project menu → HelloWorld Properties (Alt+F7) → Toolchain → AVR/GNU C Compiler → Optimization → Choose -O2 as Optimization Level.
To know what optimization is, view this. For more details regarding optimization of code in AVR, visit this page. For details regarding the meanings of different optimization levels, view the GCC-GNU User Manual.
After writing the code and configuring it, we proceed to build it. To do so, go to Build menu → Build Solution (F7). Now, it builds your GCC C project. After the build process has finished, you will see the details in the Output window (below the source code window). There, you can check your memory usage and the build log. In the end, it shows Build Succeeded. If it doesn’t show, check you code once again and check whether you have configured your project properly. If still it shows Build Unsuccessful, then post your queries here, I will look into the matter.
Now, once you have built your code, a .hex file has been generated for your .c file. You can find it in the following directory
...path to your folder/HelloWorld/HelloWorld/Debug/HelloWorld.hex
The next step is to burn this hex file into your MCU. For this, we will use avrdude. AVR Programming can also take place from within AVR Studio 5, but at present, AVR Studio 5 has support only for the current Atmel Programmers. But most of the programmers available are AVRISP, AVRISP mkII, USBtinyISP, USBasp, etc. So, we will be using avrdude.
If you use AVRISP and USBtinyISP, or want to learn how to use avrdude GUI, proceed to the next section. If you use USBasp, then skip the next section and jump over to the topic eXtreme Burner – AVR.
There will be many who have previously worked with AVR Studio 4. The interface of AVR Studio 5 is a lot different than its earlier editions. Also, the AS4 project is not supported by AS5. For that, you can open AS5, go to File menu → Import → Import AVR Studio 4 Project. This converts AS4 project into AS5 solution and then opens in AS5.
AVRDude stands for AVR Downloader Uploader. It is a free software that comes with WinAVR package. It’s an executable program which can be run using the command prompt. To have a detailed idea of how avrdude works and how to run it using command prompt, view this page. But if you have an AVRISP programmer, we have a GUI for you! Its called FreeISP. The download link is provided at the top.
Please Note: Apart from FreeISP, there are many more GUI for avrdude, like the AVRDude-GUI, AVR8 Burn-O-Mat, etc. They all are simple to use, but I have discussed only FreeISP and eXtreme Burner here. But unlike FreeISP or eXtreme Burner, AVRDude-GUI supports all kinds of programmers supported by avrdude.
After you click program, FreeISP invokes avrdude and passes the required comments to it as per your inputs. Then avrdude reads your device and verifies your device ID and your chip signature. After that, it erases the flash and then writes the new hex file specified by you into the flash. Then it once again reads the flash in order to verify the data. And thus after all this, your code is burnt into the MCU and your MCU is ready to use! It might have already started to respond to your code… check that the LEDs must be blinking!
If programmed correctly, you should see something like this.
avrdude.exe: AVR device initialized and ready to accept instructionsReading | ################################################## | 100% 0.01savrdude.exe: Device signature = 0x1e9502avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option.avrdude.exe: erasing chipavrdude.exe: reading input file "C:\Users\Mayank\Simulations\AVRStudio\AVR Studio 5\MyFirstProject\MyFirstProject\Debug\MyFirstProject.hex"avrdude.exe: writing flash (206 bytes):Writing | ################################################## | 100% 0.13savrdude.exe: 206 bytes of flash writtenavrdude.exe: verifying flash memory against C:\Users\Mayank\Simulations\AVRStudio\AVR Studio 5\MyFirstProject\MyFirstProject\Debug\MyFirstProject.hex:avrdude.exe: load data flash data from input file C:\Users\Mayank\Simulations\AVRStudio\AVR Studio 5\MyFirstProject\MyFirstProject\Debug\MyFirstProject.hex:avrdude.exe: input file C:\Users\Mayank\Simulations\AVRStudio\AVR Studio 5\MyFirstProject\MyFirstProject\Debug\MyFirstProject.hex contains 206 bytesavrdude.exe: reading on-chip flash data:Reading | ################################################## | 100% 0.11savrdude.exe: verifying ...avrdude.exe: 206 bytes of flash verifiedavrdude.exe: safemode: Fuses OKavrdude.exe done. Thank you.
Now, if you use USBasp programmer, we have another awesome GUI for you, eXtreme Burner – AVR !
Now for those who use USBasp programmer, the best GUI that I could find is the eXtreme Burner – AVR. This GUI has been developed by Avinash Gupta of eXtreme Electronics, India. You can find his tutorial here. It is available for Windows XP, Windows Vista/7 (32/64 bit), Linux (Fedora 10, Ubuntu 10.10). A few screen shots (Windows) are shown below.
GUI Software for USBasp
GUI Software for USBasp – Burn Progress
GUI Software for USBasp – Task Complete!
So, I guess we are done regarding how to use Atmel Studio 6. You can connect more than one LED and create different blinking patterns! You can do whatever you want! And you can also post comments down here to let me know!
If you have any kind of suggestions, clarifications, constructive criticism etc, you can post your comments below! I will be glad to see them! Also you can grab the RSS Feeds or subscribe to my website to stay updated!
Thank You
http://maxembedded.wordpress.com/2012/06/25/using-atmel-studio-6/
등록된 댓글이 없습니다.