HomeMade

Pełna wersja: eeprom w atmega328P
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3
Pilna pomoc potrzebna.
Postanowiłem zbudować generator sygnałowy.
Wybór padł na model wypracowany przez sp8mce.
Program do obsługi składa się z 2-ch zestawów.
1.zestaw to

[attachment=18861]
Tu problemów nie ma.
taki widok po uruchomieniu generatora
[attachment=18862]
Efekt jest taki,że jest ładny obrazek,ale nic nie działa.
To co widać,bez możliwości zmiany czegokolwiek.
Przystąpiłem do 2-go etapu,zapis do eeprom.
[attachment=18863]
A to efekt próby zapisu
[attachment=18864]
Flash się zapisał a eeprom nie.Po wczytaniu eeprom wygląda tak: FF FF FF FF ...... od początku do samego końca.
Liczę na pomoc.
Masz błąd, zobacz trzecia linijka
Masz napisane, że adres jest poza zakresem. Ten procesor ma 1kB, czyli 1024 bajty EEPROMu, a adres 0x0410 wskazuje na komórkę o adresie 1040, więc już poza pamięcią EEPROM i dlatego program zapewne nie podejmuje nawet próby zapisu.
Że jest błąd to już wiem od 5dni.
Tu jest plik
[attachment=18865]
Co można w nim skrócić ?
Mam wrażenie, że próbujesz zapisać do EEPROMu to co ma być we flashu. Po kompilacji zawartość EEPROMu ma 13 bajtów i jest w pliku z rozszerzeniem eep:

eep_GEN_SYG.ino.eep


Poza tym nie wiem jaki był zamysł twórczy autora tego programu, ale chyba nie ma sensu zapisywać nic do tego eeproma,
gdyż to program zawarty we flashu wypełnia eeprom odpowiednimi wartościami w funkcji setup().
Później już nic nie robi, bo pętla loop() jest pusta. Ten program nie zawiera obsługi żadnego generatora.

Prawdopodobnie idea tego jest taka, że najpierw wgrywamy ten program, który wypełnia nam EEPROM, a później kompilujemy ten drugi GEN_SYG.ino i w nim jest dopiero obsługa Si5351. I jego wgrywamy w miejsce tego pierwszego. Oczywiście pamiętając o tym, aby przy okazji nie wykasować EEPROMu, który wcześniej zapisaliśmy.
Niby z innej beczki, ale podobnie.
Miałem podobny problem gdy składałem syntezę Mikrob 4s.
Na wyświetlaczu było pięknie, nawet zmieniała się częstotliwość kiedy kręciłem encoderem, ale synteza była głucha jak pień. Nic z niej nie wychodziło.
Po wielu próbach wyszło że winny jest adres Si5351. Mikrob 4s pracował dobrze tylko gdy miał Si5351 z adresem 0x60. Musiałem "wydmuchać" z Easy 2017 Si5351 który miał na pewno ten adres a w to miejsce wkleiłem inny. Natomiast Easy 2017 ma wpisane w programie współpracę z Si5351 z adresem od 0x60 do 0x6F.
Może w nieodpowiednim adresie Si5351 leży przyczyna że układ nie działa?
Krzysztof, zaczynam.
oto zestaw po skompilowaniu eep_Gen_Syg.ino
[attachment=18868]
Ato zawartość pliku który został wskazany
[attachment=18867]
Teraz przygotuję zapis pliku: eep_Gen_Syg.ino.eep

[attachment=18869]
Ten zestaw nic nie zmienił.
Chyba 20000000Hz zamienił na -0
[attachment=18870]
Spróbuję zapisać oba programy do nano w arduino
W arduino program eep_Gen_Syg.ino kompiluje się bez błędów a weryfikuje fatalnie
[attachment=18871]
Chyba niezbyt jasno napisałem poprzednio.
Jak kompilujesz ten pierwszy program:
eep_GEN_SYG.ino

to nie zapisujesz w ogóle eepromu. Ten program jak się uruchomi to wpisze odpowiednie wartości do eepromu. Choć w sumie to t6eż bez znaczenia, bo program po uruchomieniu i tak powinien nadpisać eeprom.

Później kompilujesz ten drugi program i go wgrywasz do flasha, ale NIC już nie wpisujesz do eepromu. Tak to wg mnie powinno być, ale ja tego nie budowałem i mam nadzieję, że to jest właściwa procedura.
Na razie to stwierdziłem,że chyba at328P w arduino nano wyparował.
Nic nie chce wpisywać i pokazuje -0.
Wgrałem ten eep_Gen_Syg.ino do flash i mam to:
[attachment=18872]
(30-04-2024 18:02)SP6AUO napisał(a): [ -> ]Na razie to stwierdziłem,że chyba at328P w arduino nano wyparował.
Nic nie chce wpisywać i pokazuje -0.
Wgrałem ten eep_Gen_Syg.ino do flash i mam to:

I pewnie dobrze. Ten pierwszy program robi jedynie wpisy do eeproma, dopiero ten drugi korzysta z tych wpisów. Tak mniemam ;-)
Stron: 1 2 3
Przekierowanie