Fórum témák

» Több friss téma
Cikkek » AVR programozás Ubuntu-n
AVR programozás Ubuntu-n
Szerző: mosomate, idő: Dec 5, 2014, Olvasva: 11718, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   5 / 8

Előfordulhat, hogy több forrásfájlból szeretnénk előállítani a futtatható kódunkat. Természetesen erre is van lehetőség, az avr-gcc ebben a tekintetben is úgy működik mint egy sima gcc fordító.

Vegyük az eddigi példánkat és tegyük külön c fájlba, valamint saját mappába a _delay_10ms függvényt. Ehhez hozzuk létre a mydelay.h és mydelay.c fájlokat, amiker helyezzünk a mydelay mappába. A három fájl tartalma az alábbi lesz:

main.c
A main.c-ből kikerül a függvény és hozzá tartozó include-ok, helyette include-oljuk a mydelay/mydelay.h-t:

// Villogtat egy, a 2-es lábra kötött ledet.
#include <avr/io.h>
#include "mydelay/mydelay.h"

//-------------------------------------
int main(void) {
    DDRB |= (1<<PINB3);
    PORTB &= ~(1<<PINB3);
    while(1) {
        if (PINB & (1<<PINB3))
            PORTB &= ~(1<<PINB3);
        else
            PORTB |= (1<<PINB3);
        _delay_10ms(100);
    }
}

mydelay.h
Itt nincs sok teendőnk, deklarájuk a _delay_10ms függvény:

void _delay_10ms(unsigned long val);

mydelay.c
Ide átkerül az órajel makrója, illetve a függvény törzsében használt késleltető függvényekhez tartozó könyvtár, ill. a mydelay.h include-ja:

#define F_CPU 1000000UL
#include "mydelay.h"
#include <util/delay.h>

void _delay_10ms(unsigned long val) {
    while(val--) _delay_ms(10);
}

Ha megvannak a forrásfájlok, akkor azokat először egyesével lefordíjuk:

avr-gcc -O2 -mmcu=attiny45 -c main.c
avr-gcc -O2 -mmcu=attiny45 -c mydelay/mydelay.c

Ezután a linkelésnél felsoroljuk a main.o-n felül a többi lefordított object fájlt is:

avr-gcc -mmcu=attiny45 -o prog.elf main.o mydelay.o

A további lépések a korábban leírtaknak megfelelően történnek.

A makefile-ban a prog.elf-nek meg kell adni a plusz függőséget a mydelay.o-tól, valamint le kell fordítani a mydelay.c-t:

all: prog.hex

prog.hex: prog.elf
    avr-objcopy -j .text -j .data -O ihex prog.elf prog.hex

prog.elf: main.o mydelay.o
    avr-gcc -mmcu=attiny45 -o prog.elf main.o mydelay.o

mydelay.o: mydelay/mydelay.c
    avr-gcc -O2 -mmcu=attiny45 -c mydelay/mydelay.c

main.o: main.c
    avr-gcc -O2 -mmcu=attiny45 -c main.c

A cikk még nem ért véget, lapozz!
Következő: »»   5 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem