Skąd wziąłeś pomysł na wstawki z FLASH->ACR? Czytam RM0401 Jest dedykowany do tego rozdział: 3.4.1 Relation between CPU clock frequency and Flash memory read time Latency zależy od częstotliwości taktowania oraz napięcia zasilania, tak w skrócie. Co do ustawień zegara dla STM32 to warto zapamiętać sobie schemat działania, który wynika bezpośrednio...
[syntax=c] int main (void) { ADMUX |= (1<<REFS0); ADCSRA |= (1<<ADEN)|(1<<ADPS2); uint16_t pomiar(uint8_t kanal); uint8_t DutyCycle; uint16_t Ton; DDRD |= (1<<PD5); TCCR1B |= (1<<WGM13); TCCR1A |= (1<<COM1A1); TCCR1B |= (1<<CS10); //prescaler ICR1 = 100; //wartosci startowe chwilowe OCR1A = 60; while(1) { pomiar(0);...
#include <avr/io.h> #define F_CPU 16000000L #include <util/delay.h> #include <float.h> #include <inttypes.h> #include <math.h> #include <stdio.h> #define stop1 PORTA|=(0<<PA3); PORTA|=(0<<PA4) #define lewo1 PORTA|=(0<<PA3); PORTA|=(1<<PA4) #define prawo1 PORTA|=(0<<PA4);...
Witam, mam problem z ustawieniem przerwania od timera0 na atmega8, jestem początkujący jeśli chodzi o assembler... Problem leży w tym że, uP jest taktowany z wewnętrznego zegara 1MHz, i jeśli mam ustawiony prescaler na 8 czyli rejestr TCCR0 na 2 to powinienem otrzymać obsługę przerwania co 8us a na oscyloskopie otrzymałem igiełkę co 2ms;/ nie wiem co...
"Nowe" czyli od Xmega i nowsze AVR mają mozliwość priorytetu przerwania. Poprzednie miały ustalony. Nie wiem jaki to AVR, ale jeśli ustawisz Timer i przerwanie od niego to jak będzie w przerwaniu to oczywiście zauważy potem flagę przerwania z USART, ale może być za późno, dlatego jeśli nie trzeba, to się przerwań od wszystkiego nie uruchamia. Rzadko...
Witam. Prescaler jest to dzielnik częstotliwości. Jeżeli użył byś kwarcu 8 MHz oraz timera 0 przepełnił by ci się on 31250 razy.Aby zmniejszyc częstotliwość wyrzucanych przerwań używa sie prescalera. Np ustawiając prescaler 64 uzyskasz przerwanie co 0,00204800 s. Co do drugiego pytania to w BASCOM'ie licznik się zeruje chyba że wpiszesz mu jakąś wartość....
Witam, mam problem ze sterowanie sygnałem PWM. Program służy do zaczytywania wartości częstotliwości z czujnika TCS3200 . W zależności od koloru jaki wykryje czujnik ma nastąpić zmiana wartości wypełnienia PWMa. W tym momencie dioda, którą mam podłączona pod wyjście OC2 cały czas świeci tak samo, niezależnie od wartości OCR2 . Próbowałem na różne sposoby...
Zamieszczam kod źródłowy programu chronokomparatora. Jest on napisany w języku GreatCowBasic. Chętni do przeniesienia programu z procesora PIC16F84A na inny procesor, np. na Atmegę, oczywiście mogą to zrobić, ale nie tak prosto. Nie wystarczy zmienić deklarację procesora. Podczas pisania uwzględnić musiałem specyfikę procesora związaną z zegarem procesora,...
Przeciwnik : PIC24HJ128GP502 obudowa 28 nóżkowa DIP wąska . Czemu ten model ?? ano ma na pokładzie dosyć bogate peryferia m.in CAN , DMA , zegar RTC i to mnie zachęciło Dokładna specyfikacja : microchip.com/wwwproducts/en/PIC24HJ128G... Wybrane uzbrojenie przeciwnika : - architektura 16 bitowa (1 cykl na jedną instrukcję) - CPU Speed (MIPS) 40 - pamięć...
Przeczytaj dokładnie opis w nocie. Wyraźnie pisze, że pola EVSEL wybierają kanał Event System współpracujący z ADC, natomiast pola EVACT określają co ten kanał robi - NONE - nic nie robi, czyli EVSEL jest bez znaczenia, CH0 - kanał wybrany przez EVSEL wyzwala konwersję, SYNCSWEEP - robimy FLUSH + wyzwalamy konwersję. Zwyczajnie myślałem, że skoro wybieram...
Witajcie moi drodzy Oto trzecia część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie najpierw krótko omówię różne konfiguracje oscylatora PIC18F2550 - oscylator wewnętrzny (internal oscillator), zewnętrzny (zegarowy i kwarcowy), funkcjonalność PLL ( Phase Locked Loop ), itp.,...
Źle sobie popatrzyłem tzn miałem źle skomentowany kod - poniżej urywek tego z czego ja korzystam w swoim programie: No to w końcu na ile ten prescaler jest ustawiony? e marcus
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...
Dokładnie aby wyliczyć potrzebny czas potrzebujesz pełnego wzoru: T = 1/(fcpu/PRESCALER/(65536-LICZNIK)) gdzie: fcpu - taktowanie procesora, PRESCALER - stopień podziału preskalera, LICZNIK - początkowa zawartość licznika. T = 1/(1000000/1024/(65536-6942)) = 60.000256s Wszystko odnosi się do licznika 16-bitowego. Dla licznika 8-bitowego wzór jest podobny:...
Zgadzam się z przedmówcą. Fusebitów raczej nie dotykaj. Ew. EESAVE. Rdzeń możesz taktować bezpośrednio z RC2MHz (domyślnie włączony), a jeżeli potrzebujesz innej częstotliwości, to możesz uruchomić RC32MHz (wystarczy ustawić bit RC32MEN) i poczekać na RC32MRDY. Przełączenie zegara jest zabezpieczone CCP 0xD8. Jeżeli 32MHZ nie pasuje, to PLL można dostroić...
Witam. Robię zegar na ATmedze8L. Chciałbym go taktować kwarcem zegarkowym (tak, nie chcę podłączać pod timera tylko chcę taktować tym cały układ). Szukałem ale nie znalazłem nigdzie jednoznacznych opisów dla takiego kwarca. W nocie jest napisane: To use a 32.768kHz watch crystal as the clock source for the device, the Low-frequency Crystal Oscillator...
Witam, mam problem z uruchomieniem programu do zliczania impulsów na T1 przez 1 sekundę. Wyświetla mi ciągle zero. Co źle ustawiłem z Timerami ?? Atmega 32 [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba...
Dopisałem obsługę timer1 do programu z przerwaniem co 1s Cykle pracy (włącz na 10 min i wyłącz na 3 godz) nie mają nic wspólnego z porą dnia (określona godzina ) lub kalendarzem i nie są mi potrzebne chyba do porównania z PCF.Myślałem raczej o zastosowaniu Timera1 który będzie odpalał przerwanie co 1s. Przerwania będą zliczane i wrzucane do wora co...
Witam. Jak zwykle kiedy nie mogę sobie z czymś poradzić muszę zaczerpnąć porady na forum. Tak jest i tym razem. Otóż zbudowałem sterownik co który między innymi steruje też zaworem c.w.u. Zaworem "kręci" silnik dc a za rozpoznawanie pozycji odpowiadają dwie krańcówki mechaniczne zwierające do masy. Silnik ma hamulec który po odłączeniu zasilania zwiera...
(at)Jakub17 Co do prescalera musisz tylko pamiętać o jednym - w chwili odpalenia licnzika, stan preskalera musisz przyjąć za nieokreślony. Wynikają z teog konsekwencje: - zniekształcenie pierwszego generowanego przez timer impulsu, - wprowadzenie losowego opóźnienia o czasie trwania zależnym od preskalera (np. ustawiony na 64 wprowadza losowe opóźnienie...
Może inaczej, chciałbym aby działało to jak arduino tzn. prędkość silników DC regulowana z zakresu od 0 do 255, standardowo na pinach PWM w arduino jest częstotliwość około 500Hz. Jakie wartości powinienem dać na Period, Prescaler oraz na Pulse aby to osiągnąć. Gdy sugerowałem się pewnym kursem ustawiając Prescaler na 4999 i Period na 99 a następnie...
Posiadam przykład kodu na atmega16 (coś mnie ten procek prześladuje :/) i chcę to przerobić na atmega128. Pod atmega16 wygląda on następująco: .cseg RESET:cli clrr30 outEECR, r30 outMCUCR, r30 ; watchdog na ok.1s ldir31, (1<<WDE) | (1<<WDP2) | (1<<WDP1) outWDTCR, r31 ; inicjalizacja stosu ldir31, high(RAMEND) outSPH, r31 ldir31, low(RAMEND)...
Witam. Tutaj masz gotowy przykład ze stronki Propoxu, u mnie z tego co pamiętam działało OK, teraz jednak nie używam biblioteki CrossWorka tylko liba od ST #include <targets/STR71x.h> void irq_handler(void) __attribute__ ((interrupt ("IRQ"))); static int count; #define IVECT 19 #define SIR(n) (*(&EIC_SIR0...
Witam ponownie, znalazłem wcześniej na elektrodzie program zegarka na LCD 2x16, który niestety nie działał prawidłowo (migały niezrozumiałe znaki na lcd). W celach edukacyjnych postanowiłem przerobić procedury obsługi wyświetlacza, co dało efekt końcowy jaki teraz mam czyli działający program zegara na LCD, ale jest jeden problem. Zegar odmierza 1 sek...
Jeśli podłączysz zewnętrzny kwarc, musisz zmienić fusebity, dzięki czemu uC będzie chodził z tego kwarcu - to będzie główne źródło taktowania. Dalej po prostu wybierasz prescaler /1: timer1 zawsze pracuje w oparciu o to samo źródło co rdzeń (z wyjątkiem gdy zlicza impulsy z wejścia IC1) więc nie występuje problem wyboru źródła. Wybranie prescalera /1...
Program który przedstawiłeś nijak się ma do tego co chcesz osiągnąć. Nie wiadomo co to za zmienna Time1 i po co jest porównywana z jakimiś dziwnymi wartościami. Zacznij może tak. Prescaler=64 to za mało żeby odmierzyć dwie sekundy - musi być co najmniej 256. Skoro impulsy przychodzą na PD.3 to aż się prosi żeby wykorzystać przerwanie Int1. W przerwaniu...
Pogubiłem się. W książce jest napisane, że przerwanie generowane będzie w momencie doliczenia do TIM_Pulse, ale z eksperymentu widzę, że częstotliwość generowania przerwania zależy w tym przypadku od prescaler + period (oraz oczywiście hclk). Co w takim razie ustawia TIM_Pulse? Dodano po 35 No i po uruchomieniu mam parę szybkich mignięć, a potem się...
Zgadza się, aby policzyć ile czasu zajmie wykonanie kodu potrzeba kodu maszynowego (napisałem to w pierwszym poście). Ja będę pisał w C i tylko zobaczę sobie na listing programu gdzie jest to przetłumaczone na assemblera i wprowadzę odpowiednią poprawkę (zmiana wartości timera) do kodu w c. Chce precyzyjnie odmierzać czas do próbkowania wejścia z modułu...
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...
Witam, Wydaje mi się iż zapisuje wszystko poprawnie z datasheet jednak coś jest niepoprawnie... Wiem sprawa banalna ale za pomoc bede wdzieczny. [syntax=c] #include <avr/io.h> // definicja IO #include <avr/interrupt.h> // dolaczenie naglówkowego potrzebnego do obsl. przerwan #include <util/delay.h> // proste opuznienia // dioda LED...
Udało mi się między czasie rozwiązać samemu problem. 3 PWMy takie same potrzebne mi są do regulacji oświetlenia RGB. Oto funkcja inicjująca PWMy: [syntax=c]void PWM_Init(void) { _1(TCCR1A,COM1A1);//Clear OC1A on Compare Match, set OC1A at BOTTOM _1(TCCR1A,COM1B1);//Clear OC1B on Compare Match, set OC1B at BOTTOM _1(TCCR1A,WGM10);// _1(TCCR1B,WGM12);//Fast-PWM,...
Witam, Mam taką funkcję: [syntax=c]int init_pwm(int pwm_freq) { int clk = 72e6; // 72MHz -> system core clock. This is default on the stm32f3 discovery int tim_freq = 2e6; // in Hz (2MHz) Base frequency of the pwm timer int prescaler = ((clk / tim_freq) - 1); int pwm_period = tim_freq/pwm_freq; // 2MHz / 200Hz = 10000 int ms_pulses = (float)pwm_period...
Witm, spróbuj takich nastaw: SJW=1tq BS1=2tq BS2=3tq Prescaler=48 CAN_SJW-1tq+CAN_BS1-2tq+CAN_BS2-3tq=6*tq CAN_Prescaler= 36MHz/(125kbps*6)=48 Pozdrawiam R.L.
Jak w temacie, mam taki kod, ma za zadanie wyświetlić wynik w 8bit, gdy kliknę w przycisk to z danego pinu Xmega, albo z innego pinu. Niestety gdy kliknę raz w jeden to pokaże prawidłowo, potem z drugiego też, ale potem już nie zmienia tych ustawień. Jest to niezbędne bo co jak jeden woltomierz będzie pokazywał to samo co inny który miał pokazać inny...
Więc Twój zegar ma 8MHz = 8000khz = 8000000 Hz. Ustawiłeś prescaler na 256, więc timer0 jest taktowany zegarem 31250Hz. Oznacza to, że tyle naliczy w ciągu sekundy. Ponieważ Twój timer jest 8 bitowy, jego max wynosi 255. To znaczy, że w ciągu sekundy będziesz miał 122 przerwania. Możesz do tylu inkrementować zmienną, po czym zmieniać stan na PORTD (póki...
31249 jest dla preskalera 256 i 1 s i dla częstotliwości wyjściowej 1Hz , natomiast 15624 jest też dla praskalera 256 i 1s ale dla częstotliwości 2Hz To dopiero miszmasz... Trzeba uporządkować...moja wersja to przerwanie od timera (gdy wartość rejestru OCR1A zrówna się z stanem licznika) co 1s (1Hz). Przy generacji przebiegu(a więc zmieniając stan...
Próbuję zgodnie z DS ustawić częstotliwość APB1 na 42MHz. W związku z tym, że AHB ma zegar 84MHz należy zastosować dzielnik /2. [syntax=c]RCC->CFGR = (8<<16) | (4<<10) | 2;[/syntax] Niemniej ustawienie tego dzielnika w rejestrze CFGR na 2 nie przynosi skutku - APB jest tak samo taktowane jak przy dzielniku 1 czyli zegarem 84MHz. Dopiero...
Witam Program dokonuje pomiaru temperatury na jednym wejsciu ATmega8, nastepnie przełącza się na inne wejście, dokonuje pomiaru który jest przeliczany na kąt ustawienia wału w silniku krokowym. Zmiany kąta dokonywane są za pomocą potencjometru. Wyniki pomiarów temperatury oraz kąt obrotu silnika wyświetlane są na wyświetlaczu LCD. Program działa. Pytanie...
Chyba tryb PWM, Phase Correct nie jest dla tych serv. Zmieniłem poniższy kod i serva przy ICR1 = 4999 zaczynają drgać aż podskakują na biurku, przy waratości 2000 już nie ale w żadnym wypadku nie da się kontrolować kierunku obrotów ani szybkości. Z powyższej informacji wynika, że nie w pełni poprawnie interpretujesz proces (mechanizm) tworzenia fali...
Cześć, mój pierwszy kontakt w mikrokontrolerami po kilku latach. Próbuję ustawić PWM na ATTINY20 SSU (taki akurat był w elektronicznym). Mój kod na podstawie przykładów z sieci w innymi mikrokontrolerami i notą PDF, w ogóle to bardzo ubogo wszędzie o tym procesorze z niewiadomych mi powodów. [syntax=c]int main(void) { DDRB |= (1 << PB2) | (1 <<...
Normalnie na początku jest reset i to kasuje zmiany programowe. Więc też nie powinno się dać w ten sposób zablokować. Też tak myślałem, ale w praktycznych próbach wyszło że jednak się da zablokować kostkę programowo. Ściślej mówiąc, da się programowo zmienić konieczne warunki programowania, by wyszły poza możliwości USBasp i może też innych programatorów....
W sobotę o tej porze mogę się mylić :P W tabelce pisze chyba wyraźnie, że dla tego trybu CTC który ustawiłeś to okres ustala się w OCR1 A i raczej powinieneś wtedy uruchomic przerwanie od OCIE1 A i oczywiście wskazać adekwatny wektor przerwania. Sprawa 1 sekundy jest prosta. (8MHz/256)-1= 31249 W tym małym Timer0 jesli miało by być rowno 4ms to przy...
No tak masz rację. Ale powiem Ci, że wartości 99900 Hz w ten sposób w ogóle nie da się tutaj osiągnąć przy zegarze 16 MHz i z użyciem jednego timera ;) Na pewno? (!) Popatrz więc na fragment Datasheet (dolna częśc str.72) "For generating a waveform output in CTC mode, the OC0 output can be set to toggle its logical level on each compare match by setting...
[syntax=basic4gl] Config Adca = Free , Convmode = Unsigned , Resolution = 8bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 512 , Sweep = Ch0123 , Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = &B00111000 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = &B00111000 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = &B00111000 , Ch3_gain...
Witam. Programuję sobie urządzenie w którym mam zajęty cały PORTB a potrzebuję podłączyć przycisk tak aby jego przyciśnięcie wyzwalało przerwanie. Wymyśliłem, że użyję do tego pinu T1CKI z którego sygnał użyję do przepełnienia timera1 ustawianego każdorazowo na wartość 0xFFFF. Timer1 inicjalizuję w poniższy sposób: krzysiek_krm napisał: "Zapomnieliście...
Witam. Moje pytanie tyczy się ogólnie programowania mikrokontrolerów. Oto kod dla STM32: Poprawiłem formatowanie kodu. Proszę używać znaczników syntax, zamiast code, wtedy składnia jest kolorowana i łatwiej czytać taki kod.
a napiecie referencyjne jak działa To sa podstawy, można poczytac w necie. Nie ma sensu kopiować tu wykładów na ten temat (jak, działa, jaka stabilnośc, jakie ograniczenia). i jakie wielkości W nocie katalogowej nie napisali? i jak przekłada sie to na wynik Gdym np Vref=1V, to dla tego napięcia otrzymasz max wynik z adc, dla 500mV połowę. Gdy ustawisz...
Witam, Chcę dokonać bardzo dokładnego pomiaru czasu trwania impulsu, podawanego na PA11. Wykorzystuję stm32f103vbt6. Chcę aby zostało wygenerowane przerwanie (TRIGGER) po pojawieniu się impulsu na pinie PA11, po którym to timer TIM1 na kanale CH4 rozpoczyna zliczanie od zera. Po zaniku sygnału na PA11 muszę odczytać wartość do której zdążył doliczyć...
Witam. Chciałem w celach edukacyjnych zrobić częstotliwościomierz. Ponieważ nie mam za bardzo skąd wziąć zewnętrznych impulsów postanowiłem, że jeden pin procka będzie je generował, a przerwanie int0 będzie liczyć ile tych impulsów było. Do odmierzenia czasu posłużył timer1, który ma odliczyć sekundę (więc wynik od razu w Hz). Po upływie sekundy ma...
Myślę że ustawienia programowe powinny być OK ponieważ bazuję na bibliotece z książki. Jednakże przy obliczeniu mikrosekundy pojawia się: ir_micro_s(num) ((num)*(F_CPU/1000000/PRESCALER)) gdzie PRESCALER ustawiony na 8 (zdefiniowane sa stosowne rejestry w zaleznosci od wyboru prescalera) Pytanie czy odczyt F_CPU jest prawidłowy (z tego co pojmuję to...
Witam ostatnio wykonuje sterownik silnika BLDC. Niestety potrafię nim sterować tylko w sposób otwarty tzn. zmieniać ręcznie PWM i czas trwania kluczy danej komutacji. Teraz chciałbym aby silnik był sterowany za pomocą komparatora analogowego (komparator zmieniał by wysterowane tranzystory) ja natomiast podawał bym mu tylko wypełnienie. Niestety nie...
Bawię się ADC w ATMEGA32. Prescaler ADC ustawiam na 2 lub 4, w zależności czy mam 16 MHz z kwarcu, czy 8 MHz z wewnętrznego RC. Wychodzi mi z obliczeń, że na przetwornik ADC podaję 4 MHz i chodzi. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 Dim D As Word Dim T As Word Dim W As Byte Dim N As Byte Dim S As String * 4 Dim L As Byte Ddrc...
witam jak w temacie mam problem z częstotliwością na uC. podłączyłem kwart 16MHz i coś za wolno chodził... dałem w pętelce żeby na porcie sie pojawiały naprzemiennie jedynki i zera... i zobaczyłem wszystko na oscyloskopie... troszkę sie podłamałem jak miałem czas trwania danego stanu 0,5µs a wiec mam 2MHz zrobiłem tak: while(1) { PORTA...
Proponuje oddzielić zliczanie czasu od wyświetlania, będzie czytelniej i dokładniej. Program główny niech zajmie się wyświetlaniem, a przerwanie tylko naliczaniem czasu. Następnie zmniejszyć ilość przerwań, poprzez ustawienie prescalera w rej. option, wpisując do niego 1 zmniejszasz liczbę przerwań dwukrotnie, przy 2 czterokrotnie, 3-ośmiokrotnie 4-szesnastokrotnie,...
Witam. Kombinuję już od jakiegoś czasu nad włącznikiem RC ale nie typu on/off tylko w zależności od zapotrzebowań, tyle ma być stanów. Na chwilę obecną docelowo mają to być 3 stany off/1/2. Wygrzebałem w googlu kawałek kodu, który jest odpowiedzialny właśnie za pomiar długości trwania stanu wysokiego na wejściu ICP1 (input capture). Jednak za żadne...
Witam serdecznie mam następujący problem. Wgrywam następujący kod do attiny: [syntax=c]#include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> SIGNAL(SIG_TIMER1_COMPA) { PORTB=0xff; _delay_ms(20); PORTB=0x00; } int main() { OCR1A = 31250; //Set OCR1A TCCR1B = (0 << WGM13)|(1 << WGM12)|(1...
Witam ponownie, rozwiązałem swój problem, błąd był banalny i polegał na tym, że ustawiałem stan wysoki w rejestrach instrukcją |= i to było ok, ale nie zerowałem bitów tam gdzie powinny być zera instukcją &= ~. Na dole działający kod: [syntax=c]//niezbędne pliki nagłówkowe #include <stddef.h> #include "stm32f10x.h" //DEFINICJE PREPROCESORA...
Pulldown dałem profilaktycznie bo tranzystor załącza podświetlanie w stanie wysokim. Wyciąłem pulldown usuwając linię LPC_PINCON->PINMODE4 |= (1<<0) | (1<<1) czyli teraz pin jest pullup lecz nadal na pinie P2.0 nie pojawił się przebieg PWM :( Nie ustawiałem prescalera teraz ustawiłem LPC_PWM1->PR = 0 czyli bez prescalera i też nici.
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.
Witam po dłuższej przerwie. Zmieniłem kod HALa niepotrzebnie kasujący ustawiony czas po każdym uruchomieniu: HAL_RTC_Init z powyższego kodu wygląda tak: HAL_RTC_SetDate którym ustawiam datę: [syntax=c]HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format) { uint32_t counter_time = 0, counter_alarm = 0, hours...
Tak jest !!! tak jak napisałeś ! Z praktyki uzywałem tylko właczenia, ( nie wykorzystuję trybu idle , więc nie musiałęm wyłączyć ), A jeszcze jedno nie polecam resetować watchdoga w obsłudze przerwania timera -> program może być w " malinach" a przerwania będą się wykonywac i resetować watchdoga, ja umieszczam je patrząc jak wykonuje się prog. Jeśli...
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...
Po przeczytanie manuala od atmegi8 mam już ustawione przerwanie od int0 aby wykrywało logiczną zmianę (nie jestem pewny czy powinno być tak czy na zbocze opadające lub rosnące). Do układu mam podłączony LCD ale mam także komunikację po rs232 z komputerem więc wysyłam sobie przez uart. w tym momencie mam w przerwaniu od int0 ustawione żeby wysyłało mi...
Mam pytanie dotyczące łączenia instrukcji programów w całość . Chodzi mi o to że robię sobie termometr w którym odczytam sobie temperaturę wewnętrzną ,zewnętrzną a także napięcie swojego akumulatora i czas,datę z układu DS1307.W jaki sposób połączyć kilka plików to ze sobą w sposób profesjonalny? Czy wszystko ująć w jednej pętli "while"?.ale wtedy są...
Polecam na początek zerknąć tu: (strona 90 i następne) Skoro nie używasz PLL to sygnał zegarowy 25MHz powinien docierać (przy wszystkich prescalerach ustawionych na 1) do wejścia taktującego timer. Tak więc APB1 = 25MHz. Dalej (czytając ten manual od góry) zadajmy sobie 2 pytania: 1. Czy pod ten procesor można podłączyć kwarc 25MHz? Od razu powiem nie...
Chociaż na zdjęciu widać mini płytkę z PIC18F1220, to posłuży ona jedynie do praktycznego zaprezentowania obsługi wątków które zaimplementowałem. Obecne możliwości kodu który chce zaprezentować, to działanie równoległe 2 lub trzech wątków, w tym głównej funkcji main która jest pierwszym wątkiem. Całość wymaga kompilatora sdcc (3.6.0) oraz pakietu gputils....
Ciekawe, czytałem już te tematy. czy bez tego kwarca 32khz sie nie obejdzie? Jednak nie łapię tych timerów. Generalnie timer służy jako licznik przerwań :), wewnętrznych albo zewnętrznych na pinie TO, zewnętrzne przerwania widziane są z portu TO, a wewnętrzne przerwania generuje prescaler - wewnętrzny przerywacz "sterowany" kwarcem zewnętrznym lub...
Trochę to wszystko dziwne. Z tym stoperem to też nie tak, jak trzeba. Do testowania funkcjonalności najlepsze jest ręczne wklepywanie w rejestry i sprawdzanie ich. 'openocd + hyper_terminal' albo 'ocd commander'. Do sprawdzania rzeczywistych zegarów w układzie dobrze jest je wyprowadzić na zewnątrz. 'programable output clock controller'y-->PMC_PCKX...
Witam Chciałem uzyskać pracę asynchroniczną (licznik sterowany kwarcem zegarkowym, procesor generatorem wewnętrzym). Napisałem prosty program (miganie diody LED co 1s): $regfile = "m48def.dat" ' plik danego mikrokontrolera $crystal = 8000000 'częstotliwość generatora wewnętrznego Config Portb.0 = 1 'wyjście dla LED Portb.0 = 1 Enable Interrupts 'odblokowanie...
Witam! Potrzebuje na procesorze Attiny44 zaprogramowac generator sygnału prostokątnego o częstotliwości 100Hz. Program pisałem w C, jego treść zamieszczam poniżej. Po przestudiowaniu dokumentacji od AVR, stwierdzilem ze użyć należalo by któregoś z Timerów. Mój pomysł był taki, aby zliczać do pewnej wartości, po której licznik zgłaszał by przerwanie,...
16MHz A mam 3 razy bo nie wiem w kt orym miesjcu mam blad Przy 16 MHz i prescaler ustawiony na 1024 nie jestes w stanie odmierzyc czasu 1 sekundy uzywajacTimera0 bez zliczania odpowiedniej ilosci przepelnien nawet bez preload czyli na 'pelny zegar'. Maxymalny czas jaki jestes w stanie odmierzyc to ok 16 ms (dokladnie 16.384 ms). Druga sprawa; to jak...
O a ja myślałem, że tam się podłącza właśnie napięcie odniesienia :), Ale nawet po zmianie mi to nie działa. Z tego co rozumiem w datashicie jest napisane, że po wpisaniu jedynki na ADSC czyli 6 bit ADCSRA zaczyna się pojedyncza konwersja. Potem czekam aż na tym bicie pojawi się zero które oznacza, że konwersja się zakończyła i mogę sczytywać wartość...
Dzięki tmf z odpowiedź. Mam pytanie dotyczące łączenia instrukcji programów w całość . Chodzi mi o to że robię sobie termometr w którym odczytam sobie temperaturę wewnętrzną ,zewnętrzną a także napięcie swojego akumulatora i czas,datę z układu DS1307.W jaki sposób połączyć kilka plików to ze sobą w sposób profesjonalny? Czy wszystko ująć w jednej pętli...
Bez ustawienia fusebitów ruszył ale zajrzę jeszcze do nich... faktycznie spojrzałem jeszcze raz na wyprowadzenia obydwóch atmeg i jest tak jak mówicie.. już działa a płytka testowa powoli zalicza się do odstrzału :D A w sumie jeżeli działa to znaczy ze w fusach nie muszę grzebać bo prescaler jest ustawiony wiec powinno być ok ?? P.S. za ten tekst o...
Prosiłbym o sprawdzenie kodu stopera na mikrokontroler Atmega32 współpracujący z kwarcem 16MHz. Prescaler ustawiony na 1024, timer w trybie CTC. Wynik wyświetla się z dokładnością do mikrosekund. Czasami jednak dostaję wynik w stylu 0,000000s, czy 0,002123s, który jest fizycznie niemożliwy do uzyskania. Z góry dzięki za pomoc. [syntax=c] #include <avr/io.h>...
znalazłem przykładowy program na stronie podanej przez was wcześniej, oto main.c [syntax=c] //Pomiar napięcia przetwornikiem A/C i prezentacja wyniku na LCD 2x16 HD44780 #include <avr/io.h> #include <util/delay.h> #include "HD44780.h" //definicja ADCIN (wejście ADC) #define ADCIN PC5 //######################################...
Witam! Na wstępie napisze ,że napisałem tu ten temat ,bo nie są kasowane za to żadne punkty. Napisałem taki prosty program: [syntax=basic4gl]#include <avr/io.h> #include <util/delay.h> int main() { ADCSRA = (1<<ADEN) //ADEN=1 włączenie przetwornika ADC) |(1<<ADPS0) // ustawienie preskalera na 128 |(1<<ADPS1) |(1<<ADPS2);...
rejestr TCCR1A nie posiada tych bitów, które chcesz ustawić, zrób to tak: TCCR1B |= (1<<WGM12)|(1<<CS20); Dodano po 3 Program nigdy nie może wyjść poza funkcję main() dlatego instrukcja return nie powinna wystąpić w tej funkcji. Bo w innym przypadku wychodzisz z funkcji main i nie wiadomo co się później dzieje z programem, dlatego napisz...
Wiem o tym, mi chodzi to że muszę odczytać temperaturę z DS18B20 i wyświetlić ją na stronie, chce się tym odczytem zająć co kilka sekund w przerwaniu żeby nie tracić czasu podczas wysyłania strony. Skoro wiesz to dlaczego pytasz o co innego niż potrzebujesz? Pytałeś o miganie diodą w trybie CTC i taką odpowiedź dostałeś. Jeżeli chcesz cokolwiek zrobc...
Hej. Jestem bardzo świeży w temacie mikrokontrolerów i od razu mam problem z taką błahostką jak odczyt danych z czujnika DHT11. Moje urządzenie to STM32L152RBT6, korzystam z znienawidzonych (sic!) tutaj bibliotek STM32L1xx_StdPeriph_Driver. Póki co chcę ich używać. Nie mam w zwyczaju pisać na żadnych forach ponieważ wolę wcześniej poszukać jednak tutaj...
Witam, Proszę o pomoc w poprawieniu kodu lepiej zorientowanych kolegów. Otóż chciałbym wykorzystać Atmege8 do wysterowania PWM zależnym od pomiaru z ADC. Stworzyłem model układu i zamiast odczytu z ADC skupiłem się na napisaniu prostego kodu dla PWM zmieniającego szerokość impulsu od temperatury ( z DS18b20). Korzystając z tutoriali znalezionych w internecie...
Zobacz w nocie apliacyjnej procka jaki jest optymalny zegar dla adc i taki nastaw. Jezeli jest tak jak w attiny88 to powinien byc w zakresie 50-200kHz W nocie jest 50-200kHz i prescaler ustawiłem na 128 dla 75kHz, jednak fabrycznie zegar ustawiony jest na 9.6MHz/8, porty i opóźnienia widzą zegar 1.2MHz. Nie wiem czy ADC widzi zegar 9.6MHz i zostawić...
Chyba znalazłem problem, powoli sobie zaczynam przypominać po latach, jednak analfabetyzm wsteczny zrobił swoje .Jestem na etapie nauki .Proszę o opinie czy dobrze kombinuję : mam kwarc 8Mhz pomiar robię na 8 kHz 8 000 000 / 8 = 1 000 000 /8 000 =125 Licznik zdąży zliczyć do 125 ? a chcę liczyć przesunięcie +- 90 st. więc lipa ? Może większy kwarc lub...
Mógłby ktoś napisać obsługę tego timera ? Widzę przykłady w internecie ale bez zrozumienia. [syntax=c]//niezbędne pliki nagłówkowe #include <stddef.h> #include "stm32f10x.h" //DEFINICJE PREPROCESORA //CCMRx #define OC3M_0 (1<<4) #define OC3M_1 (1<<5) #define OC3M_2 (1<<6) #define OC4M_0 (1<<12) #define OC4M_1 (1<<13)...
To jest fragment który sam dopisałem. W cubemx ustawiłem 2 timer na generowanie pwm na kanale 1,2 i 3, prescaler ustawiony na 0, period 89, do tego dma które miało współpracować z kanałem pierwszym. Taktowanie ustawiłem na 72mhz. Początkowo myślałem że problemy sprawia przerwanie od dma, lecz po usunięciu kodu włączającego dma sytuacja się nie poprawia....
Najprawdopodobniej masz źle napisany program. Ja zwykle robię multipleks na przerwaniu od TIMER 0, z prescalerem ustawionym na 64. Przy taktowaniu 8 MHz daje mi to odświeżanie równe 488 Hz / n cyfr. W przerwaniu "zapalam" kolejną cyfrę, i świeci ona do wystąpienia kolejnego przerwania.
jak zrobić żeby przerwanie od timmera 0 w atmedze8 było taktowane kwarcem zegarkowym(tzn. podłączam kwarc w miejsce xtal 1,xtal2 i skąd timmer 0 będzie wiedział ze ma być taktowany takim kwarcem) i jak dobrać preskaler itd żeby po zapełnieniu licznika odmierzana była 1s używam programmer's notepad. Kwartz ( quartz/kwarc) zegarkowy podłączony do m8...
pisze program w assemblerze i nie moge skonfigurawac timera0 do pracy w trybie CTC robie tak: -mam w wektorze przerwan instrukcje skoku do procedury -mam dzialajaca procedure -ustawiam stos -ustawiam wartosc TCNT0 -ustawiam wartosc OCR0 -wpisuje do TCCR0 wartosc 0x0D ( ctc + prescaler 1024) -ustawiam TIMSK na 0x02 -odblokowuje przerwania poleceniem...
zalezy od jakosci kwarcu i od warunkow w ktorych bedzie pracowal ... napisz moze dokladnie oznaczenia i gdzie ma rpacowac ten kwarc Kwarc ma pracować z ATmega8. To jest zwykły niski kwarc w metalowej obudowie za pare groszy. Jedyne oznaczenie jakie na nim jest to 12.000 Pytam bo zrobiłem prosty programik co sekunde zapalający i gaszący diode i w prównaniu...
Może to co napiszę jest trochę prymitywne ale działa, sprawdziłem :-) No więc można też tak: Start Timer0 Do Loop Until We=1 Timer0=0 Do Loop Until We=0 Wynik=Timer0 We to dowolny pin. Prescaler timera trzeba ustawić tak żeby mierzony impuls zmieścił się w zakresie 0 - Tmax (zależy ile masz bitowy Timer). Nie potrzeba tu żadnych przerwań. Wada jest...
Witam, Natknąłem się na problem dotyczący konfiguracji licznika Timer1. Najprawdopodobniej BASCOM zawiera jakiś błąd i używając standardowych instrucji uzyskanie PWM z tego licznika nie jest możliwe. Używając standardowych "Config Timer1..." nie można nawet zmusić Timer1 do zwyczajnego zliczania... Mniejsza o BASCOM, postanowiłem zrobić to samo wpisując...
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...
do 50mhz posiada prescaler 1:10 ustawiany adresem w picu pozdrawiam
Tyle, że trzeba bardzo dokładnie mierzyć te małe czasy otwarcia. no zgadzam się, właśnie dlatego trzeba do tego użyć timera wyzwalanego poziomem. prescaler timera ustawiasz na odpowiednią dużą częstotliwość i wszystko samo sie mierzy i sumuję :). Nie wiem jak działa ten aktuator. Może ktoś rozwinie temat ? Pozdrawiam. GH
Witam ostatnio zastanawiałem sie nad tym jak dokładnie działa tmr0 . Używałem go już wcześniej np do odliczania sekundy (miałem gotowca) ale nigdy sie nie zastanawiałęm jak działa. Mam coś takiego void interrupt() { cnt++; // Increment value of cnt on every interrupt TMR0 = 96; INTCON = 0x84; OPTION_REG = 0x84; if (cnt == 400) {...
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.
Witam dopiero zaczynam przygodę z programowaniem mikrokontrolerów i mam pytanie odnośnie odmierzania czasu na uc atmega 16. Odmierzam czas przy pomocy timera1 kwarc 16MHz. Z obliczeń wynika, że przy preskalerze 1024 muszę odliczyć 15625 impulsów więc ładuję do timera wartość 49911 i wtedy uc odmierza mi około 4 sekund zamiast 1, natomiast gdy prescaler...
Witam dopiero zaczynam przygodę z programowaniem mikrokontrolerów i mam pytanie odnośnie odmierzania czasu na uc atmega 16. Odmierzam czas przy pomocy timera1 kwarc 16MHz. Z obliczeń wynika, że przy preskalerze 1024 muszę odliczyć 15625 impulsów więc ładuję do timera wartość 49911 i wtedy uc odmierza mi około 4 sekund zamiast 1, natomiast gdy prescaler...
Od razu mówię, że nie jestem asemblerowcem :-) Oto dane potrzebne do obliczeń: Rezonator ma częstotliwość 8MHz Prescaler ustawiony na 1024 Po przepełnieniu, do timera ładowana jest wartość 256-125 (ale za pierwszym razem liczy od 0) W rejestrze r21 zrealizowany jest licznik, który liczy od 125 w dół (pierwsze zliczenie jest od 0 w dół - wykonanych będzie...
Nie rozumiem konfiguracji timera w Twoim delay'u i dlaczego prescaler jest ustawiany co wywołanie, także chyba odpuszczę. Poza tym w timerach jestem zielony ;) Natomiast znalazłem coś takiego, prostego na google, zmodyfikowałem i działa: [syntax=c] // Oryginalny kod: #define SYS_CLK 24000000 /* 24 MHz */ #define DELAY_TIM_FREQUENCY 1000000 /* = 1MHZ...
Witam, Chciałem napisać program do liczenia 'sekund'. Jest to początek mojej drogi do zrobienia zegara. Problem jest taki, że po 5 minutach zegar spieszy już o 3 sekundy. Gdzie popełniłem błąd? Prescaler ustawiony na 1024, atmega na 8MHz na kwarcu wewnętrznym(może tutaj jest problem?), według informacji które posiadam przerwanie powinno być generowane...
Dalej tiny jest na pokladzie. W programie jedynie prescaler pwm jest ustawiony na 8. Chce dopisac wiecej opcji w Select Case, aby bylo wiecej przyciskow pilota obslugiwane. Ponizej komendy 50 dziala wszystko elegancko. Powyzej tego nie reaguje.
Witam. Koledzy trochę skomplikowałem sobie życie. Zaprojektowałem i wykonałem już płytkę i teraz widzę że mam problem. Otóż potrzebuję na wyjściu OC1A generować sygnał pwm ale TIMER1(16-bit) jest mi potrzebny do generowania przerwania co 1s. Czy dało by radę generować sygnał pwm z timera0 ale na wyjściu OC1A? Port PD.4 mam zajęty. A może nie komplikować...
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...
Napisałem już wcześniej: Skonfiguruj timer do pracy w trybie fast PWM + generowanie przerwania z przepełnienia. Sterowanie jasnością to załadowanie rejestru OCRx właściwą wartością (8-bitów) i tyle. W obsłudze przerwania po przepełnieniu timera: - załadować rejestry katod - wyłączyć anody - przesunąć anody (jeden bit pewnie wystarczy) - zatrzasnąć dane...
Wyjście z CCR3 włączasz w rejestrze CCMR2, bity mają w nazwach CCMR2_OC3xx. No i timer wystarczy włączyć jeden raz, a nie trzy. Prescaler też wystarczy ustawić jeden raz. Paru rzeczy jeszcze nie włączyłeś w tym timerze. Obejrzyj przykłady PWM na STM32F0 w Elektronice Praktycznej.
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.
Witam, otóż konfigurowałem TIM1 do zgłaszania przerwania co 2 sek ( zmienianie stanu diody). TIM1 z tego co wiem jest podłączony do szyny APB2 (72MHz) prescaler ustawiłem na 72199, 20000 taktów. Wszystko działa jak należy, dioda zmienia stan co 2 sek. Następnie, zrobiłem dokładnie to samo, lecz dla timera 2. Ku mojemu zdziwieniu diody migają w tym samym...
Popraw błąd w 76-tej linii programu. Sprawdź, czy nie ma zimnych lutów przy elementach C7 i R9. Błąd poprawiony, przy elementach C7 i R9 wszystko ok. Nadal nie działa. Dodano po 1 [syntax=c]/* hmc5883l lib 0x01 copyright (c) Davide Gironi, 2012 Released under GPLv3. Please refer to LICENSE file for licensing information. */ #include <stdlib.h>...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
rzeczywiście może mało precyzyjnie się wyraziłem... z tym ATX 2.4 PWM Control Input Signal częstotliwość pwm domyślne jeśli chodzi o arduino to chyba 490 Hz Ta informacja dotyczy wentylatota cztero-przewodowego; czy takie wentylatory masz w użytku? Jeżeli tak to: -defaultowa w arduino częstotliwośc PWM faktycznie wynosi 490 albo 3920Hz, ale nie znaczy...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Teraz chyba wreszcie zrozumiałem te timery, wreszcie zaczęło to mieć sens i działa tak jak ja chcę. Myślałem że użycie prescalera automatycznie powinno wystartować timer a włączenie globalnych przerwań załatwi sprawę, nie wiedziałem że trzeba jeszcze osobno włączyć timer. Dobrze myślałeś!... Ustawienie prescalera na każdą wartośc różną od zera startuje...
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...
Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt w którym wykorzystałem mikrokontroler, proszę o wyrozumiałość...
Oprócz zmiany w fusebicie CKSEL = 1111 trzeba zmienić prescaler.... chyba. Czy ktoś może podpowiedzieć, podać link jaki prescaler winien być ? Nie wykorzystujemy tu przerwań. Jedynie Nie przerwania decydują o potrzebie stosowania prescalera. Prescaler jest dzielnikiem zegara taktującego dla timerów. Jeżeli nie wykorzystujesz w programie żadnego z dostępnych...
Chętnie. Czegoś więcej się nauczę. plik H: [syntax=c] #ifndefLCDHD44780_H_ #defineLCDHD44780_H_ /* #defineLCD_HD_5X8 // Polskie znaki czcionką 5x8 a nie 5x7 //#defineLCD_ONLY_PL // Definicje w FLASH tylko znaków PL (mniejsze zużycie FLASH) //#defineLCDMIROR // Użycie tworzy w RAM kopię treści wyświetlacza #defineLCDLINE4 // Liczba wierszy #defineLCDROW20...
Witam. Nie mogę dobrać parametrów timera tak by osiągnąć zadaną częstotliwość. Potrzebuje teraz osiągnąć by timer1 się przepełniał 10 razy na sekundę czyli co 100ms. ] Do tej procedury nie musisz wcale zmieniac fusebitów. Możesz w zupełności pracowac z f-taktowania 1MHz wykorzystując wewnętrzny, wbudowany oscylator RC z fabrycznym ustawieniem. Mega8...
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...
Witam Zamieszczam kod na którym działam w tej chwili. Trzeba mieć na uwadze że jest to bardzo amatorski projekt. Świadomy jestem pewnych braków ale niestety brak czasu. Schematu płytki nie udostępnię bo... wstyd :) Każdy kto ma więcej czasu niż 3 godziny zrobi napewno lepszą. (at)Daro_Elektronik nie mam zielonego pojęcia i nie wiem czy mi ta wiedza...
Super :) Teraz przydała by mi się pomoc jak skonfigurować w bascomie timer1 tak żeby był taktowany kwarcem :) Dla RTC z kwarcem 32768 kHz (podłączonym do TOSC1 i TOSC2) potrzebujesz skonfigurować Timer2, pracujący asynchronicznie w trybie normalnym z prescalerem = 128 ; - co da ci interrupt co 1 sec. W Mega8 tylko Timer2 może pracować asynchronicznie...
Witam Napisałem program który mierzy napięcie na ADC0 i wynik wyświetla na po-2-jnym wyświetlaczu LED. Niestety nie chce wyświetlać dziesiętnych napięcia wejściowego. Dlatego napisałem program w DEVcpp aby sprawdzić czy sposób formatowania wyniku jest dobrze interpretowany, oto program, który dziła bez arzutu. -liczbę 2,62745 mnoży przez 10 co daje...
Witam ponownie. Trochę pchnąłem sprawe mojego monitorka do przodu dlatego chce zdac relację. Zdobyłem prescaler udało mi sie go przelutowac co nie było sprawą łatwą. Stwierdziłem,po podłączeniu ,ze monitor zachowuje sie podobnie jak ze starym prescalerem (po właczeniu mignie diodka power przez moment klawiatura aktywna, matryca ciemna, istnieją przez...
Płytka SMT32 F103RB podłączona do słuchawek. Dźwięk się odtwarzał, ale jego modulacja była dziwna, sterowało się głównie prescalerem, a wypełnienie niewiele robiło (raczej głośność zmieniało, niż częstotliwość), tak się chyba PWMa do dźwięku nie używa. Niskich tonów w ogóle nie dało się uzyskać, bo było strzelanie zamiast basu. Dlatego zrobiłem ten...
Witam, Zmontowałem kiedyś sygnalizator jak w temacie. Działa dobrze, sygnalizuje przekroczenie górnej temperatury nastawionej, sygnalizuje spadek temperatury poniżej 0 stopni. Przydała by mi się jeszcze funkcja sygnalizacji przekroczenia dolnej nastawionej temperatury. Może ktoś podpowie co zmienić w kodzie ? KOD: [syntax=c]/*****************************...
Witam Już wiem co miałem nie tak. Opóźnienia to jest to na co trzeba uważać w dallasie (jak tego nie zrobisz porządnie, to nici z Twojej pracy). Ja wykorzystywałem na początku delay’a który najmniej mógł zliczyć (teoretycznie) 5,7814us (bo #include <avr/io.h> #include <stdlib.h> ///////////////////////// LCD define /////////////////////////////////////...
Mam taki kłopot (Bascom + Atmega128) ; Korzystam z PWM w trybie FAST. Uruchamiam sobie to normalnie ; Tcnt0 = 0 Ocr0 = 0 Tccr0 = &B01101010 'timer0 in fast pwm mode, prescale = 8 10kHz Ocr0 = 0 Następnie zmieniam zależnie od potrzeb wypełnienie, przez wpis do OCR0. Na koniec wyłączam PWM ; Ocr0 = 0 Tccr0 = &B00000000 Tcnt0 = 0 PWM startuje zawsze od...
Witam, napisałem program na moja atmege8l który ma za zadanie co 5s zapalać i gasić diodę z wykorzystaniem 16bitowego Timera1 w trybie CTC. Wyliczyłem, że jeśli mam uC taktowany 8MHz to przy zastosowaniu prescalera 256 flaga OCF1A powinna być ustawiana co 1hz, przy ustawieniu rejestru OCR1A na 31250. Jeśli za każdym ustawieniem flagi będę ją kasował...
Witam! Chcę ustawić TIMER1 w atmedze 16 tak aby generował przerwania mniej więcej co sekundę w trybie CTC (dodam, że nie zależy mi na aptekarskiej precyzji). W tym celu ustawiłem następujące rejestry: TCCR1A |= (1<<WGM12); //tryb ctc , timer1 TCCR1B |= (1<<CS12)|(1<<CS10); //prescaler 1024 / OCR1A = 7813; // 8MHz/1024 TIMSK |= (1<<OCIE1A);...
Witam. Nie mam już pomysłu na rozwiązanie mojego problemu. Program działa, ale przy przesuwaniu tekstu w tablicy do prawej AVR GCC generuje dużo mniejszy kod (1002 bajty) niż jeśli zakomentuję tę część pętli głównej programu (1366 bajtów). Kompilacja przechodzi bez warningów w obu wypadkach. Dodatkowo po zaprogramowaniu układu program nie wraca do głównej...
Witam Robie PWM ( tryb 14 -atmega8) jego sterowanie odbywa sie za pomocą 16 bitowego rejestru ICR1 który to odpowiada za uzyskaną częstotliwość na wyjściu OCR1A (PB1) . Jezeli do rejestru ICR1 przypisuje stała wartość to wszystko jest ok, dioda poprawnie swieci, wynik na lcd jest OK. W momencie kiedy rejestr ICR1 zależy od adc1 to wtedy wyswietlacz...
Brak timerinit(), więc nie wiemy, co robi. A to co?: osThreadInit(); osKernelStart(); timerInit() zamieściłem w pierwszym poście, powtarzam: Dodano po 15 Buforowanie rejestru preskalera? Po konfiguracji rejestru TIMx_PSC dodaj ustawienie bitu TIMx_EGR_UG i daj znać czy pomogło ;) Dodałem to o czym piszesz: [syntax=c] void timerInit(void) { /* Włączenie...
Mam problem z uruchomieniem PWM na Atmedze 2561. Potrzebuję ustawić TIMER2 jako FAST PWM, no-inverting mode, wyjście na OC2A. Oto testowy fragment kodu : [syntax=vbnet] ' przygotowanie PWM ' ****************************************... Dim Var_byte As Byte Var_byte = Gtccr Var_byte = Var_byte Or 128 ' ustawiamy TSM=1 ; timer/counter...
Po uruchomieniu programu w debuggerze (Keil) zawartość rejestru DR w ADC jest losowa. Aby zmienić jej wartość muszę zresetować procesor bo ustawia się bit OVR w rej. SR . Jak w debuggerze próbuję skasować OVR (przez kliknięcie na okienku) wartość w DR się zmienia. Co ciekawe jak wstawię za ustawieniem bitu SWSTART ponowne włączenie przetwornika ADON...
Wybrałem tryb 9 (Phase and Frequency Correct) i napisałem następujący kod: Nienajlepszy to wybór, bo akurat w tym trybie wartośc TOP jest ustawiana w rejestrze OCR1A, służąca do kontroli częstotliwości pracy timera , tymsamym elinujesz możliwośc generowania fali kanałem A. W tej sytuacji generowanie fali jest możliwe tylko w kanale B . Patrz ostatni...
Cześć, nigdy nie miałem problemów w kwestiach używania watchdog'a do wybudzania mikrokontrolerów pic - czy to serii 16 czy 18. Problem mam z układem pic24fj128ga202 (kompilator XC16, ver. 1.7). Mikrokontroler po wyjściu z uśpienia pomimo użycia instrukcji wyłączenia watchdog'a resetuje się. Zarówno funkcja Sleep() czy sam watchdog działają niezależnie...
to proste ; specjalnie dla urzytkowników forum elektroda :)Eagle ; przerwanie t0 z czestoliwoscą 1Hz ; dla kwarcu 4 MHz ; uC = 89s2313 .include "2313def.inc" ; definicje rejestrów ; trochę teorii ; 1 sek przy oscylatorze 4 Mhz to 4 000 000 cykle timer 0 jest 8 bitowy ; wiec 4 000 000 / 256 = 15 625 ; sprawdzamy czy prescalerem możemy coś zdziałać podział...
Cześć Przede wszystkim musze powiedzieć że nie znam sie ani odrobine na asemblerze . Mamy tu koder do 4kanałowego sterowania proporcjonalngo w asm'ie na attiny 15. teraz pytanie -czy da sie przerobić kod tak ,aby miał ich 7 lub 8kanałów i wrzucić go do Attiny 26 ?? I czy to koder PPM?? PS niestety nie przypomnę sobie strony z której wziąłem ten schemat...
Czesc, Ja odpalilem te kody Dallasa (vhdl) i moge gadac z moim ds2406 poprawnie. Nie obylo sie bez symulacji tego badziewia i przeprojektowania czesci ich kontrolera aby troche go dopasowac do reali FPGA. (Oryginalne kody sa projektowane na ASIC'a, i do tego jak juz zaznaczylem, architektura tego co jest w vhdl'u jest troszke inna niz tego co jest w...
Czekaj: ; ustawiam opoznienie 250ms CTC naT0 zliczam do 2000dec=07D0hex ; Timer1 ustawiam w trybie CTC(WGM01) z preskalerem 64(CS00, CS02) i zliczam do 2000 co daje nam 250ms ; OCIE01 ustawiam przerwanie ldi R16, 0b10 out TCCR0A, R16 ldi R16, 0b101 out TCCR0B, R16 ; prescaler 1024 ldi R16, 255 out OCR0A, R16 nic1: in R16, TIFR0 sbrc R16, OCF0A ; czekamy...
Z datasheetów wynika ze daje sie 1u i 10u na zasilanie. to jest datasheet dla 232 a to dla 232N .Zaprogramuje i sprawdzę , może jednak chodzi. Dodano po 5 Niestety nie działa. Czy u was dzieje się tak z MAX232 jak pisałem na początku. Tzn chodzi o wartości napięć. Dodano po 1 Poza tym zauważyłem dziwną rzecz, mianowicie gdy uruchamiam program w symulatorze...
Wersja druga analizatora widma akustycznego. Istnieją trzy sposoby podłączenia sygnału audio: a) Masa sygnału do punktu “Agnd” na płytce, wtedy masy analizatora i urządzenia nie mogą być połączone ze sobą. b) Analizator można zasilić symetrycznie, +-2.5V, “Agnd” stanie się masą i można ją połączyć z masą urządzenia. c) Jeśli...
Witam. Mam następujący problem z niedziałającym TWI. Mam kod na atmegę w C. /* Czujnik ultradzwiekowy sterowany z magistrali i2c C= 2010 Grzegorz Eliszewski grzegorz(at)eliszewski.pl esio.eu */ #define F_CPU 12000000UL // czestotliwosc kwarcu 12MHz #include <avr/io.h> #include <util/delay.h> // obsluga opoznien #include <compat/twi.h>...
Mógłby ktoś rzucić okien na mój kod funkcji delay. Siedzę nad tym od paru godzin i nie mogę znaleźć błędu. Timer jest 2 razy szybszy nić powinien być. Używam TIM6, skonfigurowanego do ustawiania flagi przerwania przy overflow, ale nie obsługuję tego w przerwaniu tylko w funkcji delay sprawdzam, kiedy flaga zostanie ustawiona. Do prescalera wstawiam...
Cześć Jak ustawić częstotliwość próbkowania ADC poniżej 375 KHz w układzie at91sam7xc256? W nocie katalogowej podany jest wzór dla ustawienia PRESCALERA. ADCClock = MCK / ( (PRESCAL+1) * 2 ) . Z tej samej noty można tez dowiedzieć się ze dla prescalera przewidziana jest wartość 6bitowa co pozwala ustawić maksymalna liczbę na 63. Po podstawieniu do wzoru...
Te krzaki w sumie nie zależą w żaden sposób od tego co wysyłam ale się powtarzają fragmentami. A jak powinna być ustawiona ta częstotliwość? Poniżej wrzucam ten plik z ustawieniami zegara. Ciężko mi się w tym połapać ;/ [syntax=c]/** ****************************************... * (at)file system_stm32l1xx.c * (at)author...
Witam. Jestem początkującym w dziedzinie programowania na elektronice znam się dobrze. Chciałbym zbudować komputer pokładowy do mojej hondy civic i znalazłem na elektrodzie projekt z pod tego linku. . Płytkę zaprojektowałem na nowo pod atmege128 reszta bez zmian. Wyświetlacz od Siemensa s65 ls020 podłączyłem według tej strony Wszystko działa, umiem...
Witam, mam problem z programem na mikroprocesor. Na początek dodam, że prototyp, zanim poszedł w odstawkę pół roku temu działał prawidłowo. Program w tym momencie ma za zadanie wyświetlić 4 zmienne na wyświetlaczu. Uruchomienie przerwań zawiesza program. W zależności od tego kiedy zostaną rozpoczęte, skutkuje to innym efektem. Umieszczając sei(); na...
Dorzucę się do tematu leonowa32, który podjął się rozpoczęcia kursu Xmega. W wolnej chwili czasu naskrobałem funkcję do uruchomienia generatora kwarcowego i pętli PLL. Dla wartości 16 MHz można ustawić F_CPU 1MHz, 2MHz, 4MHz, 8MHz, 16MHz, 32MHz.Procedura nie wyłącza wewnętrznego generatora RC 2MHz, a do kompletu brakuje konfiguracji przerwania NMI sygnalizującego...
Witam. Wiem że Kinetis nie jest tu popularny, ale to pytanie raczej ogólne (przynajmniej mi się tak wydaje) i mam nadzieję że ktoś mnie uświadomi :) Środowisko: Kinetis Design Studio 3.2 + Kinetis SDK 1.3 (eclipse + gcc) Procesor KL03Z32VFK4 (32kb flash, 2kb ram) Cortex m0+ Zacząłem się zastanawiać dlaczego pusty projekt w gcc jest tak duży. Zdumpowałem...