Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

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

MES Mariusz
-
-
Posty: 91
Rejestracja: 17 lut 2005, o 12:02
Lokalizacja: Wrocław
Kontaktowanie:

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

Postautor: MES Mariusz » 8 lip 2016, o 20:28

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 ?

Awatar użytkownika
Jacek Bogusz
-
-
Posty: 470
Rejestracja: 12 maja 2010, o 17:37
Lokalizacja: Poznań
Kontaktowanie:

Re: Eclipse, kompilacja kodu w C dla ATmega328P 8MHz, Arduin

Postautor: Jacek Bogusz » 11 lip 2016, o 08:53

Ciekawostka... A mógłbyś zaprogramować procesor za pomocą Eclipse, a później porównać zawartość pamięci procesora z plikiem wynikowym (hex) za pomocą innego programu (zwykle służy do tego opcja "verify")? Może on rzeczywiście programuje ten Flash, ale np. przy okazji uszkadza inne jego obszary np. zawierające bootloader?

Awatar użytkownika
Wojtek
-
-
Posty: 868
Rejestracja: 21 lut 2003, o 18:21

Re: Eclipse, kompilacja kodu w C dla ATmega328P 8MHz, Arduin

Postautor: Wojtek » 11 lip 2016, o 09:30

Juz kolega ma problem wyjasniony na dwóch innych forach ;) - zapomniał o DDRB w kodzie, który mu nie działał (co widać tez na tych zrzutach ekranowych) . kompilator skompilował bo czemu nie ale jakby działać to jednak nie mogło.

Awatar użytkownika
Jacek Bogusz
-
-
Posty: 470
Rejestracja: 12 maja 2010, o 17:37
Lokalizacja: Poznań
Kontaktowanie:

Re: Eclipse, kompilacja kodu w C dla ATmega328P 8MHz, Arduin

Postautor: Jacek Bogusz » 11 lip 2016, o 09:41

Przyznam się, że nawet nie spojrzałem na kod. Z doświadczenia jednak wiem, że czasami coś tam zostaje z poprzedniego kodu i procesor to pamięta do wyłączenia zasilania (niektóre rejestry nie są ruszane po resecie). Piszemy program, wgrywamy - działa! Wyłączamy zasilanie, następnego dnia włączamy - nie działa... I zonk :D. Może tak też było i w tej sytuacji.

MES Mariusz
-
-
Posty: 91
Rejestracja: 17 lut 2005, o 12:02
Lokalizacja: Wrocław
Kontaktowanie:

Re: Eclipse, kompilacja kodu w C dla ATmega328P 8MHz, Arduin

Postautor: MES Mariusz » 11 lip 2016, o 11:03

Zgadza się. Moja gafa. Też nie wnikałem w kod, bo byłem przekonany, że wykonałem kopiuj-wklej z dobrego i sprawdzonego. A tu się okazało, że linia się zapodziała. Potwierdzam, że działa poprawnie w obu środowiskach.

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości