HomeMade

Pełna wersja: Arduino
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
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 ?
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.
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.
(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!
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.
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.
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.
Próba zaprogramowania 328p smd i taki komunikat.
[attachment=17061]
Czy to oznacza ,że 328p do wymiany ?
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.
Hmm. Piszesz, że chcesz zaprogramować 328, a program pisze, że chce ATMega8. Może z programatorem się nie dogaduje, brak zasilania itp...?
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Przekierowanie