Sprobuj dac kondensator na wejsciu countera np 100n.
Witam Widzę, że temat z Timerem / Counterem w uC-ach ATMELa był wałkowany przynajmniej kilkadziesiąd razy,przeczytałem kilkanaście tematów - aczkolwiek nie znalazłem nigdzie uporządkowanej i miarodajnej odpowiedzi na kilka z moich pytań dot. Timera / Countera. Otóż chciałbym się dowiedzieć 1. jakie możliwości (czytaj: "co ten timer / counter potrafi...
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
wiesz... coś mi chodzi po głowie, że przy którejś wersji gcc albo avr-libc nastąpiły jakieś zmiany nazewnictwa procedur obsługi przerwań. Głowy nie dam że tak było, ale w każdym razie u mnie procedura obsługi od przerwania pochodzącego od przepełnienia timera 0 nazywa się: ISR (TIMER0_OVF_vect) { ... } A druga rzecz, to z całą pewnością...
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
Nie tworz wlasnych opoznen, tylko skorzystaj z delay.h. W SIGNAL(SIG_ADC) masz blad - zastanow sie co sie dzieje po przelaczeniu multipleksera ADC. Poza tym te liczenie do 50 to jaki ma sens? Jesli chciales usrednic 50 pomiarow to nie wyszlo. Zmienna counter jest niezainicjowana. Konstrukcja typu: result=(float)(ADCL | (ADCH<<8))/1024*VREF; wcale...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
OPIS FUNKCJI LOAD Action Load specified TIMER with a reload value. . . . It will do the calculation. (256-value) So LOAD TIMER0, 10 will load the TIMER0 with a value of 246 so that it will overflow after 10 ticks. TIMER1 is a 16 bit counter so it will be loaded with the value of 65536-value. Czyli u ciebie ładuje 65536 - 65436 = 100 Przepełnienie właśnie...
no raczej działa nawet w następnych cyklach. sprawdz jeszcze to $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000 Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising On Timer1 Odmierz_1s Dim Licz As Byte , I As Byte Enable Interrupts Enable Timer1 Start Timer1 Timer1 = 65535 - 15625 Do Loop End Odmierz_1s:...
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...
regfile = "2313def.DAT" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 'Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4 Cursor Off Config Pind.6 = 1 Config Pind.0 = 0 Portd.0...
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
No to próbuję: [syntax=c] //* \section OA Original author //* Andy Gayne is the original author of this application note. //*/ //program z noty Atmela 136 //przerobiony na ATMega8, kwarc 11059200 i okrojony program #include <avr/io.h> #include <avr/interrupt.h> //! Pin mappings #define CHMAX 6 // maximum number of PWM channels #define PWMDEFAULT...
Dlatego, że nie używasz AS masz problem z ustaleniem przyczyny. Wystarczy uruchomić symulator, by zobaczyć, że Twój program wpada w zabezpieczenie dodawane przez kompilator polegające na wyłączeniu przerwań globalnych i zapętleniu się w specjalnie dodanej pętli. Symulator na początku zabawy z mikrokontrolerami, to podstawowe i bezpłatne narzędzie -...
No dobra, udalo ci sie polechtac moja proznosc wiec moze zrobimy tak. Opisze tutaj przykladowego mekafile-a z nastawieniem na WinAVR, Atmega8 i STK200 tak aby inni tez cos z tego mieli. W zasadzie wszystko jest opisane w angielszczyznie no ale jakby kto nie umial to daje po polsku. # Hey Emacs, this is a -*- makefile -*- #---------------------------------------...
Cześć, Gratuluję udanego i ciekawego projektu. Pewnie spędziłeś nad nim sporo czasu. Boję się, że mało osób używa języka Pascal do programowania układów AVR, skoro teraz króluje język C. Czy możesz udostępnić przykładowy kod typu blink led dla Atmega8 lub innego procesora, żeby przypomnieć sobie ten język programowania? Pozdrawiam, Rafał -:) Dziękuję...
No właśnie Atmega8 ma dwa timery, na nóżce 6 i 11mozna zliczac impulsy, a w dokumentacji czytamy: Two 8bit counters One 16bit counter Czyli ten trzeci na której nóżce moze zliczać? Normalnie sie go używa jak innych? Config Timer0 = Counter , Edge = Rising Config Timer1 = Counter , Edge = Falling Wystarczy wpisac? Config Timer2 = Counter , Edge = Rising...
Wygoda, wolę kręcić niz kombinowac z przyciskami, zwłaszcza te strt/stop. Chodziło mi o to że nie ma płynnej regulacji w locie (a jest w opisie). Takie zaglitch-owaneraczej trudno nazwać płynną i w locie. Płynna to nie, w locie to tak (raczej tak) PS nie pytałem o R-MIK tylko o ten projekt. A pytania zadałem bo IMO nieuczciwie kolega (at)gdL prezentuje...
Może taki kod spełni twoje oczekiwania. Mam nadzieję, że nie ma błędów. [syntax=c]#include <avr/io.h> #include <util/delay.h> unsigned char counter, leds , ledTog; int main(void){ DDRD = 0xff; //wyjścia PORTD = 0xff; //wyłącz diody PORTC |= (1<<PC0); //pull up PC.0 - podpięty klawisz do masy for(;;){ _delay_ms(20); //co 20ms sprawdzam...
Kolego bykham w ten sposób nie uda Ci się osiągnąć stałej czasowej np. te 100ms. W zależności ile uP wykona przerwań ten czas raz będzie krótszy, raz dłuższy. Raczej spróbuj to wykonać według poniższego programu. Kod: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 Dim F As Word , Pomocnicza As Byte Config Portd.5 = Input 'T1 (Counter1)...
nie możesz używać instrukcji load timer= jeśli chcesz w ten sposób to tak:load timer0,250(to daje do odliczenia 250 cykli) lub counter0=6 co też daje tyle samo do odliczenia czyli 250 cykli, to jeden z problemów z Twoim tajmerem Dodano po 3 Zapamiętaj zasadę, instrukcja load timer oblicza sama ilość cykli zliczanych do wystąpienia (tyle ile wpiszesz...
KaJakKrzysztof: W katalogu Bascoma w program files masz katalog Samples. Jest tam o ile się nie mylę zegarek, jakiś bardziej skomplikowany zegarek i mnóstwo innych przykładów zastosowań timerów, przerwań itd. Na pytanie - czy coś takiego będzie działać odpowiedz sobie sam, załaduj program do AVR-ka. Timer od countera różni się tym, że służy do ODLICZANIA...
Wy edytowałem takie coś. [syntax=basic4gl]'************* Konfiguracja uC ***************** '***************************************... $regfile = "m8def.dat" $crystal = 16000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Dim Wynik As Long Dim Wynik1 As Long...
jak nie odp ...wystarczy spojrzec na kod ... asembler jest tak szerokosc impulsu faktycznie zalezy od zadanej pozycji czyli od impulsow zliczanych prze counter to logiczne... ale nie w tym tkwi problem lecz w TCNT0=200... jak zmienic aby wychylenia serw byly bardziej dokladne czyli jak zmienic program aby atmega sie wyrabiala??
Dla ułatwienia dodam że Bartek teraz działa na płytce EVBavr04 z Propoxu-nieco zmodyfikowaną- z podpiętą płytka stykową. I wręcz bardzo dobrze, uważam, że wszelkie próby własnych modyfikacji tych kodów prezentowanych w książce są bardzo pożądane bo dadzą sporo dodatkowej praktyki. Czas w tym wieku ma ZUPEŁNIE INNE ZNACZENIE niż w naszym. Płynie wolno-...
ginar: twoja porada okazała się słuszna, chociaż dalej mam problem. I nadal nie wiem jak sobie z nim poradzić. Nie zmodyfikowałem co prawda funkcji, tylko zmodyfikowałem mój program (tak było znacznie szybciej). Co zrobiłem? Zmieniłem położenie następujących linijek, umieszczając je już po wysłaniu wszystkich komend do LCD: sei(); TIMSK = 1<<TOIE0;...
Witam to mój pierwszy post na tym forum, stąd możecie mi wierzyć jak bardzo jestem zrozpaczony:) jeśli temat jest w złym miejscu to prosiłym moderatora o przeniesiegnie i z góry przepraszam:) zwykle staram się rozwiazywać wszystkie problemy sam ale tym razem mam coś czego nie jestem w stanie zrozumieć. Pracuję chwilę nad programem którego działanie...
Config Timer0 = Timer , Gate = Internal , Mod = 2 GATE ??? Syntax CONFIG TIMER0 = COUNTER , PRESCALE= 1|8|64|256|1024 , EDGE=RISING/FALLING , CLEAR TIMER = 1|0 CONFIG TIMER0 = TIMER , PRESCALE= 1|8|64|256|1024 Jednosci = Licznik Mod 10 Jednosci - byte Licznik - word ........ = nie da rady
witam , potrzebuję pomnożyć 7razy impulsy wejściowe , częstotliwość wej nie jest duża max 200hz , znalazłem podobny program na pic16 mnożacy 39razy i kawałek kodu na atmege8 również mnożący 39razy , jednak zupełnie nie mam pojęcia jak cos takiego napisac w bascomie kod dla pic: Device 16F628A Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_ON...
Cóż można poradzić. Mikro kontroler Atmega8 :). Port D klawiaturka, port B do wyświetlania liczby i port C do wybierania wyświetlacza. A i jeszcze możesz dodać buzerek bo będziesz miał jeszcze wolne piny, tylko przez tranzystor kluczujący. Już całkiem będzie efekt z counter strike. Gdzie gracie w tego paintbala? Jak coś to pisz pomogę jak będę umiał.
o kurde... przegladalem wszystko ale jakos mi sie wymknelo :/ dzieki :) bardzo fajny programik :) mam jeszcze takie pytanie: (BASCOM AVR i atmega8) czy jest mozliwe wpisywanie wartosci z tabeli (DATA) ale nie do calego portu tylko do 7 jego pinow? np port D ma 8 bitow ale potrzebuje jego wejscie nr5 jako wejscie timera pracujacego jako counter a na...
Poprawiłem na timer2, kompiluje się, proteus też nie pokazuje błędów ale nic się nie wyświetla. Dobrze naniosłem poprawki przy zmianie z timera0 na timer2? /* **Project:Delay Functions **Purpose:Define a series of functions to delay for a specified ** time -- every millisecond or every ~50 microseconds. ** **Author: Steven Pickles **Date:...
Czy może ktoś pomóc?? (przepraszam za post pod postem) Zmodyfikowałem kod tak jak niżej podam, układ działa i mierzy mi dobrze obroty, ale tylko na pinie 11, na pinie nr 6 również mierzy ale pomiar jest niedokładny waha sie często w zakresie (1400-1900rpm) podczas gdy na pinie 11 jest około 1800rpm stałe. Dlaczego tak sie dzieje? Mozna cos na to poradzić?...
Witam udało mi się ustawić tak jak chciałem Kod wygląda tak: // main TCCR2 |= (1 << WGM12); // Ustawia timer1 w tryb CTC OCR2 = 250; // zliczanie do tej wartosci TCNT2 = 0; TCCR2 |= (1 << CS20) | (1 << CS21) | (1 << CS22); TIMSK |= (1 << OCIE2); // zezwolenie na przerwania CTC //...
pliki d_led.c , d_led.h , projekt_sygnalizator.c [syntax=c] ///////////////////////////////////// ////////// Made for atmega8, 16Mhz oscillator #include <avr/io.h> #include <avr/interrupt.h> #include "d_led.h" #include <util/delay.h> //Segments data volatile uint8_t seg1; volatile uint8_t seg2; //clock counter volatile uint8_t clk_counter=0;...
Siemka, ostatnio chciałem sobie podłączyć obrotomierz do skutera ale zobaczywszy ceny na allegro postanowiłem zmontować taki obrotomierz sam. Jako ze bawiłem sie juz w arduino itp i miałem pare czesci to zamowilem tylko uC atmega8 bo reszte komponentów miałem. Złożyłem jakoś ten procesor podłączyłem do Timera1 kabel owiniety w okół kabla WN ok 10-12...
Witam, Jakiś czas próbuję doprowadzić do ładu mój termometr. Odsyła on sygnał po resecie, jednak próba odczytania temperatury kończy się fiaskiem. Działam na procesorze Atmega8, do opóźnień używam bilblioteki util/delay.h (WinAVR). Termometr podłączony jest na stałe do zasilania. Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego...
Sygnał mierzony na Pind.4. Mega na kwarcu zewnętrznym. $regfile = "M8def.DAT" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1 = Timer , Prescale = 256 Config Timer0...
Uruchomiłem wszystko zgodnie z tym ale nie wskazuje wyniku gdzie jest błąd Sygnał z generatora na razie podaje na pin D7 $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Dim Wynik As Long Config Timer1 = Counter , Edge...
Witam, chciałbym przerobić zegarek z tego projektu http://www.avr-tutorials.com/projects/at... na Atmega8. Chciałbym również usunąć odliczanie sekund ponieważ dysponuję tylko wyświetlaczem czterocyfrowym. Po skromnych przeróbkach mój kod wygląda tak: [syntax=c] #define F_CPU4000000UL #include <avr/delay.h> #include <avr/io.h>...
ja to rozumiem ale to były wahania ze raz dawał 0 potem następny 30, a następny pomiar 60... 0 0 30 60 60 0 30 trochę duża rozbieżność... zlutuje to jeszcze raz zobaczę co się będzie działo Dodano po 2 Wywaliłem tranzystor wstawiłem sam rezystor podciagajacy . załadowałem program [syntax=basic4gl] Dim Wynik As Long Dim Wynik1 As Long Config Timer0 =...
WItam kolegów jest taki problem podaję na wejśie T1 atmega8 przy kwarcu 16Mhz impulsy o okresie 11us co daje około 90kHz i procek zlicza jak należy bo porównuję z oscyloskopem, ale problem rozpoczyna się gdy włączę INT0 na którym też są te same impulsy ,gdzie sprawdzany jest kierunek obrotu enkodera , wtedy licznik zlicza głupoty w zasadzie około dwa...
Więc od początku. Wzorowałem się na tym schemacie: http://obrazki.elektroda.pl/7178254200_1... (jest, tu mały błąd PC0, PC1, PC2, PC4 - ale to wykryłem na początku) po drobnej przeróbce kodu, stoper działa tak jak tego potrzebuje. (zmiany, jakie dokonałem opisałem po polsku) jedynie potrzebuje duużych cyfer. załączam cały kod: [syntax=c]#include...
Szanowni Forumowicze, staram się z byle błahostką tutaj nie pojawiać, ale niestety natrafiłem na problem w trakcie programowania µC z którym nie potrafię sobie poradzić. Ćwiczę programowanie w C i od kilku dni testuję Timery na Atmega8. Udało mi się zaprogramować je na wszystkie znane mi sposoby. Niestety po zmianie programu i konfiguracji na płytce...
czesc mam taki projekcik obrotomierza. program wyglada tak: $crystal = 4000000 $regfile "m8def.dat" Config Lcdbus = 4 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.1 , Rs = Pb.0 Set Portd.2 ' Miernik prędkości obrotowej 'licznikiem 0...65535 jest Timer1 Dim Wynik As Long Config Timer1 = Counter...
Odłączyłem RC z triaka wylutowałem LEDy i wstawiłem zamiast 390R to 200R. Jeżeli nie ma podłączonego jednego triaka to drugi działa dobrze natomiast gdy są 2 to oba dwa działają naraz Dodano po 2 Problem rozwiązany wyprowadzenie (5) od moc było podłączone do GND (aby nie wisiało) wystarczyło odłączyć je od GND tylko od jednego Moca i układ śmiga w pierwotnej...
Witam Procesor przechodzi w stan Powerdown po ustalonym czasie kiedy zmienna L=1. Ustawiłem wybudzanie z przycisku (podanie 0 na int0) no i nie działa . Przepatrzyłem już chyba wszystkie tematy na forum i robiłem z milion kombinacji. Już nie mam pojęcia co robić czy to może być wina BASCOM, procesora , prosilbym o konkretne wskazówki jak ustawić aby...
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...
Widzę,że nie ma zainteresowania tematem. A mnie na razie udało się stworzyć układ na Attiny2313. Config Portb.0 = 1 ' ustawienie całego Portu B0 jako wyjścia Portb.0 = 1 ' stan spoczynkowy Portu B0 ustawiony na 1 Config Portb.1 = 1 ' ustawienie całego Portu B1 jako wyjścia Portb.1 = 1 ' stan spoczynkowy Portu B1 ustawiony na 1 Config Timer0 = Counter...
Kod programu jest wyżej, ale podam jeszcze raz (tak jaki jest u mnie): $regfile = "attiny2313def.dat" 'attiny2313 $crystal = 1000000 ' 1MHz Config Portb = Output Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.2 Config Lcd = 16 * 2 'wyświetlacz 2 linie po 16 znaków Cursor Off 'wyłączenie...
atmega8 bascom counter counter strike counter board
dallas klucz martwy zasilacz laptop detekcja podłączenia obciążenia
elektrownia wiatrowa elektrownia wiatrowa
Kolory przewodów DC w zasilaczu Dell – plus, minus, sygnał, identyfikacja ID Motorola Edge 40 Neo a uruchamianie bramek sklepowe