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



Teraz jest 12 sie 2026, o 23:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 23 wrz 2014, o 16:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

Problem polega na tym, że nie wiem jak najprościej zapisać wartość adc w przerwaniu od timera do bufora i później tą wartość odczytać z bufora i przesłać przez UART-a za pomocą polecenia "uart_putlong" bez żadnych opóźnień przy częstotliwości przerwania 200Hz(a najlepiej uniwersalny przy każdej). Przerwanie to już udało mi się ustawić używając trybu CTC, natomiast nie wiem jak sobie poradzić z tym buforem. Proszę o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 16:08 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

to zalezy jak masz uart zrobiony, jak z buforem cyklicznym to po prostu robiac uart_putlong w przerwaniu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 16:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

A jeśli mam bez bufora cyklicznego ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 19:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

Ok zastosowałem bufor cykliczny i dane pokazały się w terminalu, ale niestety kręcąc potencjometrem wartość adc dochodzi tylko do ok. 240 zamiast do ok. 1023, napięcie referencyjne jest ustawione dobrze. Czy ktoś wie co to może być ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 19:57 
Offline
Użytkownik

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

Źle dobrany dzielnik napięcia?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 20:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

Dzielnik napięcia też jest dobrze dobrany to nie to :) Zresztą mam też drugi program, którym sprawdzałem również w takim samym podłączeniu i działa normalnie do ok. 1023



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 20:14 
Offline
Użytkownik

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

Zgaduj zgadula gdzie złota kula...

Najprościej napisz program który bez niczego (na żywca) wyrzuci na wyświetlacz to co zmierzy na ADC.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 20:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

Mam już taki program i już to robiłem. Co dalej ? :P

------------------------ [ Dodano po: 2 minutach ]

Problem ewidentnie leży po stronie konwersji adc, albo bufora cyklicznego, a w ostateczności w przerwaniu, ale to już też sprawdzałem i działa prawidłowo, także zostają te dwie opcje...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 20:44 
Offline
Użytkownik
Avatar użytkownika

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

Witam
lucasenior napisał(a):
Mam już taki program i już to robiłem. Co dalej ? .........
.....Problem ewidentnie leży po stronie konwersji adc, albo bufora cyklicznego,

To może kolega poprawi 5 i 6 linię kodu ;) .
Sory za sarkazm, ale na podstawie czego ktoś ma widzieć w którym miejscu jest błąd?

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 21:25 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Odczytujesz tylko ADCH

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 21:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

Racja kicajek oto on ;)

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: 23 wrz 2014, o 21:57 
Offline
Użytkownik
Avatar użytkownika

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

Witam
lucasenior napisał(a):
// odczyt 8 bitów z ADCH

Jeśli odczytujesz 8 bitów to jaką chcesz mieć maksymalną liczbę?
Tak jak pisał kol.Krauser( ze szklanej kuli, że przed podaniem kodu :lol: ?) - Ciebie interesuje całe ADC.

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2014, o 22:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 68
Pomógł: 0

Myślałem ,że ta komenda " ADMUX |= (1<<ADLAR);// wyrównanie ADC do lewej" załatwia co nie co, ale jak widać jestem jeszcze amatorem :D i sporo jeszcze przede mną . Tak naprawde to porywam się narazie z motyką na księżyc bo musze zrobić spory projekt przy niskiej wiedzy o programowaniu w dość krótkim czasie, ale dzięki wszystkim za pomoc, wszystko teraz działa jak należy :D

------------------------ [ Dodano po: 3 minutach ]

A tak dla przyszłych amatorów oto co zrobiłem :P :
-usunąłem tą linijke "ADMUX |= (1<<ADLAR);// wyrównanie ADC do lewej"
-na końcu zamiast "ekg= ADCH" wstawiłem "ekg=ADCW"
Mam nadzieje, że to już jest dobrze :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO