Na dobra sprawe w tym przypadku do compare1a chyba moznaby dac 2x15625 czyli 31250 i tym sposobem procka przerwania bedzie krotsza.
Witam. Mam parę nurtujących mnie pytań od pewnego czasu. Niedawno zacząłem się bawić licznikami w atmedze8. Chciałbym zacząć od zupełnych podstaw w tej dziedzinie. Zajmuje się teraz counterem0. Z tego co udało mi się wyczytać z manuala to są 4 podstawowe tryby pracy tego licznika: -brak pracy :] -praca -praca z prescalerem -zewnętrzne taktowanie Tutaj...
Zważywszy na moje ostatnie zainteresowanie radiotechniką postanowiłem wykonać sobie miernik częstotliwości. Wykonałem miernik na atmega8 + prescaler przez 4 na 74LS293. Wszystko działa super jeśli podpinam na wejście sygnał prostokątny. Zbudowałem tez generator z rezonatorem kwarcowym, za nim wtórnik i działa pięknie… ale kiedy podpinam w miejsce...
To co napisał kol. Krauser jest bardzo istotne, ponieważ włączasz przerwanie od porównania (1<<OCIE1B), a nie masz funkcji jego obsługi, co de facto powoduje skok do adresu 0000h, czyli rozpoczęcie działania programu od początku.. Drobna uwaga do komentarza: [syntax=c]TCCR1B |= (1<<CS12)|(1<<WGM12) ; // prescaler 512[/syntax] W Atmega8...
Search Atmega8 datasheet for clock prescaler information :)
ATTINY2313 rzeczywiście ma prescaler, ATMEGA8 nie.
Witam, Proponuję użyć fototranzystora jako dzielnik napięcia i wyjście tego dzielnika podłączyć do przetwornika analogowo-cyfrowego, który znajduje się na pokładzie ATMega8. ------------------------- $regfile = "m8def.dat" Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Dim W As Word W = Getadc(0) 'zero czyli, że fototranzystor został...
No to dobrze... uC taktowany jest najniższą dostępną z wewnętrznego RC częstotliwością 1MHz... Ustawiam prescaler na 1 i mam przerwanie co 256us... Czy nadal powinienem coś wpisywać do TCNT0...?.?.?
niżej i tak je ustawia (CS11 i CS10) :) No fakt, w tym przypadku akurat pasuje :), ale generalnie przez taką pomyłkę łatwo sobie skopsać prescaler.
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.
A może przyczyną jest nie wyzerowany licznik preskalera (strona 75): Bit 0 PSR10: Prescaler Reset Timer/Counter1 and Timer/Counter0 When this bit is written to one, the Timer/Counter1 and Timer/Counter0 prescaler will be reset. The bit will be cleared by hardware after the operation is performed. Writing a zero to this bit will have no effect. Note...
A co będzie jeżeli zastosuję prescaler np. 256 ? Oj głupie pytanie.
Sam to pisałeś czy gdzieś znalazłeś ? [syntax=c]TCCR0 &= ~(_BV(CS01) | _BV(CS02)); //clock prescaler = 1[/syntax] Nie wiem ile jest tam jeszcze takich dziwolągów, ale powyższe po resecie nie ustawia prescalera na 1 jak w komentarzu [syntax=c]TCCR0 |= 1<<CS00; //clock prescaler = 1[/syntax]
(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego.
Równie dobrze można dołączyć dodatkowy zewnętrzny prescaler. Skoro sygnał ma już częstoliwość 256 razy mniejszą, to kolejny prescaler będzie na mniejszą częstotliwość, do procka będzie dochodzić jeszcze wolniejszy sygnał.. jeśli chodzi o pomiar samej częstotliwości, to taki zabieg niczemu nie zaszkodzi, a może nawet sprawić, że będzie można mierzyć...
0 Hz wymaga nieskończonego czasu oczekiwania na zmianę stanu. I nieskończonej pojemności licznika. Proponuję ograniczenie wymagań do 0.1 Hz czy 0.01 Hz. Wtedy można obliczyć wymaganą pojemność licznika i zakres. Liczniki w 8515 mają 8 lub 16 bitów i prescalery. To określa zakres zmiany częstotliwości. A częstotliwość kwarcu też jest istotna. Od tego...
Stwierdzenie dotyczące RTC wynika z tego, że timer2 może pracować asynchronicznie z zewnętrznym kwarcem zegarowym. Można mu podać 32768Hz, t2 będzie takim zegarem (lub wynikającym z działania prescalera) taktowany - to jak wykorzystasz timer zależy od ciebie: możesz np ustawić go w trybie CTC przy prescalerze /128, wtedy będzie się przepełniał równo...
Nawet to nic nie daje, cały czas bez zmian: [syntax=c_loadrunner]#define F_CPU1 16000000L void I2C_SetBusSpeed(uint16_t speed)// czestotliwosc taktowania magistrali { speed = (F_CPU1/speed/100-16)/2; uint8_t prescaler = 0; while(speed>255) { prescaler ++; speed = speed/4; }; TWSR=(TWSR & (_BV(TWPS1)|_BV(TWPS0))) | prescaler; TWBR = speed; }[/syntax]
Witam. Wykorzystaj Timer2 w trybie normal, rezonator tzw.zegarkowy 32768Hz pod piny 9 i 10 mikrokontrolera. Prescaler = 256, w rejestrze TCNT2 = 231 wychodzi 5,12Hz.
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....
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,...
Witam. Na forum jestem nowy, ale Atmege8 gryzę już od roku:). Zakładam że czytałeś datasheet'a od Atmega8 i niestety nie udało Ci się zrozumieć.Jeżeli tak to Ci pomogę. Po pierwsze w Atmega8 masz trzy timery/countery: -Timer0 8bit -Timer1 16bit -Timer2 8bit Timer1 i Timer2 możesz wykorzystać jako PWM,gdyż mają wbudowaną taką funkcje. Wiadomo że 16bitowy...
to musial bym stosowac 2atmegi a ja chciałem dac jedna . Prubowałem dac 2timery i rozne prescalery ale wywalał mi bład
Czy ATmega8535 ma tylko mierzsyć napięcie i wysyłać? Jeśli tak to po co taki duży uK do tego? :) Program może wyglądać tak: $regfile = "m8535.dat" $crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 Dim W As Word Config Watchdog = 2048 Start Watchdog Reset Watchdog Config Adc = Single , Prescaler = Auto , Reference = Internal Start...
Proszę zapoznać się z komentarzami w kodzie oraz Datasheet Atmega8. Przebieg generowany ma częstotliwość f = F_CPU/Prescaler/ICR1. Wypełnienie jest równe stosunkowi OCR1/ICR1. Także można niezależnie zmieniać częstotliwość wyjściową przebiegu i jego wypełnienie. Program, który podałem ma wartości dostosowane do obsługi serw i działa w praktyce.
Witam. Przy obliczeniach nie bierzesz chyba pod uwagę prescalera.
Tego się nie konfiguruje. Config Adc = Single , Prescaler = Auto , Reference = Avcc tylko włącza przetwornik i konfiguruje go ("go" czyli przetwornik a nie kanał). Ale kanału się nie czepia bo nawet nie ma takiej opcji. Kanał podaje się dopiero przy odczycie za pomocą Getadc. No chyba że używa się trybu Free Running, ale w takim przypadku polecenie...
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...
//timer 1 16bit konfiguracja (ICP1) TCNT1=0; //ustawienie poczatkowej wartosci timera 1 TCCR1B |= (1<<ICES1); //pomiar na narastajacym zboczu TIMSK |= (1<<TICIE1) | (1<<TOIE1); //zezwolenie na przerwanie od ICP i od overflow TCCR1B |= (1<<CS12) | (1<<CS10) ; //prescaler 1024...
Prawie. Cytat z datasheet'a: (opis bitu PSR w SFIOR) When this bit is written to one , the Timer/Counter1 and Timer/Counter0 prescaler will be reset. The bit will be cleared by hardware after the operation is performed. Writing a zero to this bit will have no effect.
Pin T0 jest jedynym zewnętrznym źródłem impulsów dla licznika 0. Możesz tym licznikiem ewentualnie zliczać impulsy zegarowe, albo zegarowe podzielone przez prescaler. Procesor kosztuje ok 6zł, to chyba najlepsze rozwiązanie :)
Mega88 - nie bezpośrednio. Trzeba zrekompilować soft z ustawieniem na mega88 (trza zmienić typ proca w makefile). Co do fuse, to nie jestem pewien, nie czytałem dokładnie PDF'a do megi88, ale powinno być podobnie. Chociaż nie wiem czy da się w mega88 ustawić clock na 2MHz. Jak nie to albo użyć 1MHz, albo dopisać do programu ustawienie po starcie prescalera...
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,...
a bym jeszcze resetował preskaler T0/T2 . Resetował? Tzn ustalał na nowo?? Przecież on się nie zmienia. Zumek miał na myśli resetowanie licznika preskalera, a nie ustawień preskalera. Zobacz w ATmega8 bit PSR10 i rysunek Prescaler for Timer/Counter0 and Timer/Counter1 Patrz: http://mikrokontrolery.blogspot.com/2011...
TIMSK ^= (1 << OCIE1A); - powoduje zmiane stanu pinu na przeciwny, jesli chcesz wyzerowac to stosuj TIMSK &=~ (1 << OCIE1A); a jesli ustawic to TIMSK |= (1 << OCIE1A); Nastepne - to, ze blokujesz przerwania od timera nie znaczy, ze timer w tym czasie nie liczy - w efekcie pierwsze przerwanie wcale nie nastepuje po 1778 cyklach...
Moje pytanie brzmi czy mogę pogodzić precyzyjny odczyt z ADC (z uśpieniem) i dokładny timer czy muszę wybrać albo precyzyjne ADC i niedokładny timer albo standardowy odczyt z ADC i dokładny timer? Timer1 jest taktowany przez prescaler z CLK_I/O, a podczas 'ADC Noise Reduction' , ten zegar jest nieaktywny/ wyłączony. Patrz tabela14 w datasheet; w której...
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...
Daj: Config Adc = Single, Prescaler = Auto , Reference = Internal Ale niekoniecznie ot musi byc to.
Jedna uwaga tak na marginesie. Chyba wiem z jakiej książki korzystał kosmo90 i niestety jest tam błąd. Instrukcja Load Timer ma odrobinę inną składnię. Powinno być: Load Timer0, 250 czyli przecinek a nie znak =. Można ewentualnie napisać Timer0 = 5 co da taki sam efekt. A co do sposobu ładowania Timera to w pełni podzielam zdanie M.S. Taki trick poprawi...
1. dodaj timer programowy 2. pomyśl, jaki jest związek wartości timera, ilości przerwań, które wystąpią, częstotliwości zegara, prescalera i czasu jaki upłynął...
49999 dla kwarcu 8MHz i prescalera 8 :) żeby wszystko tak mięciutko szło :D częstotliwość żądana 10Hz
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
Używam atmege8 i korzystam ze sprzetowego TWI. Czyli gdybym zasilił logikę i LCD z 5V nic złego nie powinno się stać? Ale jak sądze wtedy te kondensatory byłyby nie potrzebne, a do VLCD należałoby podać również 5V? edit: Podłączyłem zwykły wyświetlacz na HD44780 i wyświetlam zawartość rejestru TWSR. Po wysłaniu adresu mam kod 0x20- wysłano adres, nie...
Z timerem2 się pomyliłem, myślałem że jest 8 bitowy ;-). Przejrzałem DS i jak byk jest napisane: "Two 8- bit Timer/Counters with Separate Prescaler, one Compare Mode One 16- bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode" Atmega8 ma 2 wejścia zewnętrznego interruptu, INT0(PD2) i INT1(PD3), bramki są 4, jak "odpowiednio kombinować"...
Korzystam z wbudowanego generatora PMW w wymienionym w tytule mikrokontrolerze. Chcę na wyświetlaczu LCD podawać aktualny czas trwania jedynki. Nie wiem niestety czy wykombinowałem dobry wzór. Prescaler mam ustawiony na 64. Liczę tak [syntax=c] double pomo = 4000000/ (OCR1A*64); pomo = 1/pomo; // obliczam okres pomo = pomo/2; //obliczam czas trwania...
Spróbuj tak zainicjalizować [syntax=basic4gl]Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc[/syntax] I dorzuć jeszcze [syntax=basic4gl]Ddrc = &B000000[/syntax]
Jaka jest maksymalna częstotliwość pracy kwarca wewnętrznego Atmegi8? ATmega nie ma w środku kwarc u , tylko oscylator RC, to tak gwoli ścisłości. Mam ustawione 4Mhz i kiedy ustawiam prescaler w timerze 16bitowym na 64 (TCCR1B|=1<<CS11|1<<CS10;) tak aby przerwanie spowodowane przepełniniem timera było wywoływane mniejwięcej co 1s 4000000/64/2^16...
witam wszystkich Dopiero zacząłem przygodę z programowaniem i pojawił się problem Chciałem zrobić zegar na Atmega8. Przepisem program z książki (wiec domyślam się zę nie ma błędów) Zrobiłem prosty układ na płytce stykowej. Do Atmegi podpiąłem kwarc 8MHz dwa kondensatory po 27pF i i wyświetlacz LCD 2x16. Program ruszył od razu ale za wolno chodzi sekunda...
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 'timer '16MHz 16000000(16MHz)/256(Prescaler)=62500 i odejmij jeden Config Timer1 = Timer , Prescale = 256 , Compare_a = Disconnect , Compare_b = Disconnect , Clear Timer = 1 Enable Compare1a : On Compare1a Timer1_isr : Compare1a = 62499 '1s (at)16MHz...
Zmień prescaler dla SPI i po sprawie. Chyba że korzystasz z programowego SPI to wstaw kilka delay_us(x) i również po sprawie...
Daj taką konfiguracje: Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56 Na pewno podajesz napięcie na kanał 0?
AT90S2313 nie posiada przetwornika analogowo-cyfrowego więc do mierzenia napięcia stosowano komparator. Ty masz ATmega8 który ma owy przetwornik - nim najlepiej mierzyć napięcie z LM35. Poza tym ATmega8 ma tylko jeden komparator. Dim w As Word 'właczenie przetwornika CONFIG ADC = single, PRESCALER = AUTO, REFERENCE = internal w = Getadc(0) 'odczyt...
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...
czyli zawsze te najbardziej znaczące bity ? dla 4 bitów rozdzielczości będzie wyglądało tak jak poniżej ? Wersja 1: [syntax=c]int pomiarADC(uint8_t index) //zakres<0,10> oznacza ile bitow chcemy { ADMUX &= ~(1 << ADLAR); // zeruje ADLAR setMux(index);// ustawia odpowiedni kanal ADCSRA |= (1 << ADSC);// start ADC while (ADCSRA &...
$fegcrystal? :wink: Musisz zmienić prescalery timerów, było o tym pisane już ze czterdzieści razy w tym temacie, racz poczytać.
Atmega8 Program jest dokładnie taki jak w pierwszym poście, tylko przed ostatnią klamrą dodałem [syntax=c] while(1); [/syntax]
http://mikrokontrolery.blogspot.com/2011... Widzi kolega? Są tam wszystkie niezbędne informacje jak zacząć tylko trzeba tą stronę uważnie PRZEJRZEĆ!
No dobrze ,to może tak, jest jakieś "lepsze " ustawienie ADC czy w ogóle uP atmega8 ew. atmega32 aby obrabiał wynik z f =200Khz ? czy po prostu jak ustawię w sofcie bez prescalera to będzie na maxa f ADC ? Bo chodzi mi o to by dało sie widzeć przebiegi np. kwadratowe nawet z częstotliością 400-500Khz .
(i nie piszcie mi o początkowym ustawieniu TCNT bo to jest wtedy niedokładne i było używane w średniowieczu). Nie opowiadaj bzdur. Jeżeli jest niedokładne, to zreferuj na ile jest to niedokładne i czym ta niedokładność jest powodowana. Czy w którejś metodzie/trybie pracy gubi się impulsy albo zabiera więcej czasu na ich zliczenie? A z tym 'średniowieczem'...
bo wynik dzielenia nie jest przeciz bez reszty to prawda .... Powinno byc: 8000000/256/250/125 = 1 sek no faktycznie...bez reszty...tylko jak to uzyskać.....bo widzę, że robisz tu 3 dzielenia, a jak dotąd to zawsze dzieliłem 2 razy: raz przez prescaler i drugi raz przez wartośc maksytmalną timera0
Ten silnik ma przekładnię i dla operacji pełnych kroków ma ich 2048 na pełen obrót a dla kroków "połówkowych" to już nawet 4096. To jest prosta wielokrotność rozdzielczości ADC (1024) więc nawet przeliczanie tego na volty jest niepotrzebne. Nie wiem jaki zakres potrzebujesz, ale jak wykonasz dwa kroki na każdy punkt ADC to od 0V do 5V to będzie pełen...
za pomocą zwykłych timerów nigdy nie uzyskasz dokładnie jednej sekundy ponieważ są zbyt mało dokładne i timery niekiedy sie "spóźniają" bo uC ma też inne sprawy na głowie. Sytuacja poprawia se jeśli podłączymy zewnętrzny oscylator, a najlepiej podłączyć kwarc 32768Hz i taktować nim tylko Timer2 ustawiamy ASSR|=1<<AS2; i dajemy prescaler 128 i...
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 ?
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
Witam! Polecam ATmega8: Features: • High-performance, Low-power AVR® 8-bit Microcontroller • Advanced RISC Architecture – 130 Powerful Instructions – Most Single-clock Cycle Execution – 32 x 8 General Purpose Working Registers – Fully Static Operation – Up to 16 MIPS Throughput at 16 MHz – On-chip...
Zmieniłem TCNT0 = 0x00; ustawiłem prescaler na 1024 ale dalej nie działa. Według moich obliczeń dioda powinna mrugać co 0,26 sek. Czy mam jakiś jeszcze błąd w kodzie, czy czegoś nie umieściłem?
(at)emarcus: O ile się nie mylę, przy prescalerze 64 i cżestotliwości 8MHz timer0 będzie miał skok co 8us, czyli licznik bedzie przepełniał się co 2,048ms, więc do poprawnego odliczenia 1s w obsłudze timera należy załadowywać do niego Timer0 = 6, i dodać licznik, który 500 razy zliczy przepełnienia. A co do tych parametrów, to zawsze wstawiałem domyślne...
zrób to mniej więcej tak: .INCLUDE "m8def.inc" .cseg ; początek segmentu pamięci programu .org 0 rjmp RESET ; wektor ZEROWY (po resecie) .org OVF0addr ; wektor przerwania od przepełnienia Timera0 rjmp Przerwanie_T0 ; i tu właśnie skok do obsługi tego przerwania RESET: LDI R16, HIGH( RAMEND) OUT SPH, R16 LDI R16, LOW( RAMEND) OUT SPL, R16 ; porządek...
jeśli ustawie fusy na zewnętrzny kwarc 16MHz czyli tak jak jest w układzie (1111) to wyświetla mi tylko połowę widma tj. 8lini od lewej. Problemem jest przetaktowany przetwornik ADC, widać że w niektórych megach8 daje radę a w niektórych nie... Znajdź w listingu następujący fragment Sample_h: 'pobiera 32 próbki z częstotliwością 44kHz Config Adc...
Witam Mam problem ze zmuszeniem licznika T0 w bascomie do pracy z częstotliwością większą niż 25kHz. $regfile="m8def.dat" $crystal="8000000" Config portd.0= output Config timer0=timer,prescaler=1 Enable interrupts enable timer0 start timer0 on timer0 nosna do loop end nosna: load timer0,1 toggle portd.0 return Program napisany...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
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...
Ja bym dał TWBR = 8; Bo TWPS to jest wartość prescalera a nie bitów. Też się na to kiedyś naciąłem i podnosiłem do potęgi 0. A schematu nie rozumiem- zwora między zasilaniem a masą? Kolektor tranztstora NPN na masie? Podciąganie za buforem? Wyjmij 244 i sprawdź oscyloskopem czy coś wychodzi z procesora.
No właśnie to chce osiągnąć, czyli sterowanie w okresie 4000ms. Do detekcji przejścia przez zero mam płytkę, którą zaprojektowałem w eaglu i wytrawiłem, po sprawdzeniu oscyloskopem daje ładne szpilki. To co jest praktyczne i fizyczne nie stanowi dla mnie problemu, jednak jak przyszło do programowania to się zaczęły troszkę schody. Nie ukrywam że potrzebuje...
Konfiguracja portu C nie ruszona. Zaraz zobaczę, jak zachowa się po podzieleniu na 1023 tylko. Dodano po 8 Zmieniłem konfigurację: Config Adc = Free , Prescaler = Auto , Reference = avcc Wynik podzieliłem przez 1023 i na każdym kanale otrzymuję 0,25V
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.
Karol966: prawdopodobnie dlatego ;] Config Adc = Single , Prescaler = Auto , Reference = Internal po prostu autor używa wewnętrznego źródła odniesienia 2,5V a nie napięcia zasilania jako napięcia referencyjnego
Ad1,3. Napięcie z akumulatora koniecznie musisz puścić przez dzielnik napięcia np. w stosunku 1:3. Gdy napięcie na akumulatorze wyniesie 12V to na wyjściu dzielnika masz 4V. Dobrze byłoby także dodać diodę zenera na końcówkę ADC. Ad2,4. Niestety źle, ma być podłączone do nogi 15(OC1A). Żarówki daj między kolektor a zasilanie. Po za tym nie wiem jakiej...
crazy_phisic : Zauważ, że przebieg na wyjściu to połowa częstotliwości przepełniania timera. kaczy1n : Moja propozycja, to ustawić prescaler na 1 i nic nie ładować do timera - będzie się przepełniał co 256 cykli zegara. No i należy wybrać poprawne źródło zegara.
O, widzę, że ktoś oprócz mnie również ma ten problem :D Przede wszystkim musisz uwzględnić ten pin SS, o którym wspomniałeś, bez tego ani rusz. Za każdym razem gdy coś wysyłasz po SPI musisz ustawiać SS na zero, a po wysłaniu SS na 1. Warto również zajrzeć do bibliotek, które udostępnia Atmel, jest to nota AVR319, do pobrania stąd [url=http://www.atmel.com/devices/ATTINY...
Ok, a jak to się będzie miało do samego programu napisanego na 1Mhz ? Nigdy jeszcze z zewnętrznym kwarcem do czynienia nie miałem. W jaki sposób należy programowo z niego skorzystać? Normalnie Timer2 jest taktowany z tegosamego zegara co microkontroller. Aby uzyskac taktowanie z rezonatora 'zegarkowego' podłączonego do pinów XTAL1/XTAL2, potrzebujesz...
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...
Witam Widzę, że temat z Timerem / Counterem w uC-ach ATMELa był wałkowany przynajmniej kilkadziesiąd razy,przeczytałem kilkanaście tematów - aczkolwiek nie znalazłem nigdzie uporządkowanej i miarodajnej odpowiedzi na kilka z moich pytań dot. Timera / Countera. Otóż chciałbym się dowiedzieć 1. jakie możliwości (czytaj: "co ten timer / counter potrafi...
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...
Jeżeli można wiedzieć o ile będzie wiesza częstotliwość? (+/-) i jakie sa szanse na spalenie atmegi, ew. zawieszanie się programu? Dodano po 16 No i jeszcze kilka pytan.. czy przy wpisaniu 255 wartość zapisuje się w pamięci ulotnej czy nie? tzn chodzi mi czy po ponownym podłączeniu uC do prądu częstotliwość wróci? jeżeli nie jak później kalibrować...
$regfile = "M8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 32 '---------------------------------------... Dim Adc_data As Integer Dim S As Single Dim L As Long Dim Text As String * 30 '---------------------------------------... Portb = &B00000000...
Na elektrodzie było kilka(naście?) zegarków na ATmega8 w dziale DIY, z czego kilka widziałem oprogramowanych w BASCOM-ie. Zajrzyj na tamte tematy, na pewno ci się rozjaśni. Zegarki lepiej taktować rezonatorami zegarkowymi, bo takowe są do tego najlepiej przystosowane jakby nie było. Chociażby z racji częstotliwości 32768 Hz, które jest 15-tą potęgą...
Przepraszam że odkopuję temat ale miałem identyczny problem który po długich zmaganiach udało mi się rozwiązać, więc chciałem się z nim podzielić. Rozwiązaniem jest ręczne ustawienie rejestrów specjalnych odpowiadających za konfigurację PWM. Tak ja korrus666 napisał Bascom używa pewnie tych samych rejestrów do obsługi LCD i PWM z Timer2. Usuń linijke:...
A czego miałem szukać w nocie katalogowej? Ewentualnych odpowiedzi na ewentualne pytania dotyczące kodu... U mnie CALL oznacza rcall. OK, ale i tak bez ustawienia wskaźnika stosu się nie obędzie. Oto poprawna i sprawdzona wersja na timerze : #define F_CPU1000000 .nolist #include <m8515def.inc> ; Prohibits use of non-implemented instructions (ATmega8515)...
Dzięki za szybką odpowiedź. Co do precyzji pomiaru to myslę, że napięcie stabilizowane LM7805 wystarczy. Proszę jeszcze o zweryfikowanie programu do odczytu wartości napięcia. Oczywiście wynik będzie przeliczany na odpowiednią wartość. $regfile = "m8def.dat" $crystal = 8000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Wart_ac...
Dziękuję Panowie, problem prawdopodobnie rozwiązany, odczyty są prawidłowe. Oto kod, dodałem while(...): [syntax=c]int ADCsingleREAD(uint8_t adctouse) { ADMUX = adctouse; ADMUX |= (1 << REFS0); // AVcc jako referencja ADMUX &= ~(1 << ADLAR); // 10 bit resolution ADCSRA|= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); //...
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...
$regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Przet As Word Dim Dziesiatki As Integer Start Adc Do Przet = Getadc(0) Dziesiatki = Przet / 127 If Dziesiatki = 0 Then Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Elseif Dziesiatki...
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...
Tak nie koniecznie bo na przykład attiny13 nie ma portu D, brakuje mu także rejestru GICR, Nie wiem dlaczego taki prescaler, który zresztą ustawia się w innym rejestrze oraz taka liczba do licznika 8 bitowego (0-255):[syntax=c]TCCR0A |= (1<<CS02);//Prescaler 256 OCR0A = 3906; // dla 1MHZ i przerwania co około 10ms[/syntax]Obsługę przerwania należy...
bez konieczności zliczania przepełnień. Podobnie, odmierzanie czasu 1 sec. stosując Timer1 również nie wymagałoby zliczania przepełnień. Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dodano po 30 w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość...
Racja zumek. Nie zrozumiałem tam ostatniego zdania. Za dużo negacji dla mojego mózgu :). Chodzi mi o zdanie, w którym piszą aby przed wyczyszczeniem (wpisaniem 1) zrobić co trzeba z rejestrami. --edit Właśnie się zaprzyjaźniłem z TWSR. Na początku aż mną rzucało bo miałem inne wartości. A to wszystko, że nie zauważyłem, iż wcześniej został ustawiony...
Ostateczeni zrobiłem to w ten sposób: //ustawienie przerwania cli ldi r16,(1<<CS11) ;ustawienie preskalera na 8 out TCCR0,r16 ldi r16,(1<<TOIE0);ustawienie przerwania gdy licznik taki sam jak A out TIMSK,r16 ldir16, 0xff out TCNT0, r16 sei // nop bo prescaler i trzeba poczekac kilka cyklow w zaleznosci od niego nop nop nop...
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...
Witam Mam pytanie : Czy procek Atmega8 można tak skonfigurować i napisać program, aby jednocześnie można było obsługiwać następujące sygnały na porcie PC: - AC0(adc0), AC1(adc1) - czytać wartości analogowe, - na AC2 - zrobić obsługę 1Wire, - na AC4(SDA) i AC5(SCL) obsłużyć komunikacje I2C. może znacie linki przykładów, gdzie tak procek jest skonfigurowany....
prescaler atmega8 prescaler atmega prescaler bascom
kompresor nieszczelny ds100 delphi piekarnik elektryczny termostat
Krótkoterminowy zespół rozrządu paliwa - czujnik 2 Samsung BN44-00339A Power Supply Board Issues and Fixes