Eclipse, kompilacja kodu w C dla ATmega328P 8MHz, ArduinoUno

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
mes mariusz
-
Posty: 11
Rejestracja: 09 cze 2016, 20:34
Lokalizacja: Wrocław

Eclipse, kompilacja kodu w C dla ATmega328P 8MHz, ArduinoUno

Post autor: mes mariusz » 08 lip 2016, 20:26

Witam.

Konfigurując po raz pierwszy środowisko Eclipse zauważyłem, że istnieje możliwość wyboru programatora, który poradzi sobie z bootloaderem Arduino.

Obrazek


Wyklepałem więc w Eclipse kod zgodny z Arduino UNO:

Kod: Zaznacz cały

/*
 * main.c
 *
 *  Created on: 7 lip 2016
 *      Author: Mariusz
 */
#include <avr/io.h>
#include <util/delay.h>

int main (void) {
	while(1) {
		PORTB = _BV(PB0);
		_delay_ms(250);
		PORTB = 0;
		_delay_ms(250);
	}
}

Następnie ustawiłem procesor i kwarc na zgodne w tym co na Arduino:

Obrazek


Kompiluję:

Obrazek


Flashuję Arduino:

Obrazek


Cały log z operacji:

Kod: Zaznacz cały

Launching D:\Mariusz\Zapisane\Eclipse-BlueBook-AvrDude\avrdude -pm328p -carduino -PCOM3 -Uflash:w:00_TEST_BLINK_LED.hex:a 
Output:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "00_TEST_BLINK_LED.hex"
avrdude: input file 00_TEST_BLINK_LED.hex auto detected as Intel Hex
avrdude: writing flash (176 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 176 bytes of flash written
avrdude: verifying flash memory against 00_TEST_BLINK_LED.hex:
avrdude: load data flash data from input file 00_TEST_BLINK_LED.hex:
avrdude: input file 00_TEST_BLINK_LED.hex auto detected as Intel Hex
avrdude: input file 00_TEST_BLINK_LED.hex contains 176 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 176 bytes of flash verified

avrdude done.  Thank you.

avrdude finished
Kompiluje i programuje się poprawnie.

A mimo to, program w arduino nie działa.


Co dziwne, identyczny kod, skompilowany w AtmelStudio wgrywa się do Arduino, i działa na Arduino poprawnie.

Obrazek

Ciekawe, prawda?

Czyżby Eclipse miał problem z kompilacją dla ATmega328P ?

grzegorzn
-
Posty: 18
Rejestracja: 14 cze 2016, 17:31
Lokalizacja: Warszawa
Kontakt:

Post autor: grzegorzn » 09 lip 2016, 10:28

Po pierwsze to nie Eclipse kompiluje, tylko GCC, które jest również w Atmel Studio. Nie jest to więc kwestia kompilatora.
Po drugie kod nie jest identyczny, pisząc w Eclipse zapomniałeś o DDRB i dlatego Ci nie działa :)

mes mariusz
-
Posty: 11
Rejestracja: 09 cze 2016, 20:34
Lokalizacja: Wrocław

Post autor: mes mariusz » 09 lip 2016, 12:55

grzegorzn pisze:Po drugie kod nie jest identyczny, pisząc w Eclipse zapomniałeś o DDRB i dlatego Ci nie działa :)
Racja, teraz widzę. Sprawdzę, jak tylko dotrę do komputera. Nie mam pojęcia jak doszło do zgubienia linii. Jestem przekonany, że robiłem ctrl-c, ctrl-v z jednego środowiska w drugie.

ODPOWIEDZ