Laura Cristina Massaglia

HOME
ABOUT ME
ASSIGNMENTS
FINAL PROJECT


ASSIGNMENTS

Embedded Programming

This week's assignments were:

    - Read a microcontroller data sheet.
   
    - Program your board to do something, with as many different programming languages and programming environments as possible.


Read A Microcontroller Data Sheet

Reading and understanding both the microcontroller data sheet and the ISP header is essential because, they both have important functions that can facilitate the development of solutions using Arduino ATtinys. I found the microcontroller data to be very thurough and organized. Here are some of the examples of information which I found to be important and also interesting. The reason that I found this information to be important is because these are the essential pins that control your board.

Click on link which I read to learn more: This is just an example of a micro controller data sheet, the data sheet that I used you will see further down the page.
http://academy.cba.mit.edu/classes/embedded_programming/doc8183.pdf

    VCC: supplies voltage
    GND: ground
    RESET: reset input
    MOSI: The master sends data to the peripheral
    MISO: The master receives data from the peripheral
    SCK: The master controls the pulse / clock of the connection



In the picture below you can see the board schematic.
Note that the PA3 pin correspond to the LED.  



As you can see in the image bellow the ICSP Header has six pins in two sets of three.





Programming The Board To Do Something

During the electronics design , I made the Hello World board, but I didn’t program it yet. I started with a button and one LED. First I downloaded and installed a lot of software that was mentioned in the class. Since I have Macbook, I downloaded and installed the Crosspack AVR and then XCode from the app store. I followed this tutorial:  http://archive.fabacademy.org/archives/2017/doc/programming_FabISP.html

In the picture below you can see my board I made in the electronics design week:



I already had the Arduino Software, because I used it for the electronics design assignment. The first step was to configure the Arduino IDE to use my USBTiny and to be able to program a ATTiny84 microcontroller. I followed this tutorial on how to do it: http://highlowtech.org/?p=1695.

I followed these steps:

    1.   Open the preferences dialog in the Arduino software.
    2.   Find the “Additional Boards Manager URLs” field near the bottom of the dialog.
    3.   Paste the following URL into the field (use a comma to separate it from any URLs you’ve already added):
          https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
    4.   Click the OK button to save your updated preferences.



    5.    Scroll to the bottom of the list; you should see an entry for “ATtiny”.
    6.    Click on the ATtiny entry. An install button should appear. Click the install button.
    7.    The word “installed” should now appear next to the title of the ATtiny entry.


I’m a beginner at programming. As I mentioned before I have had only some classes at my university. This helped in my decision to read and study more about this subject using a book on how to program with Arduino. Here below there is a picture from the book that I read.



After I read and understood a little better about the subject, I opened the Arduino software and started programing. My instructor gave us a paper on how to use Arduino as ICSP Programmer for ATTiny45/85.


Once, looking over the diagram the instructor gave us I had noticed that my LED was at pin 3 and my button was at pin 7. Then I used the ATtiny84 and the configuration as you can see in the image below:



Below there is a list on how to configure ATtiny84:

1) Select the board: Actually you select the category of microcontroller
2) Processor: Select the type of microntroller we only have the Attiny 84 in our lab, because the memory is bigger than the 44
3) Clock: Select the clock that you used to make your board. As I used an external oscillator with 20MHz, I used it.
4) Port: It usually recognizes automatically, you just need to select it
5) Programmer: Its necessary to select USBtinyISP. That’s the one refereed to the Fab ISP that I used
After that we need to compile clicking the “V” button. The compilation checks the programming and some errors.
Before upload and program it, make sure the FabISP and the board are properly connected to your computer. You also wants to make sure that your board and the  FabISP pins match one to another. The connector can be inverted because of the ICSP header, and if its happen, the programming will not work
Then click “Upload ->” to program the board. If everything is fine then you receive no errors.

My idea was to program something simple, since programming for me is very hard. My first attempt was programing my LED to blink and it was a successful attempt. See image below:


The next step was to program the button. On my first attempt to program the button it didn’t look the way I expected it, because when I connected the USB cable to my computer the LED light was already on. When I pressed the button the light went out. As you can see in the video below:

https://youtu.be/Y6KYqWusZLw

I realized that there was something wrong, because my initial idea was the opposite. The way it was supposed to work is when I pressed the button the LED Light would turn on. Below is an image of my first attempt at programing the button:


I didn’t know what was wrong. So then my next attempt was to change the last “digitalWrite(LED,HIGH)”; for “digitalWrite(LED,LOW)”;
and “digitalWrite(LED,LOW)”; for “digitalWrite(LED,HIGH)”. As you can see in the Image below:



It didn’t solve my problem. So, I went back and decided to carefully read the program again and I realized that I didn’t need to make those changes because the problem was in if(val==HIGH). Instead of HIGH I needed to change to if(val==LOW) because the button was connected on the ground and not on VCC. As  seen in the image below:



After I fixed the error my program finally worked. When I connected the board with my computer and pressed the button, the LED turned on, as you can see in the video link: https://youtu.be/-TZJpLVlcNE


Project Files:

   
  Button


Back to Top                                                                                                                                                         Back to:ASSIGNMENTS PAGE