MetkuMods



Kuinka pääset alkuun mikrokontrollereiden kanssa - Osa 1.

Perusteet käyttäen Atmelin mikrokontrollereita
 
Kirjoittaja: Aki Korhonen
Julkaistu: 26.01.2009
In English In English
Suomeksi Suomeksi

Esimerkkejä

Muutama perusesimerkki sisään- ja ulostulojen käytöstä, jotta voit testata kytkennän ja ohjelmistot, että ne toimivat kuten pitääkin.

Pinnit:
PB0 (pinni 5) =  1 (desimaali), 0x01 (hex), [00001 binääri]
PB1 (pinni 6) =  2 (desimaali), 0x02 (hex), [00010 binääri]
PB2 (pinni 7) =  4 (desimaali), 0x04 (hex), [00100 binääri]
PB3 (pinni 2) =  8 (desimaali), 0x08 (hex), [01000 binääri]
PB4 (pinni 3) = 16 (desimaali), 0x10 (hex), [10000 binääri]

Esimerkki 1: Yksinkertainen ledivilkutin

Tämä yksinkertainen koodi laittaa ledin päälle yhdeksi sekunniksi ja pois yhdeksi sekunniksi ja jatkaa sitä loputtomasti.

// Taajuusarvo, jonka viivefunktio tarvitsee.
// Piiri on tehdasasetettu toimimaan sisäisellä
// oskillaattorilla 1 MHz taajuudella, joten arvoksi tulee tähän 1000000UL
#define F_CPU 1000000UL

#include <avr/io.h>
#include <util/delay.h>

// Ledi on yhdistetty PB4 (pinni 3 piirillä)
#define LEDPIN 4

int main(void)
{
	DDRB = 0x1F; // PB0-PB4 ulostuloja
	PORTB = 0x00; // Kaikki ulostulot alas
	
	// Laita LED päälle sekunniksi ja sen jälkeen pois sekunniksi ja jatka loputtomasti
	while(1)
	{
		PORTB |= _BV(LEDPIN); // Ledi päälle
		_delay_ms(1000); // Odota 1000 ms (1 s)
		
		PORTB &= ~(_BV(LEDPIN)); // Ledi pois päältä
		_delay_ms(1000); // Odota 1000 ms (1 s)
	}
	
	return 0;}

 

How to get started with microcontrollers - Part 1
Esimerkki 1 toiminnassa

Esimerkki 2: LED ja painike

Ledi on päällä kun painiketta painetaan. Tehdään ensin pieni muutos alkuperäiseen kytkentään ja lisätään painike pinnin 2 ja maan välille:

 

How to get started with microcontrollers - Part 1
Painike lisättynä alkuperäiseen kytkentään

// Taajuusarvo, jonka viivefunktio tarvitsee.
// Piiri on tehdasasetettu toimimaan sisäisellä
// oskillaattorilla 1 MHz taajuudella, joten arvoksi tulee tähän 1000000UL
#define F_CPU 1000000UL

#include <avr/io.h>

// Ledi on yhdistetty PB4 (pinni 3 piirillä)
#define LEDPIN 4

// Painike on yhdistetty PB3 (pinni 2 piirillä)
#define BTNPIN 3

int main(void)
{
	DDRB = 0x17; // PB3 sisääntulo, muut ulostuloja (0x1F-0x08=0x17 tai 31-8=23)
	PORTB = 0x08; // Aktivoi sisäänrakennettu ylösvetovastus PB3 ja aseta muut alas
	
	while(1)
	{
		// Tarkista onko PB3 alhaalla (painike yhdistää sen maahan)
		// PB3 on normaalisti ylhäällä, koska ylösvetovastus aiheuttaa sen
		
		if(bit_is_clear(PINB, BTNPIN))
			PORTB |= _BV(LEDPIN); // Ledi päälle
		else
			PORTB &= ~(_BV(LEDPIN)); // Ledi pois päältä
	}
	
	return 0;
}

 

How to get started with microcontrollers - Part 1
Esimerkki 2 toiminnassa




Sivut:   1 2 3 4 5 6 



 
  Content in english!
  Sisältö suomeksi!


 Google





 .:Back to top Bandwidth by Mpoli

Copyright © Metku.net, All Rights Reserved.
All content and graphics in MetkuMods are sole property of Jani Pönkkö and may not be reproduced or copied in any manner without written permission from him.
All brand names, trademarks and copyrights are the property of their respective owners.Privacy Policy