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



Teraz jest 26 gru 2024, o 22:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 35 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 28 lip 2012, o 23:07 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Witam
Wydaje mi się, że w książce cz1 na stronie 243 jest zbyt "drastyczne" zaokrąglenie" w drugim przykładzie na dole.
(1,1/1024)=0,0010742; wymnożono przez 100 i uzyskano 1.
Skoro woltomierz ma pokazywać poprawnie części ułamkowe wolta to według mnie powinno się wymnożyć przez większą liczbę- co najmniej 10000.
W efekcie wynik w książce wynosi 25.13V, zamiast 26.99V -wg mnie.
Może się mylę, gdyż moderator usunął tą wiadomość z działu odnośnie poprawek w książce.
Proszę mnie poprawić jeśli źle rozumuję, gdyż trochę mnie to nurtuje, ;P

jeszcze jedna literówka - na str 252-3 w tabelkach jako jednostki podane są mV, a powinny być V;
np spadek napięcia na boczniku=0,500mV to w rezultacie daje 0,0005[V] przy Prądzie 5A i Rb=0,1ohm, co jest źle.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 01:51 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

20rafalo napisał(a):
Witam
Wydaje mi się, że w książce cz1 na stronie 243 jest zbyt "drastyczne" zaokrąglenie" w drugim przykładzie na dole.
(1,1/1024)=0,0010742; wymnożono przez 100 i uzyskano 1.

I bardzo dobrze ci się wydaje. Celem książki nie było omawianie wielkości błędu pomiarowego ponieważ on zależy od wielu czynników, w tym niedokładności samego przetwornika ADC, temperatury, od nieliniowości przetwornika czy też przesunięcia itp.... Ale bywa i to bardzo często jeszcze jedno źródło błędu jakim jest sama wartość napięcia VREF. W nocie PDF ono ładnie brzmi np 2,56V albo 1,1V .....

A zadałeś sobie kiedyś trud aby zwykłym multimerem zmierzyć ile na prawdę ma to napięcie (na nóżce AREF można zmierzyć) i czy w każdym procku tego samego typu jest ono zawsze takie samo ????/??????

ułatwię ci - nie jest ... a zatem może się okazać równie dobrze że trafisz na egzemplarz w którym zamiast 1.1 będziesz miał np 1.05, albo 1.17 albo nawet 1.0 itp

Gdybym miał w książce opisywać błędy z tym związane to po pierwsze powieliłbym notę PDF a po drugie zaciemniłbym obraz tego co chciałem przekazać. GŁÓWNYM CELEM w tych przykładach było to - w jaki sposób nie posługiwać się broń boże liczbami zmiennoprzecinkowymi (typ float) !!!!!! tylko liczbami całkowitymi. Zrobiłem w tym celu nawet spore uproszczenia, i zresztą zacząłem od procka z napięciem referencyjnym 2,56, gdzie wystarczyło pomnożyć 0,0025 przez 10 tys ... i tak dalej. Niechcący wyszła jakaś tam precyzja (nie ważne było dla mnie jaka) .... przechodząc dalej z marszu do napięcia VREF 1,1V - poszedłem za ciosem i wspomniałem o mnożniku 10 tys - ale że wartość wyszłaby 10 to zmniejszyłem go do 100 .... pokazując jak można operować mnożeniem i przesuwaniem tych przecinków. Kwestia dokładności to sprawa wtórna i żeby tu nie użyć ostrzejszych słów - widoczna jest jak na dłoni dla każdego chyba - nawet ciężko o tym dyskutować bo i po co?

Zrozumiałeś o co chodzi w tym sposobie ???? zrozumiałeś jak można uniknąć stosowania typu float i przeprowadzania działań na liczbach zmiennoprzecinkowych ???? -

1. jeśli odpowiesz TAK - to znaczy że cel książki został osiągnięty
2. jeśli odpowiesz NIE - to skłamiesz bo pokazałeś że już wiesz o co chodzi

jest jeszcze trzecia możliwość oczywiście - Ty już wcześniej znałeś ten sposób - w końcu to nie jakaś skomplikowana i tajemna wiedza. Ale przyjmij pan do wiadomości że mnóstwo osób go nie zna ani w ząb i miewa problemy z jego zrozumieniem, dlatego przyjąłem uproszczoną - po mojemu - formę aby jak najlepiej to mogły zrozumieć takie osoby. Uważasz że je skrzywdziłem że nie wspomniałem o błędzie pomiaru w związku z rodzajem zaokrągleń to się mylisz - bo większość osób, która dzięki temu prostemu opisowi zaskoczyła - w dalszej części znakomicie już zrozumiała o co chodzi i oczywistym było że większą precyzję można uzyskać mnożąc przez większe liczby, a te które nie to jeszcze mnie dopytały - wyjaśniłem i sprawa załatwiona.

Więc to nie jest panie kochany żaden błąd w książce - bo wspominam nawet na stronie 245 właśnie o tym że to napięcie VREF może być bardzo różne od wzorcowego podanego w nocie PDF ale też są sposoby aby sobie z tym radzić tyle że to nie jest tematem tego rozdziału a przybliżenie sposobu pozbycia się liczb zmiennoprzecinkowych.

Radzę zatem czytać dokładniej zanim się na forum w dziale erraty ogłosi że autor się pomylił OK .... tu jest do tego dobry dział i można się dopytać albo do mnie na maila - żaden problem zawsze chętnie podyskutuję



20rafalo napisał(a):
jeszcze jedna literówka - na str 252-3 w tabelkach jako jednostki podane są mV, a powinny być V;
np spadek napięcia na boczniku=0,500mV to w rezultacie daje 0,0005[V] przy Prądzie 5A i Rb=0,1ohm, co jest źle.


Tak zgadza się powinny być jednostki V a nie mV. Zliczyłbym to jednak do literówek bo chyba nawet ciężko żeby ktoś myślał o wartości 0,005 mV a nie 0,005 V.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 09:39 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

mirekk36 napisał(a):
Radzę zatem czytać dokładniej zanim się na forum w dziale erraty ogłosi że autor się pomylił OK ....

Panie, Panie... ;P
Mirku chyba Cię trochę nerwy poniosły..
Zdaje sobie sprawę, że celem było zrozumienie ADC....
Pomyślałem, że to błąd... Ja dość dokładnie czytam książkę- jak widzisz- nawet sprawdzam przykłady. Co nie znaczy, że czegoś nie pominę- dla mnie niektóre tematy też są trudniejsze i muszę sięgnąć do dodatkowych źrodeł...
Jednak nie każdy wie, że to zaokrąglenie było tylko dla pokazania sposobu postępowania, gdyż we wcześniejszym przykładzie zaokrąglono dużo lepiej- tak, że pokazanie części dziesiętnych miało sens. wiem, że napięcia porównawcze nie sa idealne, ale nie znaczy to, że trzeba tak zaokrąglać, bo to tylko sumuje błędy....
Na marginesie -dodatkowe ~1,8V różnicy od rzeczywistego wskazania napięcia to sporo jak na zasilacz laboratoryjny np 0-30V

Ja tu mam wizję voltomierza i amperomierza, żeby tak skalibrować, aby wskazywał dokładnie co do 10mV i 2-5mA - może się uda ;P
Zrobiłem kiedyś fajny zasilacz laboratoryjny i chcę wymienić mu wskaźniki na wlasnej konstrukcji i dodać np w wkazanie poboru mocy itp
Wczoraj zaprojektowałem sobie tabelę do wyliczania bocznika, ADC, i wszystkich potrzebnych parametrów..
Co do mV a V- przy natłoku wielu nowych informacji początkujący może nie zorientować się o błędzie - przepisze fragment kodu i błąd pomiaru jest... ;)

Ale są to drobnostki, i trochę mniej nerwów... ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 10:57 
Offline
Użytkownik
Avatar użytkownika

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

o dziwo jest to nawet prawie wykonalne ...
w zasadzie dokładność do 1 miejsca po przecinku wystarcza w zupełności

_________________
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: 29 lip 2012, o 12:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

20rafalo --> nie zrozum mnie źle, fakt poniosło mnie może trochę (jak to u mnie bywa) ale jeśli poczułeś się urażony to przepraszam.


20rafalo napisał(a):
Jednak nie każdy wie, że to zaokrąglenie było tylko dla pokazania sposobu postępowania,


Oczywiście że możesz mieć takie zdanie i miło jeśli takie uzupełnienie napiszesz. Możemy natomiast dyskutować o tym czy każdy wie czy każdy nie wie. To już jest subiektywna ocena i nie oznacza że autor popełnił błąd. A tym bardziej taki, który nadaje się do erraty. Dlatego mam nadzieję że mnie zrozumiesz.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 12:17 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

;)
czytam dalej... najgorsze są analizy kodu... ;P
Jak to mówił Grębosz- każda linia komentarza w kodzie jest tyle warta co linia kodu ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 14:11 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Aktualnie wertuję temat ADC - mam takie pytanie, czy niezbędne było powiększenie kodu (pomijając ustawienie ADC i przygotowanie do pracy) dla amperomierza w porównaniu z prościutkim fragmentem odnośnie woltomierza.
Chodzi mi dokładnie o funkcję int_to_str do wyświetlenia wyniku. Przecież w części na temat woltomierza również było pokazane wyświetlanie liczb i wystarczyło tylko dodać bibliotekę LCD napisaną w poprzednim rozdziale+kilka linijek obliczeń. Pomijam część z uśrednianiem.
Proszę mnie zrozumieć jeśli coś przeoczyłem - dopiero wnikam w szczegóły ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 15:47 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Na str 238 jest literówka (dość ważna):
chodzi o linię: ADMUX |= (1<REFS1);//wybór napięcia odniesienia w postaci VCC;+ przecież ten bit jest zarezerwowany ;P
A powinno być:ADMUX |= (1<REFS0);//wybór napięcia odniesienia w postaci VCC



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 16:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Ale nie należy patrzeć na to w ten sposób że było konieczne jakieś powiększanie kodu ;) .... przecież to samo zadanie można programowo zrealizować zawsze (nawet jeśli jest najprostsze) na milion sposobów albo co najmniej na tyle ilu jest programistów na świecie. Dobra koniec z powiedzeniami - do konkretów ;)

W każdym kodzie jest coś nowego. Porównaj sobie jak w poprzednim ćwiczeniu bawiliśmy się liczbami aby uzyskać wynik zmiennoprzecinkowy na LCD ....

dlaczego miałbym powielać ten sam kod ? czasem może pomijasz aspekty edukacyjne. W każdym staram się przemycić dodatkowe rzeczy. Zatem ten kod w którym masz finkcję int_to_str() to bardzo fajny pomysł także na alternatywę dla takich wbudowanych a ociężałych funkcji jak sprintf(), a przy okazji znowu inne podejście do konwersji liczb na dodatek z jakimś podstawowym formatowaniem na LCD. A gdzie miałem to opisać ? ;) tak gdzieś w oderwaniu od rzeczywistego przykładu ? czysto teoretycznie ? - O nie ;) .... ja wolę takie przykłady widzieć w konkretnych kodach, które coś tam robią - bo wtedy łatwiej mi to sobie przyswoić i dlatego też tak to podaję.

Reasumując w ogóle nie można stawiać pytania czy niezbędne było powiększenie kodu ? ;) Bo:

1. pokazałem w jaki sposób warto wyprowadzać kod źródłowy z pętli while do funkcji zewnętrznych
2. pokazałem kolejny alternatywny sposób działania na liczbach całkowitych zamiast na float
3. pokazałem w końcu prosta alternatywę dla sprintf()

czy teraz nie przyznasz że był sens aby tak zrobić ? Prawie w każdym ćwiczeniu praktycznym opowiadam i pokazuję przy okazji takie różne praktyczne sposoby podejścia, czasem nawet do tego samego tematu. Po to żeby zainspirować do dalszych własnych przemyśleń.

------------------------ [ Dodano po: 5 minutach ]

20rafalo napisał(a):
Na str 238 jest literówka (dość ważna):
chodzi o linię: ADMUX |= (1<REFS1);//wybór napięcia odniesienia w postaci VCC;+ przecież ten bit jest zarezerwowany ;P
A powinno być:ADMUX |= (1<REFS0);//wybór napięcia odniesienia w postaci VCC


Nie jest to literówka, ja w książce wspominam o tym, że niektóre doświadczenia robię także na ATtiny26 - zajrzyj sobie do jego noty. Zresztą w książce wciąż powtarzam - PODSTAWA to nota ok? ;)

więc to nie żaden błąd

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 17:47 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Patrzyłem notę atmega32 ;P - no i na poprzedniej stronie jest napisane odwrotnie ;P
No ale może raz dla atmegi, a drugi dla attiny ;P

mirekk36 napisał(a):
Porównaj sobie jak w poprzednim ćwiczeniu bawiliśmy się liczbami aby uzyskać wynik zmiennoprzecinkowy na LCD ....

No właśnie odnośnie woltomierza to nie używamy ani sprintf(), ani int_to_str() tylko dajemy funkcje związane z wyświetlaczem lcd_init() i lcd_str - jest pięknie i prosto ;)
Przecież funkcja związana z LCD ma już zamianę na znaki ASCII - i nurtutje mnie sens użycia int_to_str ... ;P
A dla amperomierza int_to_str() i lcd_init() i lcd_str - a w efekcie jest to samo, a zajmuje więcej kodu ;P,
Rozumiem że drugi sposób był czysto dydaktyczny ;)

Czyli 1 sposób ze str 237+243 bez problemu można zastosować dla amperomierza (zmieniając tylko ustawienia rejestrów)...
PS2 można na 1 uC zastosować 'single ended' dla 'V' oraz wbudowanego wzm operacyjnego wykorzystującego dwie nóżki dla 'A' - w tym rejestrze można uaktywnić dwa rodzaje pomiaru?? - nie mam wolnego LCD i nie przetestuje stąd pytania, a mam trochę wolnego czasu ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2012, o 22:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Na razie na szybko ci odpowiem że jak pytasz po co jest taka funkcja int_tostr() to jeszcze długa droga przed tobą ;) ale tylko się ciesz bo jak dojdziesz do czego można wykorzystać takie funkcje we własnych programach to zrozumiesz. Tam jest m.in proste formatowanie nawet. Pewnie że to dydaktyczna wersja - ale już są podwaliny żeby ją jeszcze lepiej rozbudować czy przystosować do własnych potrzeb.

Na razie póki co idź dalej z materiałem, po drodze zainteresuj się sprintf() i poczytaj w dokumentacji LibC o formatowaniu w tej funkcji - może to powoli cię na coś naprowadzi. A na pewno dotrze do ciebie dużo więcej jak w drugiej części książki poczytasz o parsowaniu stringów - bo na razie to są dla ciebie jeszcze tematy jak z kosmosu - ale nie ma co się przejmować. Widzisz tak jest napisana ta książka ... później trafisz na taki moment gdzie po prostu będziesz potrzebował czegoś takiego i wtedy haczyk w mózgu się odezwie ;) ten który zapadł podczas czytania na temat tej funkcji.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2012, o 19:03 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Ok ;)
Aby nie zakładać nowego wątku, zadam pytanie odnośnie RS485
Na str 275 jest linia kodu:
#define UART_DE_ODBIERANIE UART_DE_PORT &=UART_DE_PIN
#define UART_DE_NADAWANIE UART_DE_PORT &=UART_DE_PIN

Skąd kompilator wie czym jest "UART_DE_PIN"?
Nie widzę ich definicji....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2012, o 20:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Kompilator może z książki nie wie ;) ale na DVD na pewno masz to dobrze. Tu rzeczywiście jest błąd bo wyżej zamiast UART_DE_BIT powinno być UART_DE_PIN

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 lip 2012, o 20:39 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Tak myślałem- albo wszędzie "BIT" albo "PIN" ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sie 2012, o 09:46 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Aby nie zaczynać nowego tematu...
Na elektrodzie w temacie założonym przez Ciebie Mirku "[AVR] i mikrofon z jakimś wzmacniaczem" konsultowałeś się w sprawie podłączenia mikrofonu.
Rozumiem, że zbierałeś z niego napięcia za pomocą ADC.
Jak układ się sprawuje(ten, który dalej opublikował użytkownik elektrody), jakie napięcia idą z mikrofonu w stanie "ciszy" oraz "dźwięków".
I najważniejsze- patrząc na schemat wzmacniacze operacyjne są zasilone +5V; ja takie układy zasilam tylko ''+' '-' 15V'- w związku z tym jak ten układ się zachowuje?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sie 2012, o 10:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Nie wiem jak się zachowuje ten z elektrody ;) to było bardzo dawno i wtedy tego nie testowałem. Za to z pełnym powodzeniem zrobiłem sobie wzmacniacz mikrofonowy do AVR'ka na NE5535 - zasilanie oczywiście tylko +5V - działa wyśmienicie ;)

niedługo zobaczysz i usłyszysz efekty - a na razie można już przeczytać zajawkę projektu i podejrzeć sobie schemat tego co zmajstrowałem - jest tam także moduł wspomnianego wzmacniacza mikrofonowego - zajrzyj tutaj:

http://atnel.pl/avr-wav-player-recorder.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sie 2012, o 12:40 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

mirekk36 napisał(a):
NE5535 - zasilanie oczywiście tylko +5V

Czyli na wzmacniaczu operacyjnym- no i fajnie- połowę mniej elementów...
Może sobie coś podobnego zaaplikuję + ew modyfikacje...
Dałeś filtr szerokopasmowy?
Pzdr ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sie 2012, o 14:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

20rafalo napisał(a):
Dałeś filtr szerokopasmowy?


Zobacz na ten schemat ;) mi chodziło o super totalną prostotę a poza tym, ja z analogówki jestem jeszcze noga ;) żadnych filtrów - tak jak jest a śmiga że aż miło ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sie 2012, o 00:11 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

heh ;P
Ja dam filtr dolnoprzepustowy do tego, gdyż chcę mieć reakcję na tony <300Hz
Mam takie pytanie odnośnie ADC + przerwanie. Czy poza timerem, może coś innego wykonać przerwanie ADC?
Myślałem, aby przerwanie timera co chwila sprawdzało wartość ADC i jeśli osiągnie jakąś wartość to wtedy ma coś robić, tylko czy nie przeciąży uC w 100% i wg mnie może być za wolne -doliczając czas obsługi procedury przerwania.
Wolał bym aby przerwanie wystąpiło TYLKO po osiągnięciu konkretnej wartości napięcia na ADC ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sie 2012, o 03:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 cze 2012
Posty: 102
Pomógł: 2

A czy nie lepiej komparator analogowy do tego zatrudnić?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sie 2012, o 07:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Poczytaj sobie o trybie FreeRuningMode przy ADC , przecież można też zapuścić przerwanie od ADC, które automatycznie będzie się wykonywać po dokonaniu konwersji jeśli zezwolisz na przerwanie....

Ale jeśli chcesz dokonać pomiaru tylko po przekroczeniu jakiegoś napięcia to masz komparator jak pisze kolega wyżej, albo jeszcze możliwość skorzystania z przerwania komparatora przy pomiarach ADC - no trzeba zajrzeć do noty do tabelek przy ADC - tam są ładnie źródła wyzwalania podane w zależności od bitów ADTS0...ADTS2

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sie 2012, o 12:09 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

;)
jeszcze komparatora nie używałem - ale to może być lepszy pomysł ;P
Po prostu chcę aby po osiągnięciu napięcia 2,3 lub 4V (regulowane dzielnikiem napięcia?) wyskoczyło mi przerwanie i wykonało procedurę.
Czyli co lepiej- bo jeszcze nie mam doświadczenia odnośnie sprawności tych modułów ;P
Mirku tak patrzę po spisie treści- chyba nic nie napisałeś odnośnie "komparatorów w praktyce". Nie mówię o paru zdaniach na początku ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sie 2012, o 13:26 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Nie - nie pisałem o komparatorze bo jak ktoś pozna już ADC - to na prawdę komparator to pryszcz ;) to jak hmmm jak bramka logiczna ;) tyle że na wejściu sobie właśnie dzielnikiem ustawiasz napięcie progowe a drugie wejście sprawdza ci stan napięcia i porównuje do tego na dzielniku ;) to się samo dzieje. Teraz wystarczy odblokować przerwanie od komparatora i już - na prawdę tu aż ciężko coś więcej opisywać jeśli chodzi o podstawową zasadę działania komparatorka ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2012, o 18:25 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Panowie "wystukałem" kod do ustawienia przerwania od komparatora dla Attiny2313.
Moje założenie to takie: Dać pomiędzy AIN1 i GND napięcie 2,5V. (Rozumiem, że AIN0-1 mają być ust jako wejście ;P)
Na AIN1 potencjometrem reguluję wartość napięcia 0-5V (potencjometr podłączony między masę a 5V). Gdy wyreguluję potencjometrem tak, że uzyskam na AIN1 =>2,5V wtedy wywoła się przerwanie od komparatora i wykona się procedura obslugi przerwania. W tym przypadku zmiana stanu PA0.
Pytanie czy komparator jest ustawiony poprawnie?
Z góry dzięki...

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

Zezwolenie na przerwanie mam w pliku main.c ;P
PS w AVRStudio działa poprawnie - jednak symulacja jest ograniczona do ręcznego wymuszenia przerwania.
Jednak nie jestem pewien, czy w fizycznym układzie zadziała - porównanie napięć + przerwanie
Panowie jakieś uwagi co do fizycznego połączenia?
Jakieś filtry czy coś wstawiać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2012, o 21:47 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

I jak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2012, o 22:20 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

jakie filtry ? ... dobrze myślisz i idziesz

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2012, o 22:37 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Czyli Analog comparator wstępnie ustawiony dobrze ;)
Filtry- chodziło mi np o to aby komparator nie wykrył jakiejś przypadkowej "szpilki" i pomyślałem aby wraz z dzielnikiem równolegle dać mały kondensator ceramiczny...

------------------------ [ Dodano po: 45 minutach ]

Mirku czy można zagnieżdżać przerwanie w przerwaniu?
Albo inaczej...
....konkretnie chcę zrobić układ reagujący na dźwięk. Po każdym przerwaniu komparatora chciałem aby Timer sprzętowy wywołał się przerwaniem 10 razy - potrzebny mi do odliczania czasu i wywołaniu po tych czasach pewnych funkcji......
Kolejna rzecz- z tego co wyczytałem analog comparator ma większy priorytet od Timera - czyli pasuje..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2012, o 11:44 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Program ma działać tak: po po odebraniu przerwania z komparatora następuje wykonanie funkcji, która musi wykonać się 10razy w odpowiednim czasie...
Wiem, że komparator może wywoływać timer...
Można by w procedurze obsługi przerwania komparatora dać jakiś licznik do 10, włączyć przerwanie od timera i liczyć wywołania timera, po czym np wyłączyć w rejestrze timer. Następnie znów czekać na sygnał od komparatora....
Tylko czy AVR na taką konfigurację pozwala?

------------------------ [ Dodano po: 1 minucie ]

GwynBleidD napisał(a):
Czemu od razu zagnieżdżać przerwanie w przerwaniu? I co właściwie miałeś tu na myśli?

Napisanie procedury obsługi przerwania komparatora, aby ta wywoływała przerwanie od timera..
I myślę, że się tak da.
Ale wolał bym prościej- scalić jakoś timer z komparatorem...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2012, o 14:07 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Komparator może, a nawet musi rozpocząć ponowne wywołanie swojej procedury w przypadku, gdy napięcie na koparator przyjdzie szybciej niż czas wykonywania się 10 razy przerwania od timera, aby zaznaczyć ponowne wykrycie napięcia...
Żadnych _delay_ - i właśnie dlatego chcę wykorzystać timer0, aby to on odliczał czas....
Kurdę, umieściłem wcześniej kod- myślisz, że nie trzeba przestawiać nic w konfiguracji komparatora, tylko dodać timer0?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2012, o 15:22 
Offline
Użytkownik

Dołączył(a): 08 sty 2012
Posty: 151
Pomógł: 0

Ogólnie timer umiem konfigurować...
Mam problem z komparatorem- wersja podstawowa kodu- "umieściłem ją w poście na początku" nie działa w praktyce.
Symulator dobrze działa- jednak wywoływanie przerwania w symulatorze jest ręczne i nie zweryfikuje tego czy jest ok na etapie symulacji.
Napięcia itp mam ok w układzie - ładnie reguluję, ale nie wywołuje przerwania od komparatora po przekroczeniu 2,5V na AIN1 (AIN0- ma na wejściu podane 2,5V), które sygnalizuje stanem 1 na PA0 ;/



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: 35 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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