Ja to zawsze robię w ten sposób: ldi r22,5 Go: Pomiar1 = Getadc(0) dec r22 brne Go Zawsze działa, nie wygląda tak rażąco, no i zżera mniej pamięci z programu.
Witam niestety komendą LCD nie można wyswietlać zmiennej typu Word. Jak obejść ten problem? Zadeklaruj jakąś zmienną jako string (np. tak jak poniżej jest ss1) Dim Ss1 As String * 12 Ss1 = Fusing(W, "#.&&") ' formatowanie zapisu doformatu x.xx Lcd "U=" ; Ss1 jak wartość odczytana komendą getADC ma się do wartości napięcia...
Nie, GetRC służy do pomiaru czegoś innego... GetADC jest bardziej precyzyjne.
Witam. Zaczynam zabawe z procesorkami i już mam pare pytań: 1 Jest formułka GetADC (czy coś, analog-digital conv.) -w jakim "formacie" czy formie dostaje z tego polecenia wynik?? 2 Jak te kilka wyników ustawić w kolejce? 3 I co można zrobić z danymi z adc? - np czy można przekonwertować na milisekundy?? :?:
Ta funkcja jest napisana jako ogólna wykorzystująca tryb ADC Noise Reduction. W dodatku jest napisana dla konkretnego przypadku, kodu który zamiast odczytywać ADC w funkcji przerwania ADC, odczytuje go w ciele funkcji Owszem, nie ukrywam, że akurat w tym przypadku o taki efekt mi chodziło. ADC chodzi cały czas generując przerwania, za to podczas każdego...
Jeśli piszesz w BASCOM to wystarczy polecenie GETADC z parametrem liczbowym określającym numer kanału.
Możesz w Bascomie załatwić wszystko na samych rejestrach, skoro polecenie Getadc się "gubi": ADMUX=b11010000 ' Vref =2.56 z zewnetrznym kondensatorem, pomiar dla ADC0 ADCSRA=b11000111 'włączony ADC i uruchomiona konwersja, wyłączone przerwania, preskaler na 128 teraz czekasz np 100ms i odczytujesz stan rejestrów ADCH (MSB ) i ADCL (LSB) wyzwalasz następną...
Włącz timer1 i w jego przerwaniu wstaw getadc np co sekundę. To ma być woltomierz? Rozumię , że masz tylko jedną cyfrę na wyświetlaczu?
Sprawdz ten kod , zmodyfikuj dzielenie getadc ,częstotliwość jest regulowana przez potencjometr ,musisz go dobrać. I nie wiem jak z PWM. No i lepiej oczywiście przez jakiś transoptor czy coś ,aby była izolacja uP od sieci energetycznej. Config Portb = &B11111111 'Portb.0 ma być wyjściem Config Timer0 = Timer , Prescale = 1 Enable Interrupts Enable Timer0...
[syntax=basic4gl] Wczytaj_stany_przetwornikow: 'Początek podprogramu o nazwie jak przed dwukropkiem wywoływanego przez Gosub Wczytaj_stany_przetwornikow Start Adc 'Uruchom Przetwornik ADC W = Getadc(5) ' "Wczytaj" do zmiennej W wartość zmierzoną na końcówce ADC5 W = Getadc(5) ' Ponownie wczytaj. W Bascomie był błąd w Getadc naprawiany przez 2 krotne...
Witam. Mam prosty woltomierz na ATmega8 i powstają problemy: Mam zabezpieczenie odwrotnego podłączenia napięcia badanego na tranzystorze IRF520 ale przecierz jak wpakuje mu te dajmy na to nawet 300V w dren to sie nie spali pomimo że napięcia nie będzie na żadnym innym pinie , przebije go czy nie? ile trzeba voltów aby go przebiło napięcie?? Czy dioda...
Chcę użyć przetwornika AD w Atmega8. Programuje w bascomie AVR. Jest tam funkcja GetADC i nie mam żadnego problemu z jej uzyciem, ale ma ona taka zasadncizą wadę, że dziala tylko w trybie single i po jej wywołaniu czeka aż konwersja zostanie zakończona. (Jest to dość naturalne, bo przecież musi zwrócić wynik konwersji). Zależało by mi, aby uniknąć tego...
No więc ja mam taki problem ze w tej chwili nie mogę ustabilizować wyników z Getadc , wie ktoś co na to poradzić?? Zasilanie bateryjne, kondziołki na sumę 4000uF, 10uF od Aref do masy AGND, zasilanie do AVCC przez dławik 330uH i 100nF do masy, i wynik skacze nonstop os 0 do 1023. Nowy Touchpanel, z telefonu SE P900. Końcówki panelu przez rezystory 100R...
Mam taki problem, potrzebowałem na szybko coś zrobic do obserwacji pradu i napiecia, jak szybko i nieskomplikowanie to bascom napisałem taki programik Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.3 , Db7 = Portd.4 , E = Portc.4 , Rs = Portc.5 Config Adc = Free , Prescaler = Auto , Reference = Internal Dim Adc0...
Domyślam sie że to jest BASCOM. GetAdc(x) - funkcja wykonuje pomiar na nodze ADCx. Czyli dobrze myślisz. Pozdrawiam Yakuza Edit: Tylko pamiętaj że przetwornik musi pracować w trybie SINGLE.
Odczyt z ADC czyli, Pomiar=Getadc(1) wrzuć do pętli głównej.
Long = GetAdc(0) Single = Long * 0.01955 String = Fusing(Single, "##.##") LCD String; "V"
Bascom operuje bezpośrednio na rejestrach. Poczytaj DS co i gdzie trzeba poustawiać, a potem czytaj wynik też prosto z rejestrów. Nie używaj getadc. To polecenie działa tylko w trybie single i o ile wiem wykonuje konwersję zawsze dwa razy zwracając wynik drugiego pomiaru. Wtedy o szybkości max nie ma co mówić.
No więc jeśli stosujesz M8 to masz gotowe rozwiązanie powyżej. A... zapomniałem napisać, że potrzebny dzielnik napięcia. Może być przez 2 i jako napięcie odniesienia podać AVCC (o ile AVCC=5V). $crystal = 4000000 $regfile = "m8def.dat" Config Timer1 = Pwm , Pwm = 10 , Prescale = 8 , Compare A Pwm = Clear Down 'Konfiguracja Timera Config Portd...
To już załatwia bascom - jest ustawione na Auto. co do sedna, sprawdziłem dziś na swoim układzie kanały 0-7 ADC następującym programem: [syntax=basic4gl] $regfile = "m2560def.dat" $crystal = 16000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Wart_adc1 As Word Dim Wart_adc2 As Word Start Adc 'AVCC bezpośrednio do 5V, AREF w powietrzu,...
Porównaj: Moja propozycja Wartosc = Getadc(4) Wartosc = Wartosc / 5 Wartosca = Wartosc Twój kod Wartosc = Getadc(4) Wartosc = Wartosc / 5 Wartosc = Wartosca Widzisz różnicę :?: Piotrek
spróbuj tak : Config Adc = Single , Prescaler = Auto Start Adc Dim N0 As Word N0 = Getadc(0) w N0 masz wartość napięcia gdzie 1023 to 5V a 0 to 0V
Poniżej fragment: Odczyt = 0 For Krok = 1 To 100 W = Getadc(1) Odczyt = Odczyt + W Next Krok Wyn = Odczyt / 100 Zmienna wyn to uśredniony pomiar ze 100 odczytów. Pozdrawiam.
mój błąd - musisz zostawić W jako Word, a potem dodawać wartości do zmiennej typu Long poprzez tzw. niejawne rzutowanie typów. czyli Dim W as word, L as long '... W=getadc(0) L=L+W '... L=L/10 W=L '... i dalsze obliczenia
Co to w ogóle jest: Trochę przekombinowane: Powinno być: czytaj_stany: Czujnik_lewy = Getadc(5) Czujnik_prawy = Getadc(3) Return ... aczkolwiek dwukrotne powtórzenie Getadc(x) kiedyś maskowało błąd Bascoma, który jak dobrze pamiętam polegał na odczytywaniu za pierwszym razem napięcia z końcówki o numerze o jeden niższym niż wskazana...
Po pierwsze to z adc dostajesz zmienną w zakresie 0-1023 , a w pwm zadeklarowałeś 8 bitów czyli zakres 0 - 255. Spróbuj tak: Dim U As Word Dim P As byte Start Adc Do U = Getadc(0) U = Getadc(0) P=U/4 Pwm1a = P Loop End Przy konfiguracji przetwornika użyj Reference = avcc. Ewentualnie pisz na GG, a wyniki opiszemy w temacie :D . Pozdr. Daniel
Programik w porządku z małym ale Wart_ac = Getadc(1) Wart_ac = Getadc(1) ' dwa razy to samo zalecam i V = Wart_ac * 0.004884 ' też zalecam Jeśli nie zależy ci na czasach kolejnych odczytów to zalecane jest odczekać > niż 20ms przed kolejnym pomiarem z ADC Wart_ac = Getadc(1) Waitms = 50 Wart_ac = Getadc(1) to od strony programowej, teraz od elektroniki:...
Napisałem sobie prosty program w Bascomie AVR - wiem że bascom nie cieszy się najlepszą opinią ale jeszcze się nie przejechałem, wiele urządzeń działa do dziś i może zła opinia to po części zasługa początkujących którzy zwalają brak umiejętności na kompilator. Program w przerwaniu od timera mierzy wartość z ADC, jest to prąd silnika, i porównuje ją...
Gdzie to wyczytałeś, tak dla formalności? Oczywiście że nie, przecież masz napisane: Sample = Getadc(0) ' pobierz napięcie z ADC0 A gdzie jest w Uc ADC(0)? Dodano po 1 I jeszcze jedno, to wskaźnik MONO.
Pokaż Config ADC....
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
Oczywiście że tak. Chodzi tutaj o tryb adc FREE. W trybie tym nie działa GETADC(tak pisze w helpie bascoma), czym mógłbym to zastąpić w powyższym programie. pio_05
wystarczy nieco przejrzeć helpa bascoma: [syntax=basic4gl]Config Adc = Single , Prescaler = Auto 'Now give power to the chip Start Adc 'With STOP ADC, you can remove the power from the chip 'Stop Adc Dim W As Word , Channel As Byte Channel = 0 'now read A/D value from channel 0 Do W = Getadc(channel) Print "Channel " ; Channel ; " value " ; W Incr Channel...
(...) osobnym PinX i oczekuj na stan niski ADCx2 aż do spełnienia tego warunku. Jeśli na ADCx2 napięcia równe 0 mrugnij diodą Led1 jeden raz przez 300ms, wyłącz Przekaźnik1 na PinX Po czym wróć do góry procedury, do oczekiwania na napięcie na ADCx1 To właściwie tyle. Dziękuję za uwagę i wszelaką pomoc. Witam serdecznie na forum! Chętnie pomogę Ci przygotować...
Najprościej będzie zmodyfikować program tak: [syntax=vbnet] Rez = Getadc(5) 'przechwycenie wartości napięć na wejściach ADC Pot_max = Getadc(4) If Rez >= Pot_max Then Wait 1 'wykrywanie przeciążenia Rez = Getadc(5) 'przechwycenie wartości napięć na wejściach ADC Pot_max = Getadc(4) If Rez >= Pot_max Then Reset Portd.0 'wyłączenie silnika Reset Portd.1...
Przycisk do końcówki INT0. On INT0 Int0_handler Config INT0 = Falling Enable INT0 Int0_handler: Gosub Get_ADC_16 ADC_Offset = Napiecie Rerurn Get_ADC_16_2: Disable INT0 'Żeby wciskanie przycisku nie przerwało normalnego pomiaru. Gosub Get_ADC_16 Napiecie = Napiecie - ADC_Offset Enable_INT0 Return Do pomiarów używasz procedury Get_ADC_16_2, która...
Nie !!!! Nie w środku pętli to byłoby bez sensu. Ale ja to bym zrobił inaczej [syntax=basic4gl].. .... ...jakieś instrukcje.. .. Dim Pk As Byte Declare Sub PrzyciskC5 Ddrc = &B00000011 Set Portc.5 .... ...jakieś instrukcje.. .. Menu3: Pk = 0 Do Locate 1 , 8 Lcd "T" Start Adc Temp = Getadc(6) Temp = Getadc(6) C = Temp / 4.166 Celsius = Fusing(c , "###.#")...
https://avrhelp.mcselec.com/index.html?c... https://avrhelp.mcselec.com/index.html?g... Na dole masz przykłady.
Spróbuj zmodernizować kod w ten sposób: Do A = Getadc(0) B = Getadc(3) C = A * 0.0049 D = B * 0.0049 T = Atn2(c , D) ' zwrócenie wartości arctan w radianach E = Rad2deg(t) 'zamiana rad na stopnie G = Fusing(c , "#.&&") 'zamiana wart. nap. sin na tekst H = Fusing(d , "#.&&") 'zamiana...
Nie wiem po co wyłączasz i włączasz ten przetwornik, ale może jakaś oszczędność baterii czy coś.. W każdym bądź razie pierwszy odczyt po włączeniu przetwornika może być zafałszowany. Bascom i tak czyta dwa razy, ale uśrednia te dwa odczyty. Spróbuj wykonac dwa doświadczenia. W pierwszym pod "Nap = Getadc(4)" dopisz dokładnie taką samą druga linijkę....
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Do Autora wątku: Proszę. Nie taki diabeł straszny. Nie napisałeś jaki to procesor więc napisałem przykład dla Mega8. Funkcja odczytuje ADC(0-5) z włączony ADLAR czyli tylko osiem bitów. Wynik od 0 do 255. Zapewne działa nawet w symulatorze. To taki podstawowy. Można nie czekać a ustawić przerwanie, ale to pewnie jeszcze nie dla Ciebie :D Wpisz w Google...
Witaj. Poniżej poprawiony program, przy którym kompilator nie melduje błędów. Było ich kilka. Przypomina mi się taka łamigłówka - "Znajdź 10 różnic na 2 rysunkach" :) Tyle nie było. Poprawności wyświetlania na LCD nie sprawdzałem, ale poprawiłem tak, aby był sens w wyświetlanych danych. Jak go podłączysz, to sprawdzisz. $regfile = "m8def.DAT"...
Sprawdziłem to dla sportu bo taki prosty kodzik od czasu do czasu to jak zjedzenie cukierka :D i to nawet działa. Oświetlone słońcem czy tam nawet żarówką LED`ową się nie wzbudza a przy zbliżeniu i owszem. Tiny85 ma juz wbudowany wzmacniacz dla ADC i tam mozna więcej nawet zadzaiałać, ale Tiny13 nie ma więc dla czułości użyłem wewnętrznego napięcia...
No mniej więcej tak: Dim X As Word Dim Y As Byte ... ... X = Getadc(2) Y = Lookup (X, Tablica) 'To zamiast tych wszystkich IF-ów X = Y Setki = X Mod 1000 Tysiace = X / 1000 ... ... Tablica: Data 120 'Pierwszy element Data 120 Data 120 ... ... Data 120 Data 119 '140-ty element (drugi element w wersji assemblera) Data 119 ......
Chodzi o to , że w wyniku działania V = GetADC(x) dostaniesz wartość od 0 do 1023, to musisz przekonwertować tak, aby dostać Volty. Stosując wewnętrzne źródło referencyjne masz mnożnik około 0.0049, czyli jeśli w wyniku V dostaniesz 512 to po pomnożeniu wyjdzie Ci około 2.5V. Oczywiście musisz zastosować dzielnik wejściowy np. 1:10, bo max napięcie...
Możesz Kolego lukaszSZ999 napisać o jaką ilość kroków dokładnie chodzi przy sterowaniu joystickiem, jakoś nie zrozumiałem do końca działania tego programu. Nie wiem czy to ważne, ale Attiny13 ma taktowanie 9,6 Mhz. lub 4,8 Mhz z możliwością podziału przez 8 - ($crystal = 1000000), po drugie nie widzę żeby Kolega ustawił pin PB.4 jako wejście (Getadc(2)).
Zakładając, że użyjesz innego procka, dalej ciężko się domyśleć, o co dokładnie pytasz. Ale spróbuję :p Zapewnie chcesz najpierw obsłużyć przetwornik. Zatem na początku konfiguracja: - jeśli napięcie odniesienia ma być pobierane z wyprowadzenia AVCC mikrokontrolera: Config Adc=Single, Prescaler=Auto, Reference=Avcc - jeśli chcesz skorzystać z wewnętrznego...
By odrobinę przyspieszyć zrób inaczej czytanie danych z ADC zamiast For C = 0 To 160 'zapełnianie tablicy Nap1 = Getadc(1) Nap1 = Nap1 / 5 Seg(c) = 118 - Nap1 'dopasowanie do LCD Next zrób For C = 0 To 160 'zapełnianie tablicy Seg(c) = Getadc(1) Next For C = 0 To 160 'zapełnianie tablicy Seg(c)= Seg(c)/...
Żeby nie było, że w przerwaniach ustawiam tylko flagi Hahaha :D Wiem na ile sobie mogę pozwolić przy danych założeniach :P Kiedy się już coś tam wie to się nie zgaduje "czy się uda" tylko się to wie :D Te ADC można czytać w Bascom z pominięciem Getadc() W plikach DEF są zaszyte również definicje pod nazwą WIO Pozwala to na odczyt dwubajtowych rejestrów...
bascom getadc bascom pomiar getadc bascom atmega8 getadc
formatowanie seagate expansion solidny laptop najczęściej zadawać pytać
stukanie sprezarki powietrza wirnik szlifierki celma
Wideodomofony Commax a zasilacze rygla elektrozaczepu Uzwojenia transformatora zig-zag: jak są nawijane?