Operácie

AVR Vstupy a výstupy v C: Rozdiel medzi revíziami

Z SensorWiki

(Nová stránka: Category:AVRCategory:CAD_RS)
 
Riadok 1: Riadok 1:
  
 +
== Vstupy a výstupy na MiniMEXLE doske. ==
 +
 +
 +
Obvykle sa pri programovaní jednočipových mikropočítačov začína programom
 +
na ovládanie jedného vstupu a výstupu, napr. tlačítko a LED. Je to taký
 +
"Hello, World!" program pre vnorené systémy.
 +
 +
 +
Na doske MiniMEXLE máme dve LED diódy a štryi tlačítka.
 +
 +
[[Image:MiniMexleIO.png|center|thumb|350px|Connection of the LED and pushbutton on the MiniMEXLE board.]]
 +
 +
Tlačítka S1 až S4 sú pripojené k pinom PC0 až PC3 a sú aktívne v nule, žltá LED je pripojená k PB2 a je tiež  aktívna v nule (t.j. LED svieti, keď je na výstupe log. 0). Druhá, červená LED dióda je aktívna v jednotke a je pripojená na pin PC5.
 +
 +
 +
Nasledovný C-program demonštruje možnosti prístupu k binárnym vstupom a výstupom
 +
rôznymi prostriedkami jazyka avr-gcc.
 +
 +
<source lang="c">
 +
/* ************************************************************************** */
 +
/*                                                                            */
 +
/*  Monoliticke mikropocitace - Priklad 1.1                                  */
 +
/*                                                                            */
 +
/*  Program zasvieti/zhasne LED na PB2 podla stavu prepinaca na PC0          */
 +
/*                                                                            */
 +
/*  Autor: Richard Balogh <balogh@elf.stuba.sk>                              */
 +
/*  Historia:                                                                */
 +
/*            19.02.2006 prva pokusna verzia                                  */
 +
/*            05.11.2008 uprava pre MiniMEXLE na cviko ZSAR                  */
 +
/*  Prenositelnost:                                                          */
 +
/*                                                                            */
 +
/* ************************************************************************** */
 +
 +
#include <avr\io.h>        // spolu s -mmcu=atmega88 nahra spravny .h subor
 +
                            // ktory potrebujeme kvoli PORTx, PINx a DDRx
 +
 +
int main()
 +
{
 +
 +
/* ***************** Initialization ************************ */
 +
 +
/* Port settings for LED *********************************** */
 +
 +
    DDRB = 0b00000100;    // bin: 0000 0100  1 = out, 0 = in
 +
    PORTB = 0xFF;          // bin: 1111 1111  1 = LED off
 +
 +
/* Port settings for Switch ******************************** */
 +
 +
    DDRC = 0b00000000;    // bin: 0000 0000  1 = out, 0 = in
 +
    PORTC = 0xFF;          // bin: 1111 1111  1 = pull-up active
 +
 +
 +
 +
/* ***************** Main Endless Loop ********************** */
 +
 +
 +
  while (1) {              // toto rob stale dokola
 +
 +
  if (PINC & 0b00000001)  // bin:  PINC & 0000 0001 = sw1 OFF?
 +
    PORTB = 0x04;        // Lepsie takto
 +
// PORTB |= 0xff;    // bin  PORTD + 0010 0000 = nastav PD5, LED OFF
 +
  else      // t.j. ak sw1 ON:
 +
//        PORTD &= 0xff;    // bin: PORTD & 1101 1111 = vynuluj PD5, LED ON
 +
    PORTB = 0x00;
 +
 +
  }
 +
  return (0);            // formalita, nikdy sem neprideme
 +
}
 +
 +
</source>
 +
 +
 +
Task:
 +
 +
The task is to control the on and off state of the LED with a
 +
single button. First press of the button will set LED on, second
 +
press off. Hint: You will need a memory to store the actual LED
 +
state to change it.
  
 
[[Category:AVR]][[Category:CAD_RS]]
 
[[Category:AVR]][[Category:CAD_RS]]

Verzia zo dňa a času 11:39, 26. november 2008

Vstupy a výstupy na MiniMEXLE doske.

Obvykle sa pri programovaní jednočipových mikropočítačov začína programom na ovládanie jedného vstupu a výstupu, napr. tlačítko a LED. Je to taký "Hello, World!" program pre vnorené systémy.


Na doske MiniMEXLE máme dve LED diódy a štryi tlačítka.

Connection of the LED and pushbutton on the MiniMEXLE board.

Tlačítka S1 až S4 sú pripojené k pinom PC0 až PC3 a sú aktívne v nule, žltá LED je pripojená k PB2 a je tiež aktívna v nule (t.j. LED svieti, keď je na výstupe log. 0). Druhá, červená LED dióda je aktívna v jednotke a je pripojená na pin PC5.


Nasledovný C-program demonštruje možnosti prístupu k binárnym vstupom a výstupom rôznymi prostriedkami jazyka avr-gcc.

/* ************************************************************************** */
/*                                                                            */
/*  Monoliticke mikropocitace - Priklad 1.1                                   */
/*                                                                            */
/*  Program zasvieti/zhasne LED na PB2 podla stavu prepinaca na PC0           */
/*                                                                            */
/*  Autor: Richard Balogh <balogh@elf.stuba.sk>                               */
/*  Historia:                                                                 */
/*            19.02.2006 prva pokusna verzia                                  */
/*            05.11.2008 uprava pre MiniMEXLE na cviko ZSAR                   */
/*  Prenositelnost:                                                           */
/*                                                                            */
/* ************************************************************************** */

#include <avr\io.h>         // spolu s -mmcu=atmega88 nahra spravny .h subor
                            // ktory potrebujeme kvoli PORTx, PINx a DDRx

int main()
{

/* ***************** Initialization ************************ */

/* Port settings for LED *********************************** */

     DDRB = 0b00000100;     // bin: 0000 0100  1 = out, 0 = in
    PORTB = 0xFF;           // bin: 1111 1111  1 = LED off

/* Port settings for Switch ******************************** */

     DDRC = 0b00000000;     // bin: 0000 0000  1 = out, 0 = in
    PORTC = 0xFF;           // bin: 1111 1111  1 = pull-up active



/* ***************** Main Endless Loop ********************** */


  while (1) {              // toto rob stale dokola

  if (PINC & 0b00000001)   // bin:  PINC & 0000 0001 = sw1 OFF?
     PORTB = 0x04;         // Lepsie takto
	 // PORTB |= 0xff;     // bin  PORTD + 0010 0000 = nastav PD5, LED OFF
  else       // t.j. ak sw1 ON:
//         PORTD &= 0xff;     // bin: PORTD & 1101 1111 = vynuluj PD5, LED ON
     PORTB = 0x00;

  }
   return (0);             // formalita, nikdy sem neprideme
}


Task:

The task is to control the on and off state of the LED with a single button. First press of the button will set LED on, second press off. Hint: You will need a memory to store the actual LED state to change it.