Skip to content

ATmegaCLib din perspectiva „utilizatorului”

– PAGINA IN LUCRU –

O descriere amanuntita a elementelor incluse in biblioteca si posibilitatile de configurare, totul din perspectiva programatorului care foloseste functiile din biblioteca pentru a construi propriile-i aplicatii.

1. Prezentare

ATmegaCLib este un fork al proiectului libarduino initiat de Mike. Obiectivul libarduino este de a oferi o baza pentru programarea placilor Arduino in limbajul C (Arduino foloseste in principal C++), folosind avr-gcc si linia de comanda. ATmegaCLib pastreaza acelasi obiectiv, extinde numarul de functii disponibile, adreseaza un numar mai mare de microcontrollere ATmega si in plus, foloseste Eclipse IDE pentru a crea noi proiecte.

Se adreseaza in general incepatorilor care vor sa treaca dincolo de limbajul abstract al Arduino IDE, dar care se tem de linia de comanda si de fisierele make. Este ca o punte de trecere intre limbajul Arduino si linia de comanda.

a. Specificatii

Biblioteca ofera urmatoarele:

  • operatii la nivel de bit;
  • functii conversie;
  • abstractizare pentru LED-ul utilizator de pe placile Sanguino, Arduino, Arduino MEGA si compatibile;
  • comunicatie seriala bazata pe intreruperi;
  • comunicatie seriala bazata pe polling;
  • hardware SPI;
  • software I2C – master (pini configurabili de catre user);
  • hardware TWI (I2C) – master;
  • ADC;
  • functia millis() – importata din biblioteca Arduino;
  • one wire protocol – importat din biblioteca Arduino;
  • senzori de temperatura Dallas (DS18B20, DS1822, DS18S20) – import biblioteca Arduino;
  • functii IR (infrarosu);
  • RTC PCF8583;
  • suport pentru digiti 7 segmente – de la unu la 8 digiti maxim;
  • afisaj LCD – pinii pot fi configurati in orice combinatie, nu exista restrictii;
  • PWM si PWMSERVO;
  • acces SD-Card direct;
  • Fat32.

Biblioteca nu este perfecta, actualmente nu suporta mai mult de 1 port serial (viteza maxima este de 57600 bps), doar 4 canale PWM (pentru unele microcontrollere, doar doua), lipseste comunicatia seriala software, modurile slave pentru I2C si SPI, accepta doar cristale de 16MHz si asa mai departe. Totul este perfectibil, insa ofera un punct de plecare iar dimensiunea programelor este atat de mica comparativ cu programele native Arduino, incat merita efortul.

b. Microcontrollerele suportate

Personal am testat biblioteca cu microcontrollerele atmega168p, atmega328p si atmega644p insa poate suporta urmatoarele:

  • capsula 28 pini: atmega48, atmega 88/p, atmega 168/p, atmega328/p;
  • capsula 40 pini: atmega164/p, atmega324/p, atmega644/p, atmega1284/p;
  • suport partial pentru placile Arduino MEGA.

c. Componenta bibliotecii

Este constituita din doar doua fisiere: fisierul principal .c si header-ul .h, respectiv atmegaclib.c si atmegaclib.h. Fisierul header (antet) contine la inceput o zona utilizator, unde utilizatorul poate face configurarile specifice aplicatiei lui. Exista in fisier o linie de demarcatie dincolo de care nu mai sunt permise modificari. Fisierul .c nu se modifica de catre utilizatorul obisnuit. Desigur, puteti face ce doriti si puteti modifica si imbunatati totul.

2. Configurare

Activare definitii, schimbare valori, definire configuratii, dependinte, exemple practice, etc. – vom lua toate elementele la rand, in ordinea definitiilor din antet (vom vedea, poate schimbam regulile pe parcurs).

a. Comunicatia seriala

Foloseste portul hardware al microcontrollerului (in cazul microcontrollerelor cu doua porturi seriale, il foloseste pe primul).  Poate fi bazata pe intreruperi, cu buffer circular, sau polling, in functie de ce definitii activam.

a.1 Definitii

Primele doua definitii sunt valabile pentru ambele tipuri de comunicatie:

#define UART_BAUD_RATE            57600 // default is 57600
#define UART_BAUD_SELECT        (F_CPU / (UART_BAUD_RATE * 16L) - 1)

La prima definitie puteti modifica viteza de comunicare, insa pe a doua doar o activati. La urmatoarele doua definitii, nu activati decat una din ele, in functie de ce doriti:

– comunicare bazata pe intreruperi:

#define ENABLE_SERIAL

– comunicare „polling”:

#define ENABLE_SERIAL_POLL

a.2 Dependinte

Ambele tipuri de comunicatii necesita activarea definitiei pentru conversii:

#define ENABLE_CONVERSION

a.3 Configurari suplimentare

In cazul comunicatiei bazata pe intreruperi, aveti posibilitatea sa modificati dimensiunea buffer-ului circular. Implicit este setat la 16 caractere. Derulati mai jos fisierul antet si cautati urmatoarea portiune de cod (nu depasiti zona utilizator):

#if defined(ENABLE_SERIAL)// interrupt based
#define UART_BUFFER_SIZE  16 // buffer size for USART RX (receiving)
// change it to your needs (16, 32, 64, 128)
#endif

Schimbati valoarea de la linia doi dupa cum aveti nevoie.

a.4 Exemple

… *** …

Lasă un comentariu

Va rog, nu folositi limbaj de messenger. Multumesc!

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

%d blogeri au apreciat asta: