HomeMade
Arduino - Wersja do druku

+- HomeMade (http://sp-hm.pl)
+-- Dział: Oprogramowanie (/forum-84.html)
+--- Dział: Technika programowania mikroprocesorów (/forum-85.html)
+--- Wątek: Arduino (/thread-1713.html)

Strony: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23


RE: Arduino - SP6AUO - 18-03-2021 18:30

Port nie potrzebny,ok.
A kwarc jaki wybrać ? Próbowałem i 20MHz i 16MHz.
Na pcb gdzie siedzi 328p jest kwarc 20MHz.
[attachment=16998]
Na tym 328p jest już wgrana inną metodą ver 1.02p i trx działa.
Dla odmiany próbuję wgrać ver1.02o i nie wychodzi.
Tadeusz zerknij co mam poustawiane,może coś źle wybrałem.
Rysio czy ( #if(F_CPU != 16000000) to o ten wpis chodzi ?


RE: Arduino - SP3VPA - 18-03-2021 18:51

Andrzej.
Ustawienia są poprawne. Ty pewnie masz ATmegę w obudowie TFQ, 32 pinową i podłączasz programator do płyty? Ja używam zwykłej ATmegi328 w DIP 28. Nie wiem więc jak to się zachowuje w Twoim przypadku. Poza tym spróbuj wgrać do procesora inny bootloader tak jak pisze Guido w szkicu: :"Instalacja UCX: Na czystym układzie scalonym, użyj (standardowych dla Arduino Uno) ustawień bezpieczników (E:FD, HBig GrinE, L:FF), i użyj niestandardowego bootloadera Optiboot dla zegara 20MHz, a następnie prześlij przez interfejs szeregowy (z liniami RX, TX i DTR podłączonymi odpowiednio do pinów 1, 2, 3)" może to pomoże chociaż w kompilacji i zaprogramowaniu wg starej metody . Tak pisał też Paweł. Optiboot jest krótszy a zatem będzie więcej miejsca dla kodu.
Pozdrawiam - Tadeusz.


RE: Arduino - SP6AUO - 18-03-2021 19:30

Nie nie nie.
Mam na pcb 328p 28pinów.
Ja mam dwie metody na wgranie wsadu do328P i obie działają,ale są skomplikowane.
Zaproponowałeś metodę przez USBasp z Arduino i ja się na to zapisałem.
Tylko że coś w tej metodzie nie jest ok.
Metodą dwustopniową zapisałem w jednym 328p ver1.02o
W drugim 328p zapisałem ver 1.02p
Obie ver działają ok.
Twoja metoda wydawała mi się prosta,ale niestety jest nie do końca skuteczna.
W oczekiwaniu na nowe płyty do uSDX przeprowadzałem testy,żeby się nie zanudzić i trochę doszkolić.
Na tym kończę.Dziękuję Wszystkim i serdecznie pozdrawiam.


RE: Arduino - SP6IFN - 18-03-2021 20:12

(18-03-2021 18:30)SP6AUO napisał(a):  ciach......
Rysio czy ( #if(F_CPU != 16000000) to o ten wpis chodzi ?

Tak, o tym wpisie pisałem.
Ale temat już wyczerpaliśmy, czegoś się nauczyłeś i to najważniejsze.
..............
Rysio!


RE: Arduino - SP6AUO - 19-03-2021 15:42

No właśnie.Zmieniłem wartość !=16000000 na !=20000000 i dokonałem zapisu pliku standard.hex do 328p.
Zajęcie pamięci wyniosło 95% tak jak u innych a nie jak wcześniej u mnie 100%.
Teraz jest wszystko ok.

Nie wszystko jest ok.
Przywróciłem !=16000000.
Nie mogłem za każdym razem wejść do menu,
Po przywróceniu nastawy 16000000 działa lepiej.


RE: Arduino - SQ8MVY - 20-03-2021 12:21

Witam,

chcę tylko zwrócić uwagę na bardzo ważną rzecz.
Linia o której tu mówicie, czyli
Kod:
#if(F_CPU != 16000000)
w żadnym wypadku nie służy do wybierania taktowania.
Jest to linia dla preprocesora, która powoduje jego określone zachowanie w przypadku spełnienia warunku.
Rzeczywistą wartość taktowania ustawia się w/g założenia autora kodu w niższej linii. Ale i to rozwiązanie jest nie do końca poprawne, przynajmniej w takiej postaci,
w jakiej jest tu użyte.
Jeżeli natomiast zdecydujemy się na taktowanie zegarem 16MHz, to nalezy koniecznie pamiętać o odkomentowaniu linii 40, dla 20MHz linia ma być zakomentowana.
Kod:
#define F_MCU_16MHZ   1   // 16MHz ATMEGA328P crystal  (enable for unmodified Arduino Uno/Nano boards with 16MHz crystal)
oraz zmianie wartości rzeczywistej taktowania w linii 87
Kod:
#define F_CPU 20007000  // Actual crystal frequency of 20MHz XTAL1, note that this declaration

Aby nie trzeba było pamiętać o tym co zakomentować / odkomentować, proponuję, dla chętnych oczywiście, zmienić zawartość linii 83 do 87 na taką:
Kod:
#if(F_CPU == 16000000)
  #define F_MCU_16MHZ   1   // 16MHz ATMEGA crystal  ( for unmodified Arduino Uno/Nano boards with 16MHz crystal)
  #undef F_CPU
  #define F_CPU 16007000  // Skorygować - rzeczywista czętotliwość kwarcu dla taktowania 16 MHz
  #pragma message "TAKTOWANIE 16 MHZ"
#else
  #undef F_CPU
  #define F_CPU 20007000  // Skorygować - rzeczywista czętotliwość kwarcu dla taktowania 20 MHz
  #pragma message "TAKTOWANIE 20 MHz"
#endif
Linie z zawartością #pragma message można całkowicie usunąć. One tylko wyświetlają informacje w terminalu podczas kompilacji.
Teraz odpowiednie ustawienia będą wybierane w zależności jaką platformę do budowania wybierzemy - 16MHz czy 20 MHz.


RE: Arduino - SP6AUO - 20-03-2021 13:27

I tak jest. Mam na pcb 20MHz,instaluję program bez zmian i jest dobrze.
Pcb dojechały.Przechodzę do działu uSDX.
Jeszcze raz dzięki za wszelką pomoc.


RE: Arduino - SP6AUO - 01-04-2021 12:09

Próba zaprogramowania 328p smd i taki komunikat.
[attachment=17061]
Czy to oznacza ,że 328p do wymiany ?


RE: Arduino - SQ8MVY - 01-04-2021 12:25

Sprawdź podłączenie programatora oraz zasilanie procka. Zmniejsz prędkość programowania.

Taki komunikat pojawia się w przypadki braku komunikacji programatora z prockiem. Przyczyn może być kilka. Brak lub nie pracujący zewnętrzny kwarc ( jeżeli procek ustawiony jest na zewnętrzne taktowanie), zbyt wysoka prędkość taktowania z programatora ( zdarza się, gdy procek jest taktowany z podziałem / 8 ).

Uszkodzenie procka zostaw na sam koniec, jak żadne inne metody nie dadzą pozytywnego rozwiązania problemu.


RE: Arduino - SP9RQA - 01-04-2021 12:25

Hmm. Piszesz, że chcesz zaprogramować 328, a program pisze, że chce ATMega8. Może z programatorem się nie dogaduje, brak zasilania itp...?