Kasutaja tarvikud

Lehe tööriistad


projektid:arendusprojektid:pisi_xbee5:teek

Pisi-XBee 5 teek

Plaat

Konstandid

  • Nuppude viigud ja port
    • #define SW_PORT PORTD
    • #define SW1 (1«4)
    • #define SW2 (1«5)
  • RGB LEDi viigud ja port
    • #define LED_PORT PORTB
    • #define LED_GREEN 2
    • #define LED_BLUE 3
    • #define LED_RED 1
  • RGB LEDi värvid
    • #define GREEN 2
    • #define RED 1
    • #define BLUE 4
    • #define TEAL 6
    • #define MAGENTA 5
    • #define YELLOW 3
    • #define WHITE 7
    • #define OFF 0
  • Mootori viigud ja port
    • #define MOTOR_PORT PORTD
    • #define AIN1 3
    • #define BIN1 0
    • #define AIN2 2
    • #define BIN2 1
    • #define MOTOR_PINMASK 0x0F
  • XBee viigud ja port
    • #define COMPORT PORTE
    • #define TXD 3
    • #define RXD 2
  • IMU viigud
    • #define SDA 0
    • #define SCL 1

Funktsioonid

  • inline void board_init()
    • Käivitab plaadil olevad nupud ja LEDid ning systick taimeri.
  • inline void rgb_set(uint8_t colour)
    • Valib RGB LEDi värvuse. Parameetrid:
      • colour - RGB LEDi värvus vastavalt definitsioonidele.
  • inline int sw1_read()
    • Loeb SW1 nuppu.
      • Tagastab SW1 nupu oleku (0 - vajutamata, 1 - vajutatud)
  • inline int sw2_read()
    • Loeb SW2 nuppu.
      • Tagastab SW2 nupu oleku (0 - vajutamata, 1 - vajutatud)
  • inline void clock_init()
    • Käivitab ATxmega sisemise kella 32MHz taktsagedusel.
#include <avr/io.h>
#include "drivers/board.h"
 
int main(void)
{
    // Seadista süsteemi kell 32MHz peale
    clock_init();
 
    // Seadista plaadil olev LED ja nupud.
    board_init();
 
    while(1)
    {
        if(sw1_read() == 1) // Kui SW1 on vajutatud
        {
            rgb_set(GREEN);    // RGB LED põleb roheliselt
        }
        else if(sw2_read() == 1) // Kui SW2 on vajutatud
        {
            rgb_set(BLUE);    // RGB LED põleb siniselt
        }
        else // Kumbki pole vajutatud
        {
            rgb_set(OFF);    // RGB LED kustu
        }
    }
}

ADC

Funktsioonid

  • void adc_init(void)
    • ADC tööks ettevalmistamine. ADC käivitatakse järgnevas režiimis:
      • 12- bit resolutsioon
      • märgiga muundamine
      • Vcc / 1.6 = 2.0625V võrdluspinge
      • 500 KSPS töötlemiskiirus (F_CPU / 64)
      • Kasutab ainult ADC kanalit 0
  • uint16 _t adc_read(uint8_t channel)
    • Soovitud ADC sisendkanali väärtuse muundamine. Funktsioon on blokeeruv. Parameetrid:
      • channel - ADC kanali number
      • Tagastab 11-bitise väärtuse
#include "drivers/adc.h"
 
int main(void)
{
    // Käivita ADC muundur
    adc_init();
    // Loe ADC kanalist 0 väärtus, ning salvesta see muutujasse "adc_val"
    unsigned int adc_val = adc_read(0);
}

Mootorid

Konstandid

  • Mootori taimeri valik
    • #define MOTOR_TIMER TCD0

Funktsioonid

  • void motor_init(void)
    • Alalisvoolu mootorikontrollerite juhtviikude seadistamine väljundiks kiiruse reguleerimisega.
  • void motor_set(int16_t left, int16_t right)
    • Alalisvoolu mootorikontrolleri juhtkäsk. Mootor jääb etteantud suuna ja kiirusega pöörlema. Parameetrid:
      • left - vasaku mootori kiirus ja suund (vahemik -1000 - 1000)
      • right - parema mootori kiirus ja suund (vahemik -1000 - 1000)
#include "drivers/motors.h"
 
int main(void)
{
    // Käivita mootori PWM
    motors_init();
    // Sea vasaku mootori kiirused:
    //        vasak 50% ühtpidi
    //        parem 25% teist pidi
    motor_set(500,-250);
}

UART

Konstandid

  • Raadio USART mooduli valik
    • #define RADIO_USART USARTE0
  • Raadio USART mooduli vastuvõtmise katkestuse valik
    • #define RADIO_USART_RXC_vect USARTE0_RXC_vect
  • Raadio USART mooduli saatmise katkestuse valik
    • #define RADIO_USART_DRE_vect USARTE0_DRE_vect

Funktsioonid

  • void radio_init(uint32_t baud)
    • Jadaliidese asünkroonseks seadistamine. Parameetrid:
      • baudrate - Boodi kiirus
  • void radio_putc(char character)
    • Blokeeruv sümboli saatmise funktsioon. Funktsioon ootab, kuni saatmise puhver tühjeneb ja kirjutab sinna saatmiseks uue sümboli. Parameetrid:
      • character - Saadetav sümbol.
  • void radio_puts(char* stringPtr)
    • Blokeeruv teksti saatmise funktsioon. Parameetrid:
      • stringPtr - Viit tekstile. Tekst peab lõppema binaarse 0 sümboliga.
  • int radio_getc()
    • Blokeeruv sisendpuhvrist sümboli lugemine. Ootab, kuni sisendisse tekib sümbol.
      • Tagastab sümboli.
  • int radio_getc_nolock()
    • Sisendpuhvrist sümboli lugemine. Enne lugemist peab veenduma, et puhvris on sümbol.
      • Tagastab sümboli.
  • int radio_gets(char* stringPtr)
    • Sisendpuhvrist teksti lugemine. Enne lugemist peab veenduma, et puhvris on sümbol. Parameetrid:
      • stringPtr - Viit mälupesale, kuhu tekst salvestatakse. Tekst peab lõppema binaarse 0 sümboliga.
#include <stdio.h>        // Oluline süsteemi fail, mis sisaldab sprintf käsku
#include "drivers/board.h"
#include "drivers/com.h"
 
int main(void)
{
    int x = 54;    // Suvaline muutuja
    char buff[20];        // Saatmise puhver
 
    // Seadista süsteemi kell 32MHz peale
    clock_init();
    // Käivita raadio UART kanal boodikiirusega 57600
    radio_init(57600);
 
    // Saada välja sõnum koos reavahetusega
    radio_puts("PisiXBee 5!\n");
    // Loo sõnum, mis sisaldab muutujat.
    // %d on asukoht, kuhu kirjutatakse muutuja x väärtus
    sprintf(buff,"Muutuja: %d\n",x);
    // Saada loodud sõnum välja
    radio_puts(buff);
 
    while(1)
    {
        char c = radio_getc();    // Loe UART puhvrist üks täht
        radio_putc(c);            // Saada saadud täht tagasi
    }
}
projektid/arendusprojektid/pisi_xbee5/teek.txt · Viimati muutnud: 2017/01/02 11:15 persoon kaupo.raid