Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 13 lut 2025, o 22:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 16 paź 2013, o 19:08 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

Jest to mój pierwszy post więc witam wszystkich.

Szukałem dobrego sposobu na wygenerowanie liczby losowej (nie pseudo losowej) i znalazłem gdzieś w necie że najlepiej jest wykorzystać szumy na wejściu ADC. Działa to rewelacyjnie, ale pojawił się dziwny problem. Program nie chce generować liczby jeżeli nie wyświetlę jej na wyświetlaczu LCD. Opiszę może mój program. Potrzebuję wygenerować losowo 4 cyfry i zapisać je do epromu, zrobiłem to tak że wyświetlam każdą liczbę na ekranie, potem zapisuję do epromu, żeby mieć pewność że wszystko poszło jak trzeba odczytuje dane z epromu i wyświetlam je.
W docelowym układnie nie będę korzystał z LCD więc zmieniłem program tak, żeby liczby były generowane i zapisywane w epromie, ale niestety po odczycie na wyświetlaczu dostaję same 0 i 255. Co mnie bardzo zdziwiło że wystarczy przed zapisem liczb wyświetlić je na ekranie i wszytko działa. Już nie wiem gdzie jest problem, pomóżcie proszę.
Procesor to Atmega644PA ustawiona na 8MHz.
tutaj ustawienie adc i przerwania
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




a tutaj pętla generująca liczby losowe, dodam że wystarczy odkomentować pierwszą linię i wszystko działa jak potrzeba

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie usuwamy wpisów moderacyjnych!! Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 19:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Cześć. Po pierwsze popędzasz ADC taktowaniem 1MHz, troszkę za dużo. Po drugie to jesteś świadomy, że eeprom nie nadaje się do takich zabiegów? Ciągłe zapisywanie w pętli, często powtarzane szybko wykończy ci eeproma. liczba_RND jest volatile? Gdzie masz odczyt z eeproma, widzę tylko zapis.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 19:39 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8605
Pomógł: 337

Trochę tak kulawo kolego masakrować eeproma .... zdajesz sobie sprawę że ma tylko 100000 cykli ??
po za tym ... oo kol. savian mnie uprzedził

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 19:46 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

eprom ma być zapisywany tylko raz przy konfiguracji, potem już tylko odczyt, i pętla jest wykonywana tylko 4 razy, bo tylko tyle liczb potrzebuje. Liczba_RND jest volatile.
Nie skupiałbym się na eepromie, bo to działa poprawnie, nie mogę tylko zrozumieć czemu generowanie liczby działa tylko jak ją wyświetlam. Dodam że pliki do LCD są z płyta dołączonej z książką.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 19:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

No dobra, to pokaż dalsze kroki jakie wykonujesz, kiedy odczyt, kiedy wyświetlanie, w jaki sposób.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 20:16 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

w takim razie wstawiam cały kod, tylko to jest kod do testów, on ma być użyty w innym kodzie, na razie chcę mieć pewność że sama procedura generowania liczb jest poprawna

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 20:36 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

niestety nie pomogło,



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 20:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

Nie znam dobrze bibliotek do AVR, ale o ile się nie mylę to, czy zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

nie powinno być
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 20:57 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:00 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 21:03 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

to działa tak że jak nie wciśniesz żadnego klawisza zaraz na starcie to program przejdzie do pętli while w funkcji głównej i generuje liczbę co 0,5 sekundy i uwierz mi że to działa, jak naciśniesz przycisk na początku i potrzymasz go 1sekundę to powinny się generować cztery losowe liczby, to też działa ale zanim je zapiszę do epromu muszę je wysłać na wyświetlacz - i tu jest cały problem, bo w docelowym układzie nie będzie wyświetlacza



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 21:37 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:00 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 21:48 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

sorki ale to co napisał kolega PJS nie ma prawa działać, no chyba że ja źle zrozumiałem operację na wskaźnikach



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 22:01 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:00 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 22:08 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

no właśnie nie mam problemów z odczytem i z zapisem do eepromu, problem jest taki jak już pisałem kilka razy że po zakomentowaniu wyświetlania liczb na wyświetlaczu w funkcji 'generujsyncword' dostaje same zera, nic innego w kodzie nie zmieniam. Chodzi mi o ten drugi kawałek kodu z pierwszego postu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 22:13 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:01 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2013, o 22:21 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

ta pętla do zerowania syncword[i] jest tak naprawdę nie potrzebna stosuje ją tylko po to żeby mieć pewność że liczby wysłane na lcd są liczbami odczytanymi z eepromu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2013, o 18:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Otóż:
Już mówię dlaczego wydaje ci się że działa jak masz odkomentowaną tą linię:

Ponieważ ty nie wyświetlasz na LCD zmiennej z EEPROMU a z pamięci flash :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdybyś wyświtlił coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to domyślam się, że również nie działałoby to :))



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2013, o 18:54 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

Niestety ale nie masz racji, po resecie procka wystarczy że przytrzymam przycisk długo i wtedy dane z eepromu są odczytywane w funkcji 'wyslijsyncword' i są wyświetlane poprawnie.
Poddaje się i zmieniam program, będę musiał korzystać z srand i rand. Dziękuje wszystkim za chęci.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2013, o 20:13 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:01 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2013, o 21:16 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:01 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2013, o 21:30 
Offline
Użytkownik

Dołączył(a): 07 paź 2013
Posty: 32
Pomógł: 0

korzystałeś kiedyś ze wskaźników ? ja się dopiero uczę, ale już mi się podobają :) wszystko jest fajnie opisane na stronie w niebieskiej książce
tak napisany program się nie skompiluje, nie musisz podawać znaku &, żeby zapisać zmienną pod adresem jej wartości, musiałbyś zapisać coś takiego
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO