Po pierwsze nie podoba mi się zapis: Pinc.1 = not Pinc.1 Powinno być raczej: Portc.1 = Not Portc.1 Albo jak ktoś się bardzo uprze: Portc.1 = Not Pinc.1 Ale ogólnie do rejestru Pinx raczej nie zapisujemy. Ponadto... zegar 4MHz, dzielnik w timerze przez 256, timer0 (8 bitowy) ładowany wartością 250.... to daje podział przez 6*256 = 1536. To częstotliwość...
daj ISR (TIMER0_OVF_vect)
Wysyłasz procesor pod przerwanie którego niema. To jak myślisz co biedny procesor ma robi jak tam niema nic. [syntax=c] ISR(TIMER0_COMP_vect) { }[/syntax] To musi być dodane. Resztę zrobi kompilator i przestanie się zawieszać.
Pewnie że nie będzie działać, ustawiłeś Preskaler =256 a więc przy zegarze 16MHz przerwanie od Timer0 będzie pojawiać się z częstotliwością 62500 razy na sekundę. (16000000/256 = 62500). Zalałeś modem zapytaniami o CSQ i biedny nie ma czasu na odpowiedź.
Wpisać magiczne "volatile" volatile int sekunda=0;
Dokładnie tak cyber90 Poniżej konfiguracja timer0 w trybie fast PWM dla Atmega 644p [syntax=C] void timer0_conf(void) { //konfiguracja timera0 - pin PWM PB3-OC0A TCCR0A = ( (1<<WGM00) | (1<<WGM01) | (1<<COM0A1)); // tryb fast PWM TCCR0B= (1<<CS02) | (1<<CS00); // preskaler =1024 dla 16MHz daje ok. 60 Hz DDRB=(1<<PORTB3);...
Coś mi się zdaje że przerwanie się nie wykonuje. W symulacji się wykonuje, ale co 65536 cykli. BASCOM coś pierdzieli. Może przejdz na Timer0 albo Timer2 , przynajmniej dla testu.
UPS meaculpa ;) faktycznie zliczasz 250x250... To powinno w ogólnym zarysie działać... Przy czym dokładne zbytnio to nie będzie:) A kontrolnie enable timer0 i enable interrupts masz?:>
W tym kodzie jest błąd: Load Timer0 = 250 jest niepoprawnie zapisane bascom nie krzyczy błędem ale ta składnia nie działa. Powinno być Load Timer0, 250 Ta funkcja ładuje do timera wartość 256-wartość, czyli w twoim wypadku 6.
Sprawdź te fuse bity czy na pewno atmega nie chodzi na wewnętrznym kwarcu. Po drugie w obsłudze przerwania nie powinno być żadnego wait, szczególnie takiego dugiego. Zmień "Load Timer0 = 250" na "Load Timer0, 250"
O kurcza. Nie wiedziałem że BASCOM umożliwia coś takiego. Ale jednak domyślne ustawienie jest na Timer0 i o tym mówi HELP. A czy servo drga też na BASCOMOowej obsłudze tego wszystkiego? nekmil : Też bym nie poznał że jesteś Czechem ;)
(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. Nie tylko...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Witam... Generalnie rzecz biorąc procedury opóźnienia czasowego nie nadają się do modulowania diody IR... Częstotliwość nie jest zbyt stabilna to raz... Dwa nie uzyskasz 36kHz musisz skorzystać z dobrodziejstw timera... Np. tak... #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> int...
Ja osobiście nie mam problemów z przenaszalnością kodu w firmowym asemblerze Atmela, nawet pomiędzy różnymi wersjami rdzenia, gdyż są w nim wbudowane definicje pozwalającej na asemblację warunkową. Przykład - instrukcja lpm , zamiast której używam następujące makro: .macro LpmPlus #if ((__CORE_VERSION__==V2E)|...
Ja mam taki program zrealizowany na Atmedze8. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 40 $framesize = 40 Config Portb.1 = Output 'wyjscie triak Triac Alias Portb.1 Config Rc5 = Pind.7 'rc5 pin timer0 Dim Level As Word 'poziom sciemniania 1 - 20 Dim Timer_val As Word 'wartosc timer1 dla sciemniania Dim Command...
Która atmega? W atmega8 możesz użyć: Timer0 - odmierzanie czasu Timer1 - zliczanie impulsów Timer2 - PWM
Kompilator nie wywala Ci warninga :?: Zamiast stosować: volatile :?: a tak już ostatecznie jak to ma działać :?: TUTAJ -> po wywołaniu przerwania zmienna Tczas jest zerowana więc max wartość jaką ona osiągnie po inkrementacji wynosi 1 po czym po kolejnym wywołaniu się wyzeruje :) Pozdrawiam
mam maly problem.. zdarza sie ze moj układ oparty na ATmega 32 jakby sie zawieszał... wykorzystuje przerwanie zewnetrzne... // External Interrupt(s) initialization // INT0: On // INT0 Mode: Rising Edge // INT1: Off // INT2: Off GICR|=0x40; MCUCR=0x03; MCUCSR=0x00; GIFR=0x40; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; a w programie...
Konfiguracja prescalera jest w TCCR0 B a nie TCCR0A.
http://obrazki.elektroda.net/41_12588515... Zamieszczam projekt sterownika do wymiennika ciepła i pompy wymuszającej obieg wody w centralnym ogrzewaniu. To moje pierwsze użyteczne urządzonko zainspirowane zostało wymianą zbiornika do ciepłej wody. Całość składa się z: wyświetlacza alfanumerycznego bardzo znanego i łatwo dostępnego: WC1602A...
Tak, poprawiłem. Problemem okazała się moja podstawka do programowania która ma zwarte PC1 z PD2 ponieważ na tych pozycjach w podstawce ZIF jest GND po przełączeniu Atmege 16. Pozdrawiam
Mnie wychodzi, że to nie jest tryb CTC tylko normalny. Po drugie na przerwanie compare trzeba zezwolić w rejestrze TIMSK - bit OCIE0 - masz < zamiast << stąd problem. Jak masz jakieś wątpliwości co do konfiguracji, to użyj symulatora AVR Studio. Można sobie w nim też ustawić tryb pracy i odczytać wartości rejestrów kontrolnych dla niego i potem...
Mam problem z uruchomieniem przerwania, kombinowałem wiele razy z różnymi ustawieniami jednak nie obserwuję zmian na porcie PD7, PWM na porcie PB3 działa (przebiegi obserwowane na oscyloskopie). Mikroprocesor to ATmega 16 taktowana z kwarcu 16 MHz. Może ktoś zerknie świeżym okiem i doradzi. #define F_CPU 16000000 #include #include #include #include...
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
https://obrazki.elektroda.pl/5445428700_... Cześć, Chciałem przedstawić Wam zegar widmowy, który niedawno wykonałem. To jest moja odskocznia od pracy i małe DIY po godzinach. Moje podstawowe założenia to możliwie najprostsza konstrukcja pod względem elektronicznym i mechanicznym oraz jakaś tam doza estetyki. Mózgiem zegara jest Atmega...
CONFIG TIMER0 = PWM jest obarczone specjalną właściwością: działa tylko na wybranych mikrokontrolerach. Do sprawdzenia eksperymentalnie. Dlatego lepiej będzie licznik skonfigurować na poziomie bitów z TCCR0(A/B), a wartość ładować bezpośrednio do OCR0(A/B). No i nie zapominaj, że rodzina ATmega to nie jeden układ tylko ponad 30 i nie wszystkie mają...
No fakt, czeski błąd. Kliknęło mi się na inny manual, chyba do atmega 325.
Witam Czy ktoś ma jakiś pomysł jak programowo zliczać impulsy timerem0 większe od 256 ? Timer1 chciałem wykorzystać jako PWM więc on odpada. Pozostaje timer0 ale on zlicza tylko do 256, a ja potrzebuję zliczyć do 390. Jak to zrobić programowo, żeby jak counter0 się zwiększy o 1, to żeby zwiększył jakąś zmienną o jeden. W ten sposób mógłbym zliczać większą...
Próbuję przerobić przykład "Przyklady\LCDAlfa\LCDAlfa-transact-int\... z książki [url=http://helion.pl/ksiazki/jezyk-c-dl...
Witam, chciałem uruchomic asynchroniczny generator 32,768kHz w procku Atmega 128. Z dokumentacji wynika ze ma on taktowac timer0 po ustawieniu bitu AS0 w rejestrze ASSR. Owszem po ustawieniu tego bitu oscylator uruchamia sie (widac sinus 32k na oscyloskiepie) jednak timera0 nie taktuje. Po przerzuceniu taktowania na Xclk wszysto jest OK. Czy ktoś miał...
W takim razie będę musiał gdzieś wcisnąć kwarc na płytce :( chyba, ze inna atmega będzie bardziej dokładna.. dziękuje wszystkim za pomoc :)
Dzięki za odpowiedzi. Zasilacz mam 7.5V 4A od jakiejś drukarki lub skanera. Napisałem prosty program do testów i wyniki mnie zadziwiły. Program najpierw wysyła na wyświetlacz napis "reset" który świeci się przez 1 sek, a potem program wykonywany jest dalej. Zamiast silnika zamocowałem żaróweczkę, aby pobór prądu był mniejszy. Jeżeli zamieszczę:[syntax=cpp]PORTD...
snow - jak mogę nie trafiać z częstotliwością skoro : 1. do generowania przebiegu wykorzystuję Timer0 2. Atmega taktowana jest 8MHz 3. stosuję podział przez 100 czyli timer0 tyka 80kH i w procedurze obsługi timer0 zmieniam wciąż na przeciwne stany nadajnika - dzięki czemu wychodzi mi piękna równa częstotliwość 40kHz - to akurat mam sprawdzone na 1000000%...
Przerwanie wolę mieć wolne. Poza tym przez zastosowanie ICP zajmuje się wyłącznie Timer1 a nie Timer0 i Int)...robiw
mam jeszcze jedno pytanie dorwałem program w bascomie wsad do innego sterownika na podstawie jego zaprojektowałem schemat . Moje pytanie jest takie czy nie popełniłem błędu w rozumowaniu i na podstawie tego będzie to chodzić ?. I ostatnie pytanie nie rozumiem co ma w programie robić pinD.2 program się wiesza jak zaremuję to (input ster) to program w...
Dzień dobry, Zrobiłem płytkę, i od strony sprzętowej wszystko działa dobrze. Dla przypomnienia, na wyjściu jest mostek prostowniczy i trzy tyrystory. Mam teraz prąd stały, a przerwy w napięciu są na tyle duże że bez problemu gaszą się tyrystory, i działa też detekcja 0V. Pasek LED działa i na 230VAC i na DC tyle że na AC widać bardzo mruganie. Na DC...
Kod jest prosty, bo siedze nad nim od dawna i już wyrzuciłem wszystko co było zbędne. Zależy mi na tym by na wyświetlaczu pojawił się napis "Timer0 OK". [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "LCD/lcd44780.h" void timer_start (void); volatile uint16_t...
Polecam "Mikrokontrolery AVR ATmega w praktyce" Rafała Baranowskiego.Własnie uczę się z niej.Autor odwołuje sie też do danych ze strony Atmela dot. konkretnych typów kontrolerów(wiele zmian!).Książka bazuje na ATmega16 .Pozdrawiam.
Przerobiłem program na Atmega328. Teraz ma tylko odbierać dane z master na Atega1284p i wysyłać do Domoticz. [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0 = Buffered , Size = 150 ,...
Dokładnie tak. Pytanie z jakiego uP korzystasz? Np.: tiny2313 ma 4 wyjścia OC: OC0A i OC0B dla Timer0 oraz OC1A i OC1B dla Timer1. Dla mega8 masz trzy wyjścia OC: OC1A i OC1B dla Timer1 oraz jedno dla Timer2 (OC2) Co do wejść oznaczonych TOSC1 i TOSC2 - w kontrolerach ATmega służą do podłączenia kwarcu zegarkowego (32kHz). Przy wykorzystaniu licznika...
To chyba nie kwestia wyważenia, tylko tego, że jest tak solidnie zamocowane, no i w końcu silnik od HDD jest dość mocny. Jest w tym sporo prawdy. Śmigło jest przykręcone w kilku miejscach a dodatkowo silnik ten ma tak zwartą konstrukcję, że mam wrażenie, że samochód mógłby po nim przejechać. Mimo to projektując płytkę starałem się rozmieścić elementy...
Witam wszystkich, jestem początkujący w AVR i potrzebuje porady. Napisałem program do zliczania czasu (timer0) oraz generacji prostokąta na 40khz (timer1- fast pwn 16bitowy) Ogólnie to atmega pracuje na 1Mhz nie daje kwarcu.. Moje pytanie czy jest możliwość zrobienia generatora na 40kHz na innym timer0 lub timer 1 (8 bitowe) bo timer 1 jest 16-bitowy...
Właśnie wszystko z tą ATmega 64 robię na podstawie pdf-a, mam z nią pierwszy raz do czynienia, ale o kompatybilności z 103 ustawianej przez producenta nie wiedziałem. Mam jednak taki problem: gdzie w AVR Studio mogę zmienić ten fusebit M103C? Dodano po 9 Znalazłem, nazywa się "CompMode" i po odznaczeniu wszystko działa jak należy. Wielkie dzięki wszystkim...
mam takie pytanko w atmega 16 niewiem w jaki sposób włanczać i wyłanczać timer niewiem któr rejestr dego dokonuje , a może one chodzą cały czas bo jeśli ustawie timer na to żeby zliczał (timer0) impulsy zegara sys. i włanczał przerwanie gdy zgodzie się jego wartość z rejestrem OCR0 ale od kiedy on ma się włączyć ktury bit to ustawia ? nobo leci sobie...
Jeszcze jedno pytanie pytanie. Dlaczego mi się ciągle atmega resetuje ?? Efekt ten zauważyłem od kiedy podpiąłem wyświetlacz. Reset podpinałem przez 10kΩ i przez 4,7kΩ do +5V i nadal to samo. Napięcie zasilania brane z portu USB lub z zasilacza zero różnicy.
Czyli rozumiem że napisany kod jest w porządku? W takim razie zaopatrzę się w kwarc zewnętrzny. Od razu moje dodatkowe pytanie, jak zapewnić aby po odcięciu zasilania atmega poprawnie liczyła sekundy? Czy doliczymy się np. do 10 a następnie wyłączę zasilanie na 10s to chce żeby wskazało 20s. Czy takie coś jest w ogóle możliwe?
Więc zostają 2 możliwości, albo program coś mieszał w odliczaniu czasu(może przerywałem timer0 timerem1 ale to powinno powodować opóźnienia!)albo atmega zła :P Mniejsza, teraz zrobiłem go na pcfie, wystarczy program dopieścić :P
Witam, Chciałbym przerobić nie swój kod programu pod żyroskop l3g4200d. Kod znalazłem w internecie jest napisany właśnie na atmegę 1284p, a ja potrzebuję go przerobić na atmegę8. Kod wygląda następująco: [syntax=basic4gl]'======================... ' Project: L3G4200D 3tripple axes gyro Test #1 '...
timer0 timer1 atmega timer0 atmega bascom przerwanie timer0 atmega
napięcie żarówki projektora amica pralka otwarcie drzwi ustawić switcha cisco
Samsung Galaxy – odblokowanie telefonu zablokowanego wzorem, Find My Mobile, FRP, reset BMP280 „Could not find a valid sensor” – Arduino, ESP32, GY-BMP280, I2C, adres 0x76/0x77, wiring