Skocz do zawartości

Antosik

Użytkownicy
  • Zawartość

    10
  • Rejestracja

  • Ostatnio

Reputacja

2 Neutralna

Ostatnio na profilu byli

83 wyświetleń profilu
  1. Przecież dodajesz np. : include <nazwa-pliku.h> Do pliku głównego i kompilator automatycznie kompiluje oba pliki tj. nazwa-pliku.h oraz nazwa-pliku.cpp wystarczy podać do nich ścieżkę w pliku Makefile. W pliku Makefile podajesz ścieżkę do folderu z bibliotekami wewnętrznymi (nawiasy trójkątne) i zewnętrznymi (cudzysłowy). Te pierwsze są zazwyczaj gdzieś w systemie lub kompilatorze, a te drugie to są biblioteki, które są dodane tylko do danego projektu najczęściej w tym samym katalogu co projekt. Kompilator sam robi wszystko automatycznie, wystarczy zaincludować pliki nagłówkowe. Możliwe też, że nie robi tego kompilator, a jest to przewidziane w Makefile, w każdym razie robiłem tak programując w C i działało problem mam tylko przy c++. Jak będę w domu to spróbuję skompilować jakieś inne biblioteki np. od czujnika wilgotności (bo mam gdzieś jakiś) i zobaczę czy zadziała. Jeśli tak to znaczy, że te Biblioteki HC12 mają jakiś błąd.
  2. Jest to domyślny folder systemowy na wszystkie biblioteki. Mój Make ma określaną ścieżkę do tego folderu, dzięki czemu wszystkie include w nawiasach trójkątnych prowadzą właśnie do niego i się kompilują. Po pracy pokaże Ci ten plik. Gdyby biblioteki Arduino się nie komplikowały to błąd miałby inną treść. Spróbuje tak jak piszesz użyć Arduino IDE i zobaczymy co zrobi.
  3. Mam zainstalowane Arduino IDE ale biblioteki przeniosłem sobie z niego do systemowego lib/include/avr (albo jakoś tak, nie pamiętam teraz)(dzięki temu mogę je w wygodny sposób includować) i wygląda na to, że biblioteki Arduino działają poprawnie. To jest link do bibliotek HC12, które używam. Swój kod oraz zawartość Makefile będę mógł dopiero wstawić po pracy tj. wieczorem.
  4. Oczywiście, że jest za duży, cały projekt musi być mniej/więcej wielkości arduino nano, a przecież mam jeszcze swoją elektronikę. Mam nadzieję, że ten temat już wyczerpałem. Do wczoraj nie wiedziałem, że mogę programować w C++ i użyć bibliotek Arduino. To wydaje mi się najlepszym pomysłem, jednak pierwsze próby kompilacji skończyło się błędami. Myślę, że to albo błąd w bibliotece, albo błąd w Makefile. @ethanak czy mógłbyś mi z tym pomóc? To jest to co wywala konsola przy próbie kompilacji: antosik@kali:~/Dokumenty/Projekty/asd$ make avr-g++ -g -Wall -mcall-prologues -Os -DF_CPU=8000000 -mmcu=atmega328p -Iinclude/ -o main.elf main.o include//HC12.o /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o:(.init9+0x0): undefined reference to `main' main.o: In function `_GLOBAL__sub_D_HC12Serial': /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text+0xa): undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text+0xc): undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text+0xe): undefined reference to `HardwareSerial::begin(unsigned long, unsigned char)' /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text+0x16): undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text+0x18): undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text+0x1a): undefined reference to `Print::println(char const*)' main.o: In function `loop': /home/antosik/Dokumenty/Projekty/asd/main.cpp:21: undefined reference to `delay' main.o: In function `_GLOBAL__sub_D_HC12Serial': /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text.startup+0xa): undefined reference to `SoftwareSerial::SoftwareSerial(unsigned char, unsigned char, bool)' /home/antosik/Dokumenty/Projekty/asd/main.cpp:(.text.exit+0x4): undefined reference to `SoftwareSerial::~SoftwareSerial()' /tmp/cc8w7H2C.ltrans0.ltrans.o: In function `HC12::send(char*)': /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:34: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:35: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:36: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:37: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:38: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:38: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:38: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:39: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:40: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:41: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:42: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:45: undefined reference to `Print::println(char const*)' /tmp/cc8w7H2C.ltrans0.ltrans.o: In function `HC12::begin()': /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:21: undefined reference to `pinMode' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:21: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:21: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:21: undefined reference to `SoftwareSerial::begin(long)' /tmp/cc8w7H2C.ltrans0.ltrans.o: In function `HC12::loop()': /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `HardwareSerial::available()' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `HardwareSerial::read()' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `digitalWrite' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `delay' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::println(char const*)' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Serial' /home/antosik/Dokumenty/Projekty/asd/include//HC12.cpp:67: undefined reference to `Print::print(char const*)' collect2: error: ld returned 1 exit status make: *** [Makefile:100: main.elf] Błąd 1 Visual Studio Code jest na niego również dostępny i działa świetnie. Linux sam w sobie jest bardziej wartościowy od Windowsa ale to nie jest tematem tego wątku.
  5. @szymonw Na Linuxie nie uruchomię "config.exe", a kod który napisałeś jest dla Arduino. Dlaczego miałbym się bać arduino skoro nie boję się AVR-ów? Myślę, że powinieneś sprawdzić czym to się różni. Nie używam Arduino ze względu na rozmiar i cenę. Arduino ma za dużo elektroniki, która nie jest mi potrzebna w projekcie. Jak skończę prototyp, to mogę sobie kupić za 4 zł Atmegę w obudowie SMD, zaprogramować i przylutować do PCB.
  6. Oczywiście zdaję sobie sprawę, że rzeczywisty zasięg jest mniejszy jednak i tak jest to 10X więcej niż najtańsze układy. Budżet do 100 zł za sztukę o ile nie będę musiał użyć konwertera 5V na 3.3V, ponieważ uC zasilam napięciem 5V co może uszkodzić niektóre moduły. Najbardziej podobają mi się układy: "HC-12 SI4463", mają dużo dobrych opinii, są niedrogie, zasięg się zgadza i zasilanie są napięciem 5V. Jednak mają biblioteki tylko w C++ dla Arduino. Czy mogę do C dołączyć biblioteki C++? I czy AVR-GCC to skompiluje?
  7. Cześć. Potrzebuję waszej pomocy w poszukiwaniach. Szukam modułu radiowego dalekiego zasięgu do komunikacji między dwoma mikro kontrolerami Atmega328-PU. Problem polega na tym, że do wszystkich modułów biblioteki są pisane w C++ dla Arduino, a ja używam samych AVR-ów i potrzebuję biblioteki w języku C. Dużych paczek danych nie będę wysyłać więc na przepustowości mi nie zależy, za to zasięg musi być jak największy (1000m+), no i żeby moduły były proste w obsłudze. Całość ma służyć do zdalnego sterowania pojazdem.
  8. Cześć Mike85. Dzięki za odpowiedź. Schemat oczywiście zrozumiały. Podłączyłem wszystko tak jak zaleciłeś i problem pozostał bez zmian. Spróbowałem więc zmodyfikować komendę, którą wpisywałem do konsoli zamiast 'avrisp' wpisałem 'stk500v2' (wybrałem inny programator) . Cała linia wygląda teraz tak: avrdude -p m328p -P /dev/ttyACM2 -c stk500v2 -e -U flash:w:main.hex -F a to co teraz zwraca w konsoli avrdude wygląda tak: avrdude: stk500v2_command(): command failed avrdude: initialization failed, rc=-1 avrdude: AVR device initialized and ready to accept instructions avrdude: Device signature = 0x408baf avrdude: Expected signature for ATmega328P is 1E 95 0F avrdude done. Thank you. Producent udostępnia program 'pavr2gui' do konfiguracji programatora, w którym można znaleźć status ostatniego programowania i w nim można przeczytać coś takiego: Error: Initial SPI command failed. The SPI command for entering programming mode was sent, but the expected response from the target was not received. Make sure that the ISP frequency is less than one sixth of the target's clock frequency. Dodam jeszcze mój kod (nic spektakularnego): /* * main.c * * Created on: 17 lip 2020 * Author: antosik */ #define F_CPU 1843000 #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD |= (1<<1); // set LED pin PD1 to output while (1) { PORTD |= (1<<1); // drive PD1 high _delay_ms(100); // delay 100 ms PORTD &= ~(1<<1); // drive PD1 low _delay_ms(900); // delay 900 ms } } Jak widać coś się zmieniło jednak nadal nie mam pojęcia co zrobić, żeby wszystko poprawnie działało. EDIT: Problem rozwiązany! W programie 'pavr2gui' wybrałem niższą częstotliwość dla ISP teraz wszystko wygląda tak: Po tej czynności miałem jeszcze jeden błąd: verification error, first mismatch at byte 0x0000 0x00 != 0x0c Ale szybko znalazłem w sieci rozwiązanie, wystarczyło dodać przed AVCC i GND jeszcze jeden kondensator 100nF. Dzięki Mike84, bez twojej pomocy bym do tego nie doszedł!
  9. Witam. Mam problem z zaprogramowaniem uC ATmega328P-PU za pomocą programatora USB AVR v2.1 - microUSB 3,3V/5V - Pololu 3172. uC podłączyłem za pomocą interfejsu ISP według poniższego schematu: Mój system operacyjny to kali-linux 2020.2. Po podłączeniu programatora system widzi go jako port: /dev/ttyACM0 Problem pojawia się przy próbie wgrania programu, po wpisaniu w konsoli komendy: avrdude -p m328p -P /dev/ttyACM0 -c avrisp -U flash:w:main.hex avrdude zwraca w konsoli błąd: avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00 avrdude done. Thank you. Przeszukiwałem 2 dni internet w poszukiwaniu rozwiązania i niczego sensownego nie znalazłem. Nie mam nawet pomysłu co może być nie tak, ani jak sprawdzić co może być przyczyną. Ktoś może wie jak mi pomóc? Może coś źle zrobiłem albo uC jest nie sprawny?
  10. Zostałem zachęcony do przywitania się, więc napiszę po prostu dzień dobry.
×
×
  • Utwórz nowe...