To właśnie zostało uruchomione - musi działać. Pisane pod WinAVR [syntax=c] #define SET(port, bit) port|=(1<<bit) #define RESET(port, bit) port&=~(1<<bit) #define NOT(port, bit) port^=(1<<bit) //Przerwanie wywolywane 100 razy na sekunde ISR(TIMER1_COMPA_vect)// == SIG_OUTPUT_COMPARE1A { NOT(PORTD,PD6); } int main (void) { SET(DDRD,PD6);...
Ok, działa. [syntax=asm]OCR1C = &HFF TCCR1 = &b01100110 ' bit7 - TCNT1 nie jest resetowany po osiągnięciu wartości z OCR1C ' bit6 - włączenie PWM z porównanie OCR1A, reset TCNT1 do $00 poosiągnięciu OCR1C ' bit5:4 - OC1x cleared on compare match. Set when TCNT1 = $00. ' bit3:0 - CLK/32 GTCCR = &b01100000 'bit6 - włączenie PWM z porównanie OCR1B, reset...
Do obsługi Timera1 są 4 wektory i nie wiem, które aktywować, co wpisać w procedurze odwołującej się, czy w ogóle jest taka potrzebna. Czy wystarczy tylko uruchomić te przerwanie i sygnał będzie generowany automatycznie ? Tabelka jest prosta: TIMER1 CAPT Timer/Counter1 Capture Event Zdarzenie z przechwycenia licznika (zwykle przez zmianę na pinie...
dobra, obiecany gotowiec i przy okazji manual pt "jak korzystać z manuala". W naszej przeglądarce wpisujemy adres www.google.pl Wpisujemy tam Atmega8, po załadowaniu się strony z rezultatami klikamy w link posiadający w tytule "datasheet" i sprawdzamy czy jest on z atmela. Po pomyślnym otwarciu się datasheetu z indeksu po lewej stronie wybieramy 16-bit...
Tak więc zrobiłem jak mówisz, nawet pobrałem sobie AS. Dodałem pętlę o której mówiłeś, nic nadal się nie dzieje. Tutaj nowy kod: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> // initialize timer and interrupts void timer1_init() { // set up timer with prescaler = 64 and CTC mode TCCR1B |= (1 << WGM12)|(1 << CS11)|(1...
Różnica będzie taka że w trybie 14 nie uzyskasz zerowego wypełnienia, a w trybie 15 nie uzyskasz maksymalnego wypełnienia. Jakiś czas temu sam się na to naciąłem The procedure for updating ICR1 differs from updating OCR1A when used for defining the TOP value. The ICR1 Register is not double buffered. This means that if ICR1 is changed to a low value...
Cześć, dziękuję wszystkim za odpowiedzi. Generalnie problem rozwiązany, aczkolwiek muszę jeszcze zobaczyć do kodu asemblera bo wydaje mi się, że poprzedni kompilator coś nachrzanił i dlatego był taki cyrk, a w sumie ciekawy jestem. Korzystałem wcześniej z kompilatora dołączonego do CodeBlocks, jednak po tym co działo się w opisywanym wątku zmieniłem...
Witam... Po pierwsze to jaki to uC...?.?.? Po nazwach rejestrów strzelałbym, że to któraś mega albo tiny ale dobrze by było gdybyś to napisał... Jak jest zadeklarowana "zmienna" którą wstawiasz do TCNT0...?.?.? Powinna być volatile... Czyli np tak volatile uint16_t pwm=10; Zobacz do dokumentacji bo może masz odwrotnie ustawione wyjście... Są dwie możliwości...
Hmm, czy ATmega32 na pewno ma timer3? Rzecz w tym, że mam już gotowy układ, w którym są wykorzystane nóżki procka OCR1A i OCR1B (outputy timera1) - gdybym teraz do PWM wykorzystał inny timer, musiałbym wprowadzać zmiany w układzie, czego chciałbym uniknąć (a do tego timer2 też mam zajęty, a silniki są dwa). Mówisz, że logiczne jest, że praca timera...
po ustawieniu rejestrów podanych wyzej nic sie nie zmienia [syntax=c]void timer_init() { TCCR1A |= (1 << WGM12)|(1 << CS12)|(1<<COM1A0);//CTC ,preskaler256 TCNT1 = 0; //wartosc poczatkowa timera TIMSK |= (1<<OCIE1A); // przerwanie Compare Match A OCR1A = 31250;//porównanie wartosci (około 1s) }[/syntax]
Chciałbym jednak użyć CTC, ale kompletnie nie wiem jak się za to zabrać w Bascomie. Nie znalazłem na forum żadnych przykładów. Jak by ktoś poczęstował przykładem kodu dla z CTC w Bascom to byłbym niezmiernie wdzięczny :) Jakieś kilka dni temu, nie dłużej jednak niż tydzień, ‘gaskoin’ podal dokładną procedurę konfiguracji CTC. Jeżeli przeoczyłeś...
Witajcie, Jako, że nie zgłębiałem tematu chciałem się upewnić. Uruchamiam ADC z automatycznym wyzwalaniem a jako źródło wyzwalacza ustawiam: Timer/Counter1 Compare Match B, bo tylko taki wyzwalacz mam dostępny dla Timera1 pracującego w trybie CTC (nie liczę wyzwalacza Overflow). No i właśnie, tryb CTC Timera1 uruchamiam wpisując między innymi do rejestru...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
W końcu znalazłem przyczynę problemów - dzięki sugestii Andrzej__S zweryfikowałem jeszcze raz układ by się na 100% upewnić czy mam wszystko dobrze podłączone i wszystko było OK tylko ja zapomniałem o jednej oczywistej rzeczy - sterowanie oświetleniem odbywa się za pomocą TRIAKA :) Gdy załączałem triaka w obsłudze przerwania z timera to jego wyłączenie...
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are written. For non-PWM modes, the action can be forced to have immediate effect by using the FOC1x strobe bits. Być może w tym jest problem. OC1A jest prawdopodobnie inicjowane z wartością 0 do momentu wystąpienia pierwszego "compare match". W trybach "set...
Trochę "szybsza" wersja (do 15,5krpm): [syntax=c]//storage variables const byte plen = 120; const boolean pattern[plen] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1...
Witam, ja mam pytanie odnośnie PWM na Timerze1: Phase and Frequency Correct (TOP OCR1A). Chciałem sobie sterować silniczkiem za pomocą właśnie tej opcji PWM na nóżce OC1A. Żeby nie wyszło, że jestem lese0r, nadmienię, że Fast PWM w trybie 10bitowym (tzn z określoną częstotliwościa) udało mi się uruchomić. Wówczas wypełnieniem PWM sterowałem za pomocą...
Z dokumentacji: "In CTC mode the counter is cleared to zero when the counter value (TCNT1) matches ... the ICR1", a więc nie wtedy, gdy zajdzie zdarzenie ICP tylko później i za każdym razem nie wiadomo dokładnie kiedy. Poza tym: "ICR1 define the top value for the counter, hence also its resolution..."However, changing the TOP to a value close to BOTTOM...
Spróbuj wpisać bezpośrednio do rejestru TCNT1 jeżeli ma to działać to trzeba oczywiście przeładować w każdym przerwaniu wartość w tym rejestrze. Zdecydowanie lepiej wykorzystać tryb CTC i rejestr compare OCR1C. Timer1 w tiny26 jest dość specyficzny polecam przejrzeć notę.
Generalnie wszystko co tam było, nie znam tej składni. #define PIN_PRI_A 9 // OCR1A - high-active primary drive #define PIN_PRI_B 10 // OCR1B - low-active primary drive #define PUSH_PULL true // false = OCR1A only, true = OCR1A + OCR1B #define TIMER1_PRESCALE 1 // clock prescaler value #define TCCR1B_CS20 0x01 // CS2:0 bits = prescaler selection...
Heh, na początek widzę błąd banalny. Otóż OCR1A wyznacza TOP dla licznika, stąd dla OCR1B to też jest wartość szczytowa, str. 107 manuala: When changing the TOP value the program must ensure that the new TOP value is higher or equal to the value of all of the Compare Registers. If the TOP value is lower than any of the Compare Registers, a compare match...
Od paru godzin męczę sprawę z CTC, czytam na forum i dochodzę do pewnych wniosków, nie wiem czy prawdziwych?: Timer1 16 bit ATMEGA32, kwarc 8MHz preskaler 8 (1 takt = 1us): 1.jeżeli użyję CTC, rejestr OCR1 (OCR1A oraz OCR1B) załaduję wartością 50000 to uzyskam przerwanie dokładnie co 0,5s. Tylko, że jeżeli dobrze rozumiem, po wygenerowaniu przerwania...
Oba liczniki ustawione w trybie Fast PWM(mode 3) jako Clear on compare match bez prescalera DDRB = 0xFF; TCCR0A= 0xA3; TCCR0B= 0x01;; //TCNT0 = 0x00; TCCR1A= 0xA3; TCCR1B= 0x09; //TCNT1 = 0x00; No jak dla mnie to Timer1 jest w trybie Fast PWM 10-bit ... Dokładność _delay_ms() po poprawieniu powyższego błędu nie powinna tu mieć żadnego znaczenia. W...
Zumek -- dzięki za wskazówki ale niestety w moim procesorze nawet po ustawieniu Timer1 na 65492 max. częstotliwość jaką udaje mi się osiągnąć to ~16KhZ. Może tak: (Nadal w Bascomie , choć nie całkiem w Basicu) $crystal = 4000000 Config Portb = Output Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle On Compare1a Introc1a Nosave Timer1 = 0 Compare1a...
Poszukałem, poczytałem, wypociłem coś takiego: [syntax=c] ... ISR(TIMER1_COMPA_vect) { if(ssek == 124) { sek = sek + 1; ssek = 0; } ssek = ssek + 1; TCNT1 = 0; } int main(void) { OCR1A = 0x7C; // do 124 TCNT1 = 0x00; TCCR1A = 0x00; TCCR1B |= _BV(CS12); // preskaler 1024 TCCR1B |= _BV(CS10); // preskaler 1024 TCCR1B |= _BV(WGM12); // tryb ctc TIMSK |=...
Witam. Kłopot mam następujacy... walczylem dziś z modelarskim servo. Znalazłem program "gotowca" na AVRFreaks. kod poniżej: #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> /**************** Globale variable **************/ static enum {av1,paa1} servo1=paa1; static enum {av2,paa2} servo2=av2; unsigned...
Tak na szybko ... Dlaczego odczytując otrzymujesz zero - może chodzi o problem odczytu, a nie zapisu: The OCR1x register access may seem complex, but this is not case. When the double buffering is enabled, the CPU has access to the OCR1x buffer register, and if double buffering is disabled the CPU will access the OCR1x directly. The content of the OCR1x...
Ja uczyłem się na poniższym kodzie: [syntax=basic4gl]'1 second code $regfile = "m8def.dat" ' or "m88def.dat" or "m168def.dat" $crystal = 4000000 $baud = 9600 $hwstack = 32 $swstack = 16 $framesize = 40 Dim Seconds_count As Long ' ========================================... ' Timer1 initialization ' ' Mode: Clear Timer1 on Compare Match (CTC...
ok działa podobny program jest w książce. Ale jak teraz "przenieść" to zliczanie w inne miejsce żeby diody zaczeły sie zapalać tak jak che i to jeszcze z multipleksowaniem. A co do keawcu to miałem go podłączonego i w fusach też ustawiony był ok. Jak narazie dzieki za pomoc. Chwile sie pobawiłem i zastanawiałem sie czemu mi zle działa dioda podpięta...
Znalazłem chwile. To tak mi się napisało: [syntax=c]void init_INT0(void) {INT0_RISING; INT0_ON; kontrol=0; } // Nadajnik to PT2262 sekwencja to 4 "słowa" na końcu których jest preambuła ISR(TIMER1_COMPA_vect) { TCNT1=0; TIMER1_POMIAR(t_alfa<<2); if( PIN(ODBIORNIK) & (1<<PIN_ODB) ) { ramkaRC|=(1<<0); ramkaRC=ramkaRC<<1; }...
Mam następujący kod programu. Moje pytanie brzmi: Dlaczego program nigdy nie wchodzi do przerwania, a przynajmniej tak pokazuje VMLab, w którym to symuluję. Czy trzeba jeszcze coś w jakimś rejestrze ustawić. Program ma wchodzić do przerwania w momencie kiedy licznik zrówna się z OCR1A. #include<avr/io.h> #include<avr/interrupt.h> #include<avr/signal.h>...
Super :) Teraz przydała by mi się pomoc jak skonfigurować w bascomie timer1 tak żeby był taktowany kwarcem :) Dodano po 2 Czy przy pracy na wewnętrznym generatorze i rezonatorze 32768Hz na pinach XTAL1/TOSC1 i XTAL2/TOSC3 trzeba w bascomie określić $crystal ? Znalazłem coś takiego ale nie ogarniam tego CTC :) [syntax=basic4gl] '1 second code $regfile...
Dzień dobry, Chciał bym zrobić sobie prosty oscyloskop tyle że z wykorzystaniem uC Atmega8. Czy mógł by mi ktoś przetłumaczyć poniższy kod na język Bascom, lub chociaż objaśnić jego działanie? Kompletnie nic z tego nie rozumiem... Za przetłumaczenie na język Bascom oferuję 500pkt
Oczywiście, że tak nie mogłoby działać. Fakt, że dobrze myślałem, ale za szybko pisałem i mogłem wprowadzić Cię w błąd, przepraszam. Miałem na myśli coś takiego (bardziej pseudokod): #define TIMER_LEN2048 //albo 4096 #define SHIFT_REG_BIT0 #define TIMER_PRESCALER ... uint8_t servo_id; uint8_t pulse_low; uint16_t next_pulse; uin16_t servo[8];...
Timery (...) Wystarczy włączyć nieużywane. Właśnie tak powinno się to zrobić, ale biblioteka TimerOne blokuje taką możliwość. Dlaczego blokuje? W bibliotece zadeklarowane są wektory Dodano po 3 może Timer2.initialize Zamiast wpisywać w każdym przerwaniu do CNT (jeśli już to sie robi, to na początku obsługi przerwania), co może wprowadzać niedokładności,...
Niestety ale opcja wait nie nadaje sie do moich celów gdyż wtedy nie widzę co się dzieje z temperaturami, ciśnieniem układu. Wszystkie pomiary stoją. Cóż będę musiał poszukać podobnych programów i coś może wykombinuje. Dzięki za odpowiedzi! Bedziesz wie musial uzyc jeden z wolnych timerow. Ponizej masz przyklad zastosowanie timera 1 w trybie CTC. (z...
Witam wszystkich! Mam taki problem.... 'C026a.bas Zmiana jasności diody LED Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down Cls 'czyść ekran Lcd "EdW" 'wyślij napis Lowerline 'kursor do dolnej linii LCD Lcd "Cwiczenie 26a" 'wyślij napis 'czekaj 3 sekundy Do 'pętla nieskończona Incr Pwm1a 'zwiększ zawartość rejestru OCR1 If...
widzę, że temat przygasł wiec ponownie prośbę... proszę o wrzucenie przykładowego programu na procesor atmega, gdzie po naciśnięciu przycisku dioda zapala się na 5 sekund i gaśnie. Liczę ze taki program pomoże mi zrozumieć zasadę działania komendy odliczajacej czas. Książka ani inne posty jakoś mi nie pomagają i nie mogę tego przeskoczyć. Liczę, że...
Podaję więc te fragmenty gdzie używam timera1 i pinów PD0,PD1,PA6,PA7: #define MOTOR1_DDR DDRA #define MOTOR1_LEFT_DDR_PIN DDA6 #define MOTOR1_RIGHT_DDR_PIN DDA7 #define MOTOR2_DDR DDRD #define MOTOR2_LEFT_DDR_PIN DDD0 #define MOTOR2_RIGHT_DDR_PIN DDD1 /*PORT*/ #define MOTOR1_PORT PORTA #define MOTOR1_LEFT_PORT_PIN PA6 #define MOTOR1_RIGHT_PORT_PIN...
No dzięki Panowie, wiecie co jest najlepsze? Popatrzcie na cytat, ale tym razem z rozdziału 13 datasheeta (strona 100): When the CTC1 control bit is set (one), Timer/Counter1 is reset to $00 in the CPU clock cycle after a compare match with OCR1A register. Widzicie to "OCR1A"? Z tym tylko, że rozdział 13 traktuje o timerze w trybie zgodności z ATtiny15....
krotki opis proramu, po wykryciu przerwania pierwszy raz na INT0 uruchamia timer i odlicza czas do drugiego przerwania, po drugim przerwaniu i kolejnych na PA2 jest wystawiany impuls trwajacy 200us, impuls jest opoznany w stosunku do sygnalu wejsciowego w zaleznosci od okresu sygnalu. Problemem okazalo sie dodatkowe opoznienie wprowadzone przez obsluge...
Witam. Mam pewien problem. Próbuję zrobić nadajnik kodu RC5 z użyciem mikrokontrolera AT Tiny26L SMD w Bascomie AVR 1.11.7.0. Niestety, polecenie RC5Send nie działa na tym układzie (Assignment Error Dim Rc5_address As Byte Dim Rc5_command As Byte 'Dim Key As Byte 'Dim Key_prev As Byte Dim Rc5_bit_nr As Byte Dim Toggle_bit As Boolean ' 36kHz carrier...
Co jest źle, czego brak ? Wymagany sygnał: PWM -|________|-----|________|----| SD ---|______|--------|_______|------| (SD przed TOP) sygnały wyprowadzone na LEDy. Problem: Brak sygnału PWM. (na pinie 3.3V non-stop) !!!!! - pin SD działa prawidłowo. - ATmega 16 -nie uszkodzona. - Płytka PROPOXu sprawna. Tu wycinki z programu. [syntax=c] #define PORT_PWMPORTD...
Moim celem jest regulowanie prędkości obrotowej wiatraczków podłączonych do wyjść PB1 i PB2 za pomocą trybu PWM. Napisałem taki kod jednak coś nie gra. #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h> //ustawienie pinow na wyjscia wiatraczkow #define SET_FAN_OUTPUTDDRB|=(1<<PB1)|(1<... //wlaczenie...
Dokumentacja Atmela nie opisuje bardzo precyzyjnie działania bloku "Waveform generator". Sugerując się jednak fragmentem: setting the COMnx1:0 = 0 tells the Waveform Generator that no action on the OCnx Register is to be performed on the next compare match można przypuszczać, że jeśli ustawisz bity COMnx1:0 na zero w momencie, gdy rejestr OCnx jest...
Tak jak pisałem jest źle napisana logika w Twoim programie, nie może być ELSE IF if a potem ELSE. Poprostu nie wykonuja się kroki silnika. Dodatkowo jeśli kroków będzie więcej jak 100 to będzie przekroczenie czasu 300ms pomiaru timerem1. Dlatego pisałem że jeden pomiar, jedno wykonanie kroków silnikiem i dopiero ponowne wykonanie pomiaru. Powinno być...
Jeśli jeszcze aktualne :) W ten sposób to obliczasz częstotliwość sygnału, a nie wypełnienie. Powinno być raczej: ts zawiera (bez konieczności przeliczania) czas trwania impulsu w mikrosekundach.
ZbeeGin, ale przepełnienie nie nastąpi, podobnie jak Compare nie (chyba, ze będzie wcześniej niż ctc)... Wystąpi, wystąpi. Gdyby rejestr porównania nie działał w tym trybie to licznik by się sam nie skasował w trybie CTC, bo niby skąd miałby wiedzieć kiedy ma to zrobić... :) An interrupt can be generated at each time the counter value reaches the TOP...
Ello, Generalnie jak dla mnie długość życia procka nie ma wiekszego znaczenia. Po kombinacjach z komendami powstalo coś takiego: [syntax=basic4gl]$crystal = 8000000 'Deklaracja częstotliwości kwarcu $regfile "attiny2313.dat" 'deklaracja modelu procesora Declare Sub Zwieksz 'Deklaracja procedury zwiększającej stan rejestru porównania Declare Sub Zmniejsz...
Witam ponownie, Poszedłem o krok dalej i moim planem jest podłączenie każdego z czterech wtryskiwaczy do osobnego pinu Arduino Uno/Nano z Atmega 328p. Pozwoliło mi to na skonstruowanie programu aby sterować każdym wtryskiwaczem z osobna z tą samą częstotliwością i wypełnieniem, ale sygnał do ich wysterowania jest przesunięty około 90° (problem z rozdzielczością...
Hmm po dodaniu zmiennej Pr i zrobeniu działania Pr = Pwm1a / 2.55 wyświetla mi na LCD gdy mam 255 85 % w czym robię błąd. $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Up Dim Pr As Integer Declare Sub Zwieksz 'Deklaracja procedury zwiększajšcej stan rejestru...
Otóż mam mały problem bo zaczynam programowanie i natknąłem się na problem bo chce aby na wyświetlaczu podawał mi wynik w procentach. Z góry dzięki, poniżej kod. $crystal = 4000000 'Deklaracja częstotliwości kwarcu $regfile "attiny2313.dat" 'deklaracja modelu procesora Config Lcd = 16 * 2 Declare Sub Zwieksz 'Deklaracja procedury zwiększającej...
Witam. Tworzę sobie programik do sterowania 16 serwami. wykorzystuję 2 timery timer2 generuje przez przerwanie odstępy 2.2ms. każdy impuls to obsługa 2 serwów, więc aby odsłużyć wszystkie mamy 8 impulsów(18.4ms) więc impulsy na serwo powtarzają się częściej niż te 20ms. więc tu jest dobrze. Timer 2 steruje timerem1, blok A obsługuje pierwszą 8 serw,...
Witam wszystkich bardzo serdecznie. Mam problem z obsługą timera, nie wiem czy dobrze mam napisany kod, bo działa nie tak jakbym chciał. Mianowicie chciałbym generować przerwanie co 100ms i wykonywać pomiary na dwóch kanałach ADC i wyświetlać wyniki na ekranie terminala w PC.. Na początku udało mi się obsłużyć timer0 i wszystko działało prawidłowo,...
Po długim analizowaniu problemu narodziło mi się coś takiego: 'pętla główna Dim I As Integer Dim Impulsy As Long Dim Sek As Integer Tccr1a = &H00 'ustawianie trybu pracy timera1 Tccr1b = &H0C Ocr1ah = &H7A 'załadowanie liczby 31250 do licznika Ocr1al = &H12 'przykładowa liczba do odmierzania (1s) Tcnt1h = &H00 ' zerowania rejestrów do zliczania...
A wiec co już wypróbowałem: [syntax=c] #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // define some values used by the panel and buttons int lcd_key = 0; int adc_key_in = 0; int rpm = 800; #define btnRIGHT 0 #define btnUP 1 #define btnDOWN 2 #define btnLEFT 3 #define btnSELECT 4 #define btnNONE 5 #define ledPin 3 // read the...
U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie był problem, gdy je zasilałem osobno - z sieci lub z baterii...
Witam! Napisalem program do obslugi ściemniacza na atmega16. Korzystamy z portu d. PD5 to pin wyjściowy sterujący triakiem. Impuls podany na PD3 lub PD4 zwieksza lub zmniejsza wartość zmiennej 'sel' regulując sterowaniem fazowym. PD2(INT0) tu pojawia sie przerwanie zboczem opadajacym od ukladu detekcji zera. Program ten prawie w ogole nie dziala. Napisalem...
[syntax=basic4gl] Report : noname3 Date : 10-21-2014 Time : 20:42:39 Compiler : BASCOM-AVR LIBRARY V 2.0.7.5, DEMO Edition Processor : M8 SRAM : 400 hex EEPROM : 200 hex ROMSIZE : 2000 hex ROMIMAGE : 546 hex -> Will fit into ROM ROMIMAGE : 1350 dec FLASH USED : 16 % BAUD : 9600 Baud XTAL : 16000000 Hz BAUD error : 0.16% Stack start : 45F hex Stack size...
Witam. Pożyczyłem sobie kod źródłowy od kolegi "michal2666"(któremu bardzo dziękuje za udostępnianie swoich projektów, dużo się z nich nauczyłem). Wygląda on tak: $crystal = 4000000 'Deklaracja częstotliwości kwarcu $regfile "attiny2313.dat" 'deklaracja modelu procesora Declare Sub Zwieksz 'Deklaracja procedury zwiększającej stan rejestru...
Przerwanie ma być co 800ms. Timer0 prawidłowo generuje to przerwanie: 1/8000000=0,000000125 => 0,000000125*256=0,000032 => 0,000032*250=0,008s => 0,008*100=0,8s i tyle jest odliczane. Dla timera1 rachunek jest analogiczny, ale niestety nie generuje przerwania po tym czasie, tylko kilkakrotnie później. Timery ładowane są początkową wartością w programie...
PWM skonfigurowałem w oparciu datasheet Atmegi32 oraz o kalkulator (http://www.et06.dk/atmega_timers/), który mi wyliczył takie wartości : http://obrazki.elektroda.pl/1205671500_1... PWM zostało więc ustawione następująco : Deklaracja buforów Przerwanie Funckja do zmiany flag buforow Czytanie danych Liczba próbek wprowadzona na stałe...
Witam Serdecznie, wykonałem schemat oto taki : http://obrazki.elektroda.pl/8280478200_1... Jest to timer na mikrokontrolerze Attiny 2313 ale problem tkwi w enkoderze. Mianowicie cały czas nie chce działać a ja szukam przyczyny juz trzeci dzień. Przepisałem kod z ksiązki Tomasza francuza i szukałem na elektrodzie różnych podobnych artykułów...
Witam. Jestem emerytem (64l.) i zaczynam dopiero przygodę z Arduino. Znalazłem ciekawy projekt miernika kondensatorów (w dziale DIY zagranica) i chciałem go wykonać. Jednak przy wgrywaniu programu wyskakuje błąd kompilacji. Czy może z kodem jest co nie tak? Proszę o pomoc. Pozdrawiam. JN W załączeniu podaję kod: [syntax=c] #include #include #include...
Witam, Napisalem program na atmega8 do regulatora dwukierunkowego, którego schemat można znaleść tutaj. [url=http://www.modelhobby.republika.pl/... Licznik pracuje z zegarem 8Mhz i prescalerem 64. Czyli licznik powinien zapelnić sie minimalnie po 2ms. Sygnał z odbiornika trwa od 1ms do 2ms. Najpierw zliczam czas impuslu. W zależności...
No i wszystko. Panowie, popełniłem błąd bo założyłem błędnie ten właśnie czas, nie wiem skąd mi się to w głowie pojawiło, przepraszam. Natomiast dzięki Waszym wyjaśnieniom i oscyloskopowi który służy mi nie od dziś, doszedłem do wszystkiego co aktualnie dla mnie istotne. Dziękuję za wyjaśnienia. Aktualnie z AtTiny85 wyciskam ile się da, i proszę mi...
Wrzucam moją wersję programu do obsługi 4 serw. W ostatnim tygodniu zakupiłem swoje pierwsze dwa serwa, więc mogłem się pobawić problemem ich sterowania. Z powodu, że mam tylko dwa, jedynie dwa kanały są sterowane z przetworników ADC. Pozostałe są obsługiwane przez przerwania, ale nie ustawiane. Wartości dla serw wpisuje się w tablicy serwa_val[]. Doświadczalnie...
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
Wgrałem to do siebie i jak dioda nie świeciła tak nie świeci. Tak jakby nie było przerwania od compare1a. Ale obeszłem się inaczej. Compare1a pracuje mi normalnie razem z icp1 gdy timer1 = timer, i tak to zostawie. A cała idea jest taka: Timer1 dostaje przerwanie od icp1 i zaczyna liczyc czas do nastepnego przerwania. I tak co 50 obrotów.I to jest czas...
Potrzebuje zmierzyć częstotliwość w zakresie do 200kHz(w tym przypadku 3,2MHz) procek: to ATmega8 Kombinuje jak koń pod górę, na czym polega mój błąd ? Timer 2 odmierza czas 1s. Timer 1 w założeniu ma zliczać impulsy z zewnatrz. (wartość 0xFF w OCR1A,-impulsy dochodzą z T1,-po zrównaniu TCNT1H/L zerują się-i cykl się powtarza.) Oróż Timer2 wchodzi w...
Jeśli zamiast dokładnego trybu porównania (compare), korzystasz z niedokładnego trybu przepełnienia (overflow), to czemu się dziwisz? TCNT1L =0xEE; TCNT1H =0x85; ślicznie sobie wszystko policzyłeś, ale zapomniałeś, że zanim procesor doszedł do tego wpisywania, to trochę czasu już upłynęło. Dokładnie upłynęło 3/60 czasu który chcesz odmierzać. 4\/3!!
ale one mówią na jaki mikrokontoler skompilowano program. doprawdy? Kolega jak zwykle "ciekawe" rzeczy pisze https://obrazki.elektroda.pl/2928104400_... Ciekawe skąd microchip wiedział jak będziesz kompilować i wgrać to do uC w fabryce Sprawdzałeśs co zwróci np to ? [syntax=c]sprintf_P( txt, PSTR( "AVR %02%02X%02X" ), SIGNATURE_0,...
Witam! Udało mi się zrobić prototypowy falownik trójfazowy na Arduino UNO Rev3 i wszystko pięknie działa poza jednym - wyraźnie słyszalny jest z silnika dźwięk sygnału PWM o częstotliwości niecałego 1kHz (piny 5, 6 i 9)... Znalazłem działający sposób na zmianę częstotliwości PWM na pinie 9 na forum Arduino: [url=http://forum.arduino.cc/index.php?t...
Na wewnętrznym to się nie ma co dziwić że źle chodzi a do kalibracji i tak potrzebny jest kwarc nawet wystarczy zegarkowy na Timer2 A to procedura kalibracji dla ATmega169 /***************************************... * * Function name : OSCCAL_calibration * * Returns : None * * Parameters : None * * Purpose...
Poczyniłem programik w C do zliczania impulsów z zewn. wejścia T1. Program zlicza impulsy do T1 w czasie ustalanym przez T0. Sterowanie jest tak ustawione że pierwsze odliczanie wpisywane jest do F1, drugie do F2, trzecie do F3 i tak w kółko. Na czas wyświetlania na LCD wyłączyłem przerwania. Wszystko działa ale nie do końca prawidłowo. Problem polega...
Nawet jeśli jest tylko dołączone. Odpytywanie następuje co parę sekund a efekt bielenia ekranu mam za każdym razem kiedy nacisnę przycisk w celu załadowania nowego obrazka. A tu raport (wklejam na razie większość gdyż może Wam to coś ułatwi: Report : System_LCD_TOUCH PAD_rs485 Date : 04-17-2010 Time : 13:48:37 Compiler : BASCOM-AVR...
http://obrazki.elektroda.net/89_12292705... przerobiony serwomechanizm probuje podlaczyc pod L293D i atmege16 tak jak na rysunku... posluguje sie kodem w mainie: TCCR1B=0x03; TCCR1B|= _BV(WGM12); TCCR1A&=~_BV(WGM11); TCCR1A|= _BV(WGM10); TCCR1A|=_BV(COM1A1);TCCR1A|= _BV(COM1A0); //PWM,Phase Correct Invert...
Witam Mam jakiś błąd w programie ale nie mogę dojść gdzie. Przed mian'em mam obsługę przerwania dla SIG_OUTPUT_COMPARE1A która teoretycznie powinna się wywoływać co 1s. Timer1 ustawiony w tryb compare na preskalerze 256, ustawienia timera są na początku maina. SIGNAL(SIG_OUTPUT_COMPARE1A) // sygnal porownania od timera 1A { sec++; sec%=60;...
Czesc, No niestety nie hula... probowałem tego. Myśle ze atmega jest zryta jakos... Mimo tego, ze mam obsługe przerwań i tak, wiem ze to musi działać bo skopiowałem to z mojego poprzedniego projektu, to mi się restartuje atmega. Zwrać na płytce nie ma. [syntax=c] #include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
Mi nie chodziło o wyłączanie przerwań na czas konwersji tylko na czas wysyłania komend 1 wire. Zresztą zobacz na mój kod. '$sim $regfile = "m168def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 16 $framesize = 32 Tccr1a = &H00 'ustawienie timera1 w tryb ctc Tccr1b = &H0C Ocr1ah = &H7A 'liczba do porównania . Ocr1al = &H12...
Jeżeli chodzi o pierwszy warning w tej bibliotece dotyczy SIG_USART_TRANS w sekcji __AVR_ATmega169__ [syntax=c] /* * FreeModbus Libary: AVR Port * Copyright (C) 2006 Christian Walter <wolti(at)sil.at> * - Initial version + ATmega168 support * Modfications Copyright (C) 2006 Tran Minh Hoang: * - ATmega8, ATmega16, ATmega32 support * - RS485 support...
Witam, Coś ostatnio mało ludzi odpowiada mi na pytania w Bascomie, więc postarałem się napisać swój program w C. Liczę więc na pomoc specjalistów od GCC ;) chciałbym zrobić pilot IR do mojego aparatu fotograficznego Olympus. Ze stronki lirc sprawdziłem sobie co i jak ma być dla pilota RM-1. Powiem nawet że chyba rok temu zrobiłem to w assemblerze i...
nic to nie daje. Juz nie wiem co mam robić próbowałem jeszcze użyć LED - do portd.7 - w sygnalizacji przepełnienia T2. Przesyłam calutki kod programu: #include <mega8.h> #include <delay.h> int licz = 4; // Timer 2 overflow interrupt service routine interrupt [TIM2_OVF] void timer2_ovf_isr(void) { licz++; } // Declare...
Witam, mój problem polega na tym, że chcę włączyć tryb CTC dla Timer0. Próbuję to zrobić (ASM i C) i w efekcie licznik się nie zeruje na wertości TOP, ale leci do MAX (255). Jednak tak samo napisany kod dla Timer1 już działa zerując licznik po osiągnięciu wartości TOP (np. 50). TIMER1 CTC MODE: [syntax=asm] ldi r16, 0x63 ; out OCR1AL, r16 ; ldi r16,...
[syntax=c] #include <avr/io.h> //#include <EEPROM.h> #include <avr/eeprom.h> //#include <Wire.h> //#include <LiquidCrystal_I2C.h> //LiquidCrystal_I2C lcd(0x20, 16, 2); // Ustawienie adresu ukladu na 0x27 #include "HystFilter.h" HystFilter potA( 1024, 128, 3 ) ; // 10 bit ADC = 1024, 64 discrete output values required, margin...
Zakres max do 1023 więc unsigned int czyli uint16_t Mam nadzieję że pomogł em Spróbowałem na początek wyświetlić tę zmienną "a" bez dzielenia przez 100 i nawet to nie wychodzi, coś mam chyba zle w tych instrukcjach wyświetlania na LCD spritf.. itd. Oto końcówka kodu: [syntax=c]void main(void) { a=read_adc(0); //wynik=145; //wynik=wynik/10;// Declare...
Witam Mam problem z uruchomieniem watchdog'a w atmedze324. Procesor nie uruchamia resetu. Ten program powinien wypisywać cyfry przez około 2 sekundy potem powinien się zresetować. Proszę o pomoc. [syntax=jezyk_programowania] #include <mega324.h> #include <stdio.h> #include <delay.h> #include <stdlib.h> #include <string.h>...
Witam wszystkich :D Niedawno rozpocząłem naukę programowania AVR w języku C i korzystam z programu Code Vision. Mam pewien problem, który być może jest prosty w rozwiązaniu, ale nie wiem za bardzo jak sobie z nim poradzić. Dodam, że przeszukiwałem internet ale bezskutecznie. Problem polega na tym, że po stworzeniu projektu i dodaniu kodu programu, w...
Witam, złożyłem płytkę, napisałem kod i coś nie działa, narazie podam kod bo płytka śmiga byłbym wdzięczny za sugestie co jest nie tak że to nie chce działać, kod zbudowany po części w CodevisionAVR. Wyświetlacz jest na wspólnej Katodzie stąd mój wniosek że aby zaświecić jakiś segment muszę wysłać 0 na pin, a aby go zgasić 1. Jeżeli źle myślę to poprawcie...
Witam, proszę o pomoc w dokończeniu kodu do pomiaru temp. Wyświetlacz LCD 2x16 podlaczyłem do portu D atmega8. Czujnik temp. DS18s20 podlaczylem do pinu 2 Port B. Rezustor podciagajcy 4,7k s szyny danych DQ na zasilanie 5V. Wygenerowałem sobie kawałek kodu w codevision. Próbowałem rózne funkcje znalezione w necie ale nie działa wiec proszę o pomoc....
#include <mega128.h> #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<OVR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)...
Przykładowy pełny program poniżej. Kompiluj najlepiej w CodeVisionAVR, nie będzie niespodzianek. Program można znaleźć pod adresem zawartym w ramce (wersja free). Dołączam też pliki .C .cof .hex .map i dla dociekliwych .asm i .lst Pozdr tOMmy /***************************************... This program was produced by the CodeWizardAVR V1.23.8a Standard...
załączam program, ale to nie jest problem napewno tego.: spark2_nowy.h ioinit.h enkoder.h spi.c [syntax=c] static inline void SPI_SET_SS() { PORTB|=(1<<PB2); } static inline void SPI_RESET_SS() { PORTB&=~(1<<PB2);// SS -> PB2 } void SPI_master_init() { SPI_SET_SS(); SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPI2X);// (SPE) SPI Enable, (MSTR)Master...
Witam wszystkich czy ktoś mógłby podpowiedzieć jak uzyskać odliczanie czasu w sek na atmedze? w programie CodevisionAVR uzyskuje taki kod w którym niby jest już jakiś wietrzny timer ustawiam go nawet na 8MHz ale nie wiem jak wyprowadzić to odliczanie sekund np na lcd wystarczy żeby ktoś podpowiedział to a dalsza cześć czyli odliczanie minut i godzin...
Witam. Robię miernik częstotliwości na ATmega8 z wyświetlaniem na LCD HD44780 w trybie 4-bit (mam zrobiony prototyp). Opanowałem już wyświetlanie (z obsługą BF), ale teraz przystawiło mnie z pomiarem liczby impulsów zliczanych na wejściu T1 mikrokontrolera. Wynik co prawda jest wyświetlany, lecz jest on niestabilny w taki sposób, że skaczą 2 ostatnie...
[syntax=asm]/***************************... Chip type : ATmega8 Program type : Application Clock frequency : 8.000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 ****************************************... #include <stdio.h> //#include <iomega8.h> //#include "delay.h" #include <avr/io.h>...
Dziękuję wam za wszystkie odpowiedzi wiele mi to pomogło jednak ciągle mam problem. Jest lepiej bo coś tam już widać ale jeszcze nie jest ok. Zaznaczam na początku że nie mam należytego sprzętu aby zrobić to jak należy jednak zanim zainwestuję w mikrokontroler taktowany 25 Mhz chcę mieć już jakiś wstęp na sprzęcie który posiadam a posiadam Atmegę16...
Witam. Przejrzalem CALE forum w poszukiwaniu rozwiazania mojego problemu. Probowalem wszystkiego co bylo podane w postach. Mam problem z polaczeniem tn2313 z ds18b20. zegar: kwarc 4MHz (testowalem juz na wew 1-8MHz bez rezultatow - ckdiv8 konfigurowalem poprawnie 1dis 0 en) podlaczam do portu d pod rozne piny. Od strony programowej tez powinno byc all...
RDS sam zrobiłem , miałem tylko HEX i kod w asemblerze [code][syntax=avrasm] ;***************************************... ;** RDS decoder with 2x16 LCD for ATtiny2313-10 (main procedure) ;** by Michael Wolf ;** ;** contact: michael(at)mictronics.de ;** homepage: www.mictronics.de ;** ;** Released under GNU GENERAL PUBLIC...
Dzień dobry, Chciał bym zrobić sobie prosty oscyloskop tyle że z wykorzystaniem uC Atmega8. Czy mógł by mi ktoś przetłumaczyć poniższy kod na język Bascom, lub chociaż objaśnić jego działanie? Kompletnie nic z tego nie rozumiem... Za przetłumaczenie na język Bascom oferuję 500pkt!
compare timer0 licznik tcnt1 capture compare
kabel ethernet przerywa makro przycisk access radio winda
schemat ustawienia rozrzadu schemat ustawienia rozrzadu
Filtr oleju w Ursusie C-385 się nie kręci - przyczyny Cyfrowy miernik hałasu VOLTCRAFT w Łodzi - gdzie kupić?