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



Teraz jest 28 mar 2024, o 19:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 20 gru 2016, o 20:19 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

Witam,
Niesamowicie długo mnie tutaj nie było(zobaczyłem swój wątek i posty z przeszłości - ludzie miejcie litość dla młodocianych). Jeśli nieodpowiedni dział, proszę o reprymendę. Wracam znów z problemem. Chciałbym wygenerować sygnały losowe korzystając z szumu na ADC, a mianowicie korzystając z LSB w ADCL(ADLAR=0). Celowo nic nie podłączone pod ADC, aby z powietrza łapał zakłócenia. Pierwsze pytanie czy taki sposób jest odpowiedni ? Zastanawiałem się jeszcze nad napięciem na ładującym się kondensatorze tj.poziomie jego naładowania. W każdym razie chciałbym w przerwaniu ADC wygenerować 8-bitową tablicę wartości losowych(po 2 bity na 1 i 2 zaświecenie i po 2 bity na 1 i 2 przerwę miedzy zaświeceniami), a następnie korzystając z przerwania Timer0 (tryb CTC) zaświecić diodą odpowiednio od wylosowanej wartości. Problemem jest to, że gdy wartości długości czasu świecenia wpisuję "z ręki" działa wszystko okej, ale gdy korzystam z szumu. Oba dwa zaświecenia mają stałą długość do tego o tej samej wartości. Resztę mam nadzieję uda odczytać się z listingu, jeśli nie postaram się najszybciej odpowiedzieć na dodatkowe pytania. Poprzedni debugging skończył się na braku sei(); :-D
Proc:mega32
zegar:8MHz

EDIT: w sumie tylko ta część mnie interesuje dlaczego wartości tablicy w rzeczywistości nie mają losowych wartości.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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: 20 gru 2016, o 22:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

U mnie sprawdziło się coś takiego - potrzebowałem bajt losowy

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


to "zakomentarzowe" to test wylosowanej liczby na diodach led (wstawiłem fragment ze swojego projektu, z większej całości). Wychodziło w miarę ok gdy do nóżki scalaka przylutowałem kilkucentymetrowy kabel - coś ala antena. Bez tego wynik był ciągiem samych zer lub samych jedynek (lub zer i jedynek w dwóch grupach, np: 11111000).

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2016, o 23:34 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

Na telefonie nie mogę się odnaleźć w tym kodzie nie formatuje syntaxow mi. W każdym razie wygląda w miarę podobnie, bo Ty sprawdzasz ta flagę a ja korzystam z przerwania w momencie gdy Adc zakończy konwersję co w ogólności daje chyba ten sam efekt. W każdym razie co to u Ciebie jest ADCW? NO ja na stykowce lecę, ale jakiś przewodzik można wpiąć jako antena :-)

Wysłane z mojego GT-I9301I przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2016, o 07:25 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

ADCW to rejestr ADCH i ADCL połączony w słowo żeby programista nie kłopotał się
odczytem po jednym bajcie z ADC
To takie ułatwienie w GCC

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2016, o 08:13 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

Wieczorem spróbuję jeszcze kilka sztuczek i wkleję inicjalizacje timera. Może tam coś sknocilem.

Wysłane z mojego GT-I9301I przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2016, o 10:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Ja losowanie liczby losowej ( :roll: ) zrealizowałem tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Aby uzyskać liczbę 8_bit musisz odczekać osiem pomiarów - to jest cena za na prawdę losową liczbę.
Odczytując więcej niż jeden bit całe losowanie nie będzie całkiem losowe.
No i tak jak pisał kol.wonsz kabelek do PIN_pomiar.

Pozdr.



Ostatnio edytowano 24 gru 2016, o 14:55 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2016, o 11:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

Nie korzystałem z przerwań i flagę zerowałem ręcznie. Odczytywałem całe słowo ADCW, bo na początku miałem trochę inną koncepcję, a potem już nie poprawiałem (bo skoro działa). Najważniejsze - dopiero po dolutowaniu kawałka kabelka (10 - 15 cm kynaru) no nóżki scalaka wyniki "losowania" były zadowalające - coś musi w końcu te śmieci zabierać. ;)

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 gru 2016, o 12:04 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

Przepraszam, że tak długo ale próbowałem kilku rzeczy poza tym święta są.
Poprzerabiałem na takie coś jak widać niżej, problem w tym że wciąż nie udało mi się uzyskać tej losowej :-<
Mam wrażenie, że to problem z ustawieniem ADC, ale przeorałem notę i nie mogę do tego dojść.

Włożyłem przewód do stykówki i nic nie łapie z powietrza, nie chce mi się wierzyć że to możliwe...
Próbowałem również zmienić preskaler na taki, żeby się ADC nie wyrabiał, mimo to nie dostałem żadnej wartości z kapelusza.
Wieczne zero na ostatnim bicie ADCL'a...

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: 24 gru 2016, o 15:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Troszkę dziwna konstrukcja
Może nawiasy troszkę by to uporządkowały:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

a jeśli "losowa" nie 1 to co?

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


Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lut 2017, o 12:00 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

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


ten kawałek jest po to żeby sprawdzić czy kiedykolwiek w ogóle będzie jedynką, mimo zwarcia do GND.

Antena i "przetaktowanie" przetwornika nie zadziałało u mnie. Możliwe, że aż tak mało elektromagnetycznie jest wokół mnie ? :lol:

Mam plan teraz żeby stworzyć jakiś układ ładujący i rozładowujący kondensator. Podobny do wibratorów astabilnych, gdzie stałe czasowe nie będą ani pod- ani nad- wielokrotnością zegara taktującego przetwornik.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lut 2017, o 12:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
wonsz napisał(a):
Antena i "przetaktowanie" przetwornika nie zadziałało u mnie.

A zmieniłeś w.g moich wskazań dot. tego że robisz pomiar a ustawiasz PINA jako wyjście?

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 kwi 2018, o 21:54 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

Napisałem wszystko od nowa i działa, dziękuje za pomoc.
Przykład z terminala:
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2018, o 08:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

A próbowałeś generować liczbę z dowolnego portu ustawionego jako niepodciągnięte wejście? Efekt będzie podobny. Odczytuj w pętli (jej długość zależy od ilości potrzebnych losowych bitów) stan takiego portu zapisuj w zmiennej i przesuwaj wynik o jeden za każdym razem. Wg mnie rozwiązanie prostsze i szybsze niż ADC. Antenka wskazana ;-)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2018, o 09:54 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

Sprawdzę przy wolnej chwili, ale uważasz że napięcie na pinie (chyba chodziło Ci o pin a nie cały port) na tyle pływa?
Spójrz, że w logice TTL masz pewne zakresy co jest logicznym "0" , a co "1", a tu w ADC używam ostatni bit z pomiaru co jest mniejszą wartością napięcia.
Zrobię testy i potwierdzę :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2018, o 10:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Tak, tak, chodzi oczywiście o PIN portu. Kluczem jest "wiszący" pin czyli niepodciągnięte wejście.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 maja 2018, o 12:35 
Offline
Użytkownik

Dołączył(a): 29 gru 2013
Posty: 82
Pomógł: 3

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


Otrzymuję wieczne '1'



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: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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