Prescaler musi być co najmniej 8.
Może być Timer0 inaczej skonfigórowany np: 8000000/256 = 31250Hz Load Timer0, 250 'zapis w Bascom ' TCNT0 = 6 'doliczy 250 31250/250 = 125Hz = 8ms ' występuje przerwanie Timer0 jest ośmio bitowy, więc może zliczyć od 0 do 255 czyli 256 impulsów. W przerwaniu wpisujesz to co ma być wykonane. 256 - prescaler 250 - dodatkowe zliczanie wyprzedził mnie bart-projects
Witam, Nic nie przeszkadza w tym, że to bascom. Prescaler jest ustawiony na 64 więc zanim licznik zdąży zwiększyć swoją wartość to uC już załaduje do niego odpowiednią wartość. W Twoim programie jest pare błędzików, które może nie wpływają na dokładność pomiaru, ale są głupie :) konfigurując porty, dla pewności możesz napisać: set ddrb.2 set ddrb.3...
ATTINY2313 rzeczywiście ma prescaler, ATMEGA8 nie.
Kod wydaje sie ok, przy czym moje walki z odmierzaniem czasu mowia ze trzeba brac poprawke na Bascoma /i to duuuza/. Sprawdzilem pod symulatorem (Bascom) i program dziala, w realnym procku pewnie czasy sie rozjada.
Na 100% w Prescaler było to R na końcu? Bo w timerach jest Prescale, ale w ADC jest Prescaler ;) Bo skopiowałem dokładnie ten kod, który udostępniłeś, dodałem tylko i wyłącznie to r i normalnie się skompilował na bascom-avr 2.0.7.5
Patrząc po twoim filmie bardzo rzadko zbierasz próbki (157 próbek, a potem około 1s przerwy), tak więc twoje charakterystyki są bardzo statyczne. Tutaj chyba chodzi o to żeby zbierać jak najczęściej i jak najczęściej wyświetlać. Dla porównania dwa filmiki: Twój: Patrz od 1:27 do 1:36 [youtube]http://www.youtube.com/watch?v=... Mój...
A mozesz mi jeszcze powiedziec, jak obliczyles to, ze mam 125 cykli zegarowych pomiedzy kolejnymi przerwaniami? Sluszna uwaga, moj blad!, Przeoczylem ze jest to po prescaler. e marcus
na symulatorze nie masz co patrzeć. One są do niczego. Ok sprawdzę zaraz. Dodano po 18 ok sprawdziłem. Działa bez problemu. Sprawdzałem na płycie testowej a sygnał brałem z Timera2 skonfigurowanego jako PWM. Zmieniałem różnie Prescaler od 1 do 1024 i działało bez problemu.
Witam Czy potrafi któryś z was przekonwertować taki fragment kodu w BASCOM na C (Atmel Studio 6) ? Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc
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
Dzięki za info tak też zrobie. Mam nadzieje, że to pomoże bo w tej chwili dioda nie zapala mi się w ogóle. Wcześniejsze mruganie diodą i losowe błyski były spowodowane podpiętym programatorem na płytce stykowej. Dodam jeszcze, że do zasilania attiny dałem kondensator 470nF mam nadzieję, że to nie za dużo? EDIT: Timer0 jest jako licznik więc na co mi...
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
Po prostu byk w BASCOMie. Prescaler jest ustawiany jako CS02..CS00 = 110 a to oznacza, że licznik nie zlicza impulsów zegarowych tylko zewnętrzne na T0 z opadającym zboczem.
"Fusy" na 0000!. Trzeba będzie ustrugać zwenętrzny generator i podłączyć na XTAL1 (XTAL2 = Nc) sygnał prostokoątny o częstotliwości ok. 1MHz. Później należy przeprogramować "fusy" na 1111, odłączyć generator i podłączyć kwarc. Ustawiłeś procka na zewnętrzny sygnał zegarowy - to co innego niż zewnętrzny kwarc. Przewiń w Bascomie okienko z listą źródeł...
Lektura: http://mikrokontrolery.blogspot.com/2011...
Mnie według wzorów dla 8-bitowego (Fc/Prescaler/510) częstotliwość wynosi ok. 980 Hz, a dla 10-bitowego (Fc/Prescaler/2046) ok. 1955Hz.
Nie mam pojęcia jak zrobić prescaler na tym rejestrze TCCR0 w Bascom. Ale czy tałem że im większy ten prescale tym mniejsza dokładność ,może lepiej zostać przy tym co jest ?
W uproszczeniu częstotliwość sprzętowego generatora PWM to następująca zależność: F oscylatora / Prescaler / X, i tak: dla rozdzielczości Pwm=8 bitów X=510, dla rozdzielczości Pwm=9 bitów X=1022, dla rozdzielczości Pwm=10 bitów X=2046. Przykład dla rozjaśnienia: F kwarcu = 8MHz, rozdzielczość generatora PWM=9 bitów (możliwe 8,9 i 10), Prescaler=8 (możliwe...
O co mi dokładnie chodzi: W helpie Bascom jest napisane, że w przypadku kości 8535 mam do dyspozycji preskalery 1, 8, 32, 64, 128, 256, 1024, a dla kości M103 1, 8, 32, 64, 256, 1024. Ja zaś posiadam kość M32 i w PDF, który dotyczy tego mikrokontrolera jest tabelka na 127 stronie, która zawiera w sobie jakby wykaz dostepnych częstotliwości, ktorymi...
Może zanim zapomnę o czym chciałem napisać a nie jest najważniejsze, ale dla Ciebie ważne. Tak w telegraficznym skrócie -> USART w AVR ma możliwość włączenia jakby podwójnej prędkości/próbkowania (to samo SPI). Bit ma skrótowa nazwę U2X. Przy taktowaniu 16MHz, jak prawie każda płyta Ardu, to bez U2X predkość 115200 miałaby za duzy błąd który niby maksem...
Bo w Attiny13 nie ma tego pinu ale podanie w konfiguracji AVCC ustawia ref na napięcie zasilania. Nawet znalazłem program mojego termostatu , o którym już prawie zapomniałem i tam linia konfiguracyjna dla ATTINY13 wyglądała właśnie tak: Config Adc = Single , Prescaler = Auto , Reference = Avcc Wszystko działało więc zakładam, że u Ciebie też powinno...
Dzięki za rozjasnionko czyli 2,56V to max, a co mam zrobic zeby miec do 5V? Wystarczy podłączyc avcc do 5V? a to aref z tym kondensatorkiem zostawić? Config Adc = Single , Prescaler = Auto , Reference = Avcc Pod warunkiem ze reszta odpowiednio filtrowane i zabezpieczone przed ESD i EMC. Na linii AVcc przydalby sie takze maly induktor (cewka); oprocz...
W attiny2313 masz wyjścia b i d a ja potrzebuję generować to na port d bo akuratnie będzie mi łatwiej wszystko podpiąć. Na porcie D masz OC0B (pin PD5) więc konfiguruj odpowiednio Timer0 w CTC z wyjściem "Toggle OC0B" Patrz Datasheet str.79; Tab.40 Mode2 oraz str. 78; Tab 37 Na podstawie tych tabel i potrzeb wyedytuj dwa rejestry: TCCR0A oraz TCCR0B....
W BASCOM-ie jest wiecej takich niuansow. Odkrywanie odpowiedzi na takie dziwne pytania jest czasami bardzo denerwujace... W helpie jest cos napisane a w praktyce bywa ze dziala odrobine inaczej albo i calkiem inaczej... Jakis czas temu glowilem sie nad dokladnie tym samym problemem. Wymyslilem jaka jest odpowiedz z czego bylem bardzo dumny :-) Ponizej...
Dla osób które chcą wykonać ten zegar od razu podpowiem, że smużenie to normalka. Proszę spojrzeć na program bascom autora. Prescaler 1, taktowanie wewnętrzne procesora 8Mhz. I proszę sobie obliczyć częstotliwość multipleksowania wyświetlacza. Przecież to idzie praktycznie na maksa. Powinno się zwiększyć preskaler i wpisać wartość początkowa do timera....
Witam. Przy obliczeniach nie bierzesz chyba pod uwagę prescalera.
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
Załóżmy że chcesz uzyskać 100Hz. Procesor kreci się na przykład 8MHz. Timer napędzany jest sygnałem takim jak procesor, ale można ten sygnał podzielić tak żeby, na przykład co 1024 takty procesora do Timera trafiał jeden takt. Taki podział uzyskuje się za pomoca preskalera. Teraz wiadomo że Timer jest już taktowany wolniej bo co 1024 takty z 8MHz, ale...
Tylko mam pytanie bo nie jestem pewien, przy kwarcu 32.768kHz przepełnienie licznika odbywać się będzie równo co 1s ?? Co zrobić żeby przerwanie z przepełnienia było co 0.25s ?? Ustawić odpowiedni prescaler.Ponieważ timer jest 8'bitowy to przerwanie z prescalerem równym 1 będzie wywoływane 128 razy na sekundę. w M8 na T2 masz dostępne prescalery 1,8,32,64,128,256,1024....
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
Jeżeli ty tylko jasnością diody chcesz sterować to daj prescale =64. w zupełności ci to wystarczy i prockowi kupa czasu zostanie na inne bajerki. O nie, Prescale 8 nawet nie starcza Gdybym dał 8 Przy zegarze 8MHz i liczniku Timer0 zliczającym do 256 i prescalerze równym 8, otrzymujemy 3906 przerwań na sekundę do obsługi programowego PWM. 3906 przerwań...
Dzięki... i rozumiem, że Counter0 liczy do 255, ... W trybie , który przedstawiłem - tak , ale w innych trybach, gdzie TOP może stanowić rejestr OCR0A , jest inaczej. a wypełnienie przebiegu wynosi Pwm0a/255? Dokładnie rzecz ujmując Pwm0a/256 Z jaką częstotliwością działa PWM (domyślnie chyba 500kHz)? Da się ją regulować? Mówiąc ogólnie - częstotliwość...
Spróbuj to wpisać tak: No raczej tylko tak: [syntax=basic4gl]CLKPR = 128 CLKPR = 1[/syntax] Ta druga opcja nie zadziała - pierwsze do rejestru musi być wpisana kombinacja 0b10000000 a potem 0b0000XXXX, gdzie XXXX to prescaler.
Na pewno do samego generowania dźwięku musisz użyć timera, żeby czas był porządnie odliczany, na waitach się tego zrobić nie da. Poza tym dźwięk będzie oczywiście podle mizerny, ale zrobić się to da. Dobierz porządany zakres częstotliwości i policz które timery wykorzystasz, jaki prescaler i kwarc
Pokombinuje wtedy z tymi prescalerami i fuse bitami. Póki co w kodzie i w mkAVrcalculator cały czas mam ustawione na 8MHz, a prescaler ustawiony na 8,natomiast slow SCK mam ustawione na >187,5 kHz Na wyświetlaczu pokazuje mi to samo co Tobie, ale nie słychać ani nie widać w rzeczywistości ,że ta prędkość się zmienia.
Ja uczyłem się na poniższym kodzie: W tym kodzie jest mały błąd, a mianowicie wartość wpisana do rejestru OCR1A, powinna wynosić: crystal/prescaler-1
to inaczej - jak to wpisać żeby to niebyła pusta pętla tylko żeby program czekał poprostu pewną wartość czasu BASCOM
witam serdeczne dzieki za wsakzowki !! popelnilem jeden blad nie wlaczajac prescalera i dlatego koncowka OC1 byla "martwa" jeszcze raz dziekuje i pozdrawiam
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...
Witam. Ja przetwornik ADC ustawiam następująco: Config Adc = Single , Prescaler = Auto , Reference = Avcc lub Internal
W Bascomie jest do tego specjalna instrukcja Zaglądnij do Helpa na polecenie Pulsein Zauważ że zarówno instrukcja pulsein jak i pulseout mierzy tylko czas trwania impulsu a nie całego cyklu; patrz paniżej diagram: http://obrazki.elektroda.pl/1148630500_1... Zmierzysz tylko L1 albo L2 . Autor potrzebuje zmierzyc czas L (czas pomiędzy...
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,...
Hej, Jeśli chcesz płynnie regulować współczynnik wypełnienia to musisz wybrać jeden z modów PWM i wtedy będziesz skazany na jedną z kilku częstotliwości wynikających z zegara systemowego i tego jak ustawisz prescaler, Jeśli chcesz płynnie regulować częstotliwość to wybierasz mod CTC(clear timer on compare) ale będziesz miał wtedy stałe wypełnienie,...
Witam! Mam następujący problem. Jak ustawić prescaler i licznik aby odmierzyć 1 sekundę. programuje w bascom-ie, procesor attiny2313 zegar 1MHZ. Wspomagam się książką Wiązani, ale tam jest przykład dla atmegi8 i w pewnym momencie występuje stwierdzenie,że przy 8mhz jeden cykl zegara wynosi 125ns. To stwierdzenie jest dla mnie kluczem do zrozumienia...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
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...
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
Witam napisałem programik odczytujący pomiary z adc wszystko działa ładnie ale jak ustawie na napięcie zewnętrzne to pomiar stoi cały czas na maksimum jako napięcie odniesienia używam układu lm336 konfiguracja w bascomie Config Adc = Single , Prescaler = Auto , Reference = Aref Jeżeli Reference ustawie na avcc lub na internal to pomiar działa jeżeli...
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...
Napięcie masz z zakresu 0... 10 V . Dzielnikiem rezystancyjnym dzielisz przez 2 Rezystory > 10kOhm W Bascomie : Config Adc = Single , Prescaler = 16 , Reference = Avcc Napięcie zasilające jest u mnie napięciem odniesienia. Dla moich zastosowań wystarczająca dokładność
Przelutowałem układ do tej konfiguracji pinów dalej biało... [syntax=basic4gl]Rs Alias Portb.4 'S65 Data/command pin Res Alias Portb.3 'S65 Reset pin Cs Alias Portb.2 'S65 Chip Select pin Clk Alias Portb.1 'S65 Clock pin Dat Alias Portb.0 'S65 Data pin Config Rs = Output Config Dat = Output Config Cs = Output Config Clk = Output Config Res = Output...
Nie przez 65536 tylko przez rozdzielczość timera np Pwm=10 wtedy f.procka/1024(rozdzielczosc pwm)/prescaler=f.PWM Przez 65536 dzielisz gdy obluiczas timer=timer a nie timer=pwm
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...
dobrze by było troszkę wzmocnić to napięcie (tak żeby można je było mierzyć) minimalne napięcie odniesienia dla 8535 to chyba 2V, ale możesz dać więcej. Procedura w bascomie jest banalna deklarujesz np: Config Adc = Single , Prescaler = Auto , Reference = Internal Pomiar: Zmienna_y = 0 Zmienna_v = 0 Do Incr Zmienna_y Start Adc Zmienna_x = Getadc(0)...
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...
Jeśli chcesz potencjometrem regulowac prędkość, to łączysz jego opór pomiędzy szyny zasilania mikrokontrolera, a suwak dajesz pod przetwornik ADC. I przykładowo program: Config Adc = Single, Prescaler = Auto, Reference = Avcc Start Adc i w programie co jakiś czas sprawdzasz sobie: opoznienie = getadc(0) i zamiast waitms 500, dajesz waitms opoznienie...
Może zaczniesz od czegoś łatwiejszego , będzie prościej i mniej stresująco . No, nie żartuj z faceta!. Co może byc łatwiesze (?) ? miganie diodą ?... Spójrz na jego ?credentials? w lewym oknie. Gośc jest tu około 10 lat, więc pewne rozeznanie w temacie posiada i ?kurs? z miganiem diodą z pewnością dawno ukończył. Może potrzebuje troche odmiennego spojrzenia...
BlueDraco nie w tym rzecz. Janoo0 ja steruje silnikiem za pomocą L298 i problem wydaje mi się rozwiązany (nie testowałem jeszcze wszystkich silników). Sprawa była taka że mostek może przyjąć sygnał max 50KHz, przy prescale = 1 częstotliwość PWM równa się częstotliwości krwarcu czyli 16MHz (trochę za dużo :)). Po zmianie prescalera na 1024 silnik zaczął...
(...) 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ć...
Próbowałem przerobić wartość prescalera na 1024 tak aby timer2 dokładnie obliczał czas.Niestety dalej piosenki są w spowolnionym tempie. Proszę o pomoc :)
A sprawa płytki , czy wszystko jest na niej dobrze połączone. Nie jestem w stanie sprawdzić na układzie próbnym ,nie posiadam wyświetlacza matrycowego. Jeśli płytka jest ok , to zmniejsz maksymalnie prędkość procka, prescaler,Timer0 abyś widział jak kolumny zapalają się bardzo powoli
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...
Lepiej by było jakbyś podzielił prescaler na 256 albo na 1024. I po co pod włączeniem przerwania masz i enable timer0 i start timer0? Wystarczy start timer0.
(A). Czy w Compare0a = 186 mogę wstawić liczbę w zakresie 0-255? (B). by uzyskać interwał =~100ms to 9 600 000Hz/ 1024 /37,5 (połówek pewnie nie można używać wiec zaokrąglę do 38 to będzie 247Hz (C). natomiast dla interwału 50ms to 9 600 000Hz/ 1024 /75 to będzie 125Hz czy dobrze to rozumiem? Nie dobrze , .. (at)A. -formalne/teoretycznie możesz w Compare0a...
Ok oto program z Timerem. Pisząc w bascomie zauważyłem coś dziwnego: Gdzy pisze Config timer1= timer, prescaler = xx to pojawia się okienko z wyborem prescalera, ale kompilator tego nie trawi. Z kolei gdy napisze prescale to okienko się nie pojawia ale wszystko sie kompiluje.
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
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...
Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie. W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then) Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza...
Odbiór nie używa timera0, jedynie nadawanie. Już sobie poradziłem z tym :) coś mnie podkusiło, aby prescaler w pwm'ach dać na 8 i chodzi. Męczyłem się kilka dni a tu taka drobna rzecz. Teraz już będę pamiętał.
Zrobiłem wszystko jak Napisałeś: -zmieniłem zmienną G na long -zmieniłem prescaler ADC z Auto na 128 -zaznaczyłem w komentarze 4 linijki w mcs.lib, potem skompilowałem w managerze Wyniki dalej niczym się nie różnią od poprzednich :cry:
Config ADC = Single , Prescaler = Auto , Reference = Internal Start ADC LM35 jest bezpośrednio podłączony do ADC0 i oczywiście do zasilania. Na chwilę obecną nie mogę dodać schematu, bo piszę z telefonu...
Niestety Bascom jest niedorobiony. Ilez to ja niekiedy spedzilem czasu bo cos mi nie chodzilo. Co wersja to inny blad. W jednej wersji nie chodzily mi np. timery na Atmega 16, prescaler blednie sie ustawial itp. Warto jest podgladnac rejestry i sprawdzic czy aby Bascom nie wpisal tam glupot. Jesli wpisal glupoty a to najczesciej jest przyczyna probowac...
Co to jest Prescale ? Timery w mikrokontrolerach AVR nie muszą być taktowane zegarem systemowym - często jest on za szybki dla potrzeb projektanta. Inżynierowie z Atmela rozwiązali ten problem, umieszczając dodatkowy (nieco ukryty) licznik zwany prescalerem. Z tego licznika otrzymujemy kilka nowych sygnałów zegarowych, z których skorzystać mogą timery....
Niestety nie. Można się o tym przekonać studiując notę katalogową. Prescaler jest ustawiany dla całego licznika ten sam. Mówiąc bardzo prosto jest do dzielnik częstotliwości który dzieląc systemowy sygnał zegarowy obniża częstotliwość sygnału zegarowego podawanego na licznik.
jezeli chodzi o czasy zegara to nie sa az tak bardzo tragiczne (od 60 do 100 us) wiec chyba Bascom sobie z tym poradzi, w moim programie mam generator na timer1 ktory dla kwarcu 8MHz (prescaler = 64)i wartosci w rejestrze licznika 65530 daje mi przerwanie co 40us... moze juz ktos napisal taka komunikacje i moze sie podzielic doswiadczeniami ?? Pozdrawiam
Tobie chodzi o wskaźnik wysterowania tak :?: Były już takie projekty na forum z wykorzystaniem avr-ka. Teoretycznie możesz sobie dać mostek z diod prostowniczych i podłączyć to do atmegi. Wydaje mi się że będzie ona musiała szybko działać i ważne będą nawet małe zmiany napięcia. Osobiście przetwornik konfiguruję tak: Config Adc = Single , Prescaler...
Bascom mnie odrzuca, ale o ile się nie mylę to wykorzystujesz przerwanie z przepełnienia timera. Prescaler dajesz 256, timer jest 8-bitowy, więc daje przerwanie raz na 65536 cykli, czyli zaledwie 122Hz. I to jeszcze dzielisz na poszczególne wyświetlacze - musi mrugać. Zwiększ szybkość odświeżania, np. poprzez zmniejszenie prescalera. Dopiero przy ok....
A jednak da sie w Bascomie zmieniac konfiguracje przetwornika ADC w trakcie wykonywania programu. Oto fragment dzialajacego programu: Do If Pinb.0 = 0 Then Config Adc = Single , Prescaler = Auto , Reference = Avcc '5V Start Adc Wart_ac = Getadc(0) End If If Pinb.1 = 0 Then Config Adc = Single , Prescaler = Auto , Reference = Internal '2.5V Start Adc...
ok, wyliczone jest dobrze ale za czesto odpalasz timer, ustaw wiekszy prescaler i wylicz jeszcze raz, po drugie to przerzuć wyświetlanie na lcd'ka do głównego programu przez ustawianie jakiejs flagi w przerwaniu, po trzecie wez poprawke na czas przeladowania timera i inne podobne (preferuje metode prób i błędów)
Simple how it`s look but should work ;) Set Freq manually but 1,2MHz is a oryginal value [syntax=basic4gl]$regfile = "attiny13.dat" $hwstack = 24 $swstack = 8 $framesize = 24 $crystal = 1200000 '$lib "mcsbyteint.lbx" ' <-option Config Portb = &B00100011 : Portb = &B11000000 Config Adc = Single , Prescaler = 8 , Reference = Avcc Start Adc...
Ok coś tam rozumiem ale mam jeszcze taki problem albo prośbę bo nie wiem jak ustawić rejestry w attiny13 Tccr0a Tccr0b Admux Adcsra Adcsrb jakbym chciał pwm 8 bitowy (attiny13) z max częstotliwością tj chyba FAST PWM na pwm0a i pwm0b czyli 9600000/256=37500Hz przy działającym ADC. Reszta ustawień zostaje tak jak jest. To już będzie wszystko. Zacznij...
Ja wnioskując, że nie jestem w ogóle kompatybilny z czym kolwiek :P pytam, czy właśnie tak przebiega włączenie ADC ? [syntax=c] ADMUX = 0; ADCSRA = ADEN|ADSC|ADATE|ADIF|ADIE; [/syntax] Nie jestem też pewien co do ustawień prescalera... Ogólnie, bez jakiej kolwiek książki to będzie droga przez mękę :/
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"...
witam . Dlaczego nie mogę skompilować tj; zmienna = zmienna / 4 kod bascom $regfile = "attiny13.dat" 'typ proca $crystal = 800000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Up Dim B As Iram Word Config Portb.0 = Output Portb.0 = 0 Config Portb.1 = Output Portb.1 = 0 Dim Zmienna...
Witam , wklejam kod jaki udało mi się wypocić. Miało być tak pięknie a wyszło jak zawsze :-( Ten twój kod jest oczywiście błędny. Po pierwsze, jeżeli stosujesz napięcie referencyjne wewnętrzne, to dla AtMega 8 wynosi ono 2.56V. Zatem poziom napięcia mierzonego podanego na dowolny pin ADC nie może przekroczyc tej wartości. Jeżeli jednak ten warunek...
Dla mnie byka masz w przerwaniu timer0=1023 ? Ten zegar jest 8bitowy więc brana jest pod uwagę wartość młodszego bajtu w tym przypadku 255, Przepełnienie zegara następuje po jednym impulsie taktującym timer0 czyli po 1024 impulsach zegarowych (prescaler) nie masz tam 5s tylko $crystal/1024 . W przerwaniach unikał bym wywołania call i if . Ustaw flagę...
osmiele sie pokazac wlasny projekt: http://www.elektroda.pl/rtvforum/topic37... ostatnio znalazlem w starej glowicy z analogowego tunera satelitarnego kosc MB506 - prescaler 2,4GHz /256 - rewalcja jak dopisze porawki programowe i doczepie kostke to rownierz opisze .
Sekundę można odliczać na timerze1 (16-bit)... Już gdzieś na forum pisałem ale niech będzie... Tryb fast pwm, ICR1 jako TOP równe 62499... Prescaler na 64 i włączone przerwanie OVF... Będzie wywoływane co sekundę... oczywiście dokładność nie będzie rewelacyjna...
Z tym odświerzaniem to wynik eksperymentów, jakie wartości proponujesz?. Co do rs-a to jeszcze nie wybrałem konkretnego falownika, ale myśle że to będzie tylko podstawienie odpowiednich parametrów i będzie ok. A liczyłem warość timera tak: 16000000Hz/256/250=250Hz (256 prescaler) na 5 wyświetlaczy czyli aby odliczać co 4 ms (1/250) to trzeba wpisać...
Witam wszystkich serdecznie i dziękuję za pomoc w rozwiązaniu problemu. Chciałbym przeprosić za moje bezmyślenie. Po sugestii frediego zacząłem kombinować z tymi rezystorami przy wzmacniaczu wyjściowym. Skończyło się tym, że wstawiłem potencjometr wieloobrotowy 10K i uzyskałem to co chciałem. Tak więc polecam ten układ do przekładników z małą modyfikacją...
Co do tego: Config Adc = Single , Prescaler = Auto , Reference = Off To napięcie referencyjne bierz z avcc tak: Reference = avcc i podłącz to do 5v przez dławik + kondensator.
1. Pokaż CAŁY kod. 2. Zdajesz sobie sprawę, że parametry timera można zmieniać skokowo co 1 bit - policz sobie jakie wartości będą wpisywane do rejestrów, które nim sterują przy różnych parametrach wejściowych - być może Twoje operacje powodują że np. zmiana częstotliwości o paręset Hz to zmiana o 1 bit - wtedy trzeba inaczej dobrać prescaler itp. Warto...
Nie widziałem wcześniej, że już na to wpadłaś. Twój się kalibrował tylko w jedną stronę a ten powinien w obydwie (ale nie testowałem) ;) [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 2 $swstack = 0 $framesize = 22 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Mem_adc As Word , New_adc As Word Dim Krok As Byte...
Config Adc = Single , Prescaler = Auto , Reference = ' Tu co należy wpisać ???? Nie znam BASCOM, ale po 15 sekundach w google znalazłem: 'Config Adc = Single , Prescaler = Auto, Reference = Internal 'The reference param may be : ' OFF : AREF, internal reference turned off ' AVCC : AVCC, with external capacitor at AREF pin ' INTERNAL : Internal 2.56...
W przytoczonym wzorze przeze mnie VBG = 1,22V. Nota odnośnie Atmega8L podaje 1.3V a specyfikacja do Atmega88V VBG = 1.1V. Stąd są te różnice. W każdym razie uzyskałem to o co mi chodziło. ..... Pojawił się problem ponieważ chcę odczytywać dodatkowo jeszcze zewnętrzne napięcie doprowadzone do jednego kanału przetwornika. Po umieszczeniu na początku programu...
Mam jeszcze jedno pytanie Jak chciał bym zmierzyć prędkość impulsów np: w m/s , to muszę użyć Timera - ale jak... pomożecie? Nie mierzy się prędkości impulsów. Impulsy nie poruszają się, lecz trwają; mozesz zatem zmierzyc czas trwania takiego impulsu (co w tym przypadku jest bez większego znaczenia), oraz częstotliwośc ich występowania (F); gdzie F...
Podaje Ci Boogie moje dane jakie, po kolei w czasie kalibracji, wpisuje do rejestrow. Jesli, ktores z moich oznaczen nie sa jednoznaczne, to pisz:) Zapis jest w Bascomie:) Main_inicjalizacja = &H3A Main_resetn_1 = &H3B Main_pd = &H3F Main_bias_pd_0 = &H39 Main_rx_single_a = &H11 Main_tx_single_b = &HE1 Freq2a_dane = &H42 Freq1a_dane = &H20 Freq0a_dane...
prescaler atmega prescaler atmega8 prescaler ustawi
regulator napięcia przewody honda tranzystor dwubramkowy termostat lodówka turystyczna
zmywarka whirlpool zmywarka whirlpool
Kontrola przepalenia żarówki mijania w Honda Civic 9 sedan Samoczynne przewijanie pasków w Windows 11 - jak to naprawić?