Program poprawiłem, ale dalej jest problem z drugim timerem tzn. działa tylko z TIMER0 , działa klawiatura, funkcja rozpędzania wirnika. włączenie drugie timera wiesza program. Zamieszczony program (tylko z TIMER0) działa fizycznie. [syntax=vbnet] $regfile = "m2560def.dat" $crystal = 16000000 '$sim '***************************************... Config...
http://obrazki.elektroda.net/38_11898903... Szczęśliwi czasu nie mierzą, jednak ja zrobiłem zegar. Sterowany mikrokontrolerem ATmega8, z zielonym 14 mm wyświetlaczem LED i kwarcem 32768 Hz. Zegar, który w tej chwili pokazuje godzinę 72.22 ;) , ale o tym później. Schemat Cyferki włączane są sekwencyjnie przez port C za pośrednictwem wtórników emiterowych...
Witam, chciałbym prosić pierwszy raz od 16 lat w zasadzie o gotowca. Lub szkic programu żebym mógł sobie go sam napisać. Chcę dokonać przeróbki licznika https://sansan.cc/en/productsinfo.aspx?P... Chcę w nim zrobić: 1. W momencie dotarcia do "umownego" czerwonego pola czyli powiedzmy zapalenia przez licznik diody LED 6000 obr. Atmega...
witam czy moze mi ktos powiedziec jak odczytac w bascomie flage TR0 chodzi mi o to ze dalsza praca programu ma byc uzalezniona od tego czy licznik dzial czy nie moze w bascomie jest inny sposob zeby odczytac stan licznika dal przypomnienia dodam ze flaga ta znajduje sie w rejestrze Tcon a adres rejestru jest podzielny przez 8 wiec mozna go adresowac...
Witam, Mam problem z programem na Atmege8a, mianowicie: Piszę program sterujący pracą silnika (za pomocą L293D) który dodatkowo będzie zliczał w czasie impuls od przerwań zewnętrznych i tu pojawia się problem: kiedy napisałem program obsługujący tylko pracę silnika, wszystko działa sprawnie, kiedy napisałem program zliczający impulsy w czasie, również...
Programowanie to nie jest chybił trafił i zgadywanie. Co innego jeśli popełni się błąd nieświadomie. Metoda "a może zadziała" nie wydaje się być dobrą. Pomyśl co się dzieje jeśli na początku granica Compare ustawiona jest na 600. Teraz w pętli głównej która przez to że ma tam jakieś swoje opóźnienia, a timer swój preskaler zmieniasz granicę Compare....
Mamy pomysły. Użyjesz sprzętu który ma oba interface sprzętowe. Zdeklarujesz sobie bufory do wysyłania/odbierania jako bajtowe o odpowiedniej pojemności. Do tego liczniki danych w buforze. Program ma działać samoczynnie - ma odebrać dane do bufora po rs i wysłać dane samoczynnie z bufora po i2c po wyzwoleniu oczywiście. I2C zaraz po pierwszym przerwaniu...
powiem szczerze ze nie mam dużego doświadczenia z mikrokontrolerami i obecnie nie dysponuję czasem aby się zagłębiać ale potrzebuję wykonać pewien sterownik i zastanawiam się czy jest to w ogóle możliwe. Zatem program miałby sterować silnikiem 230V, to akurat nie problem, chodzi o to że sterownik ma kontrolować pracę wyciągarki i praca ma się odbywać...
- PROGRAM GŁÓWNY ---> naciskam przycisk np. portd.1 i wchodzę w USTAWIENIA1 ----> naciskam kolejny raz klawisz portd.1 i wchodze w USTAWIENIA2 Witam. Robiłem cos podobnego ale na 89c2051 - wiadomo mało portów. Dlatego menu zrobiłem inaczej. W pętli głównej zrobiłem odwołanie do wejścia i napisałem: if P1.0 = 0 then call Ustawienia else call praca end...
ciężko tu polemizować nawet z kolegą - bo ni jak nie idzie zrozumieć twojego czesko-chińskiego języka , przeplatanego wydaje się, językiem polskim, za to okraszonego rzęsiście ohydnymi błedziskami ortograficznymi Chyba masz braki w nauczaniu, chyba nie widziałeś chińskiego lub czeskiego. .... no szkoda, że cię wujek opuścił, ale skoro jednak tamten...
Witam. Dawno nie pisałem w BASCOM-ie a zdecydowałem się na niego bo myślałem, że tak będzie szybciej i prościej. Nic bardziej błędnego. Do napisania był dwu-trybowy program uśredniający do nieco przerobionego radiometru SOSNA. Ale nie w tym rzecz. O ile kod który zamieszczam powstał w miarę szybko o tyle błędu nie potrafię wyeliminować 3 dzień. Po krótce...program...
Witam!! Układ sterownika tampoprintu zbudowany na bazie mikrokontrolera AVR, schemat poniżej, zasilanie dostarczane przez dwie osobne przetwornice +5V dla logiki oraz +24V dla elektrozaworów i oświetlenia, na przewodach zasilających koraliki ferrytowe, pole masy na płytce, tranzystory sterujące cewkami zabezpieczone diodami, przy samych cewkach we wtyczkach...
Jak sprawdzić czujniki ds18b20 czy prawidłowo wskazują temperaturę bo słyszałem że są niektóre fabryczne ,,felerne,, .Umnie wszystkie 5 zawyżają o 2stC , a może jest błąd w kodzie. dziękuje $regfile = "M16def.dat" $crystal = 8000000 '****** KONFIGURACJA PORTÓW ********* Config Porta = Output 'wysw ABCDEFG Config Portc = Output 'zasilanie W4,W3, W2,...
podziękuj redakcjii edw bo listingi są ich. zakłądam ze urzywasz bascom avr inne listingi do pobrania ze strony edw są to programy testowe do oślej łączki z kursu avr 'C018b Prosty zegar z budzikiem Dim Sekundy As Byte , Minuty As Byte , Godziny As Byte , Uniwers As Byte Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim Godzjed...
Tak patrzyłem ta to to jest to czego mi trezba było myśle że teraz sobie poradze a co do tego end if to czemu miałoby sie nie kompilowac to jest program na '51 a nie na AVR a tam chyba sa różnice ale nie ważne ważne że już dużo wiem i biore sie do pracy Dziekuje jaskby co bede pisał dalej hehe Pozdrawiam
Witam, tworzę sobie mały licznik w Bascomie, wszystko ładnie mi już odlicza, proszę tylko o małą poradę - w jaki sposób za pomocą dwóch przycisków (+ i -) regulować szybkością odliczania liczby? Teraz posługiwałem się Do For Licznik = 0 To 9 Print Licznik Waitms 500 Next Loop teraz jak wykonać regulowanie czasu przerwy - czyli prędkości odliczania?...
witam mam taki problemik bo wyczerpały mi się pomysły potrzebuje zrobić licznik na wejściu x który zlicza liczbe a następnie zapisuje ją sobie i licznik sie zeruje i od początku. Niedawno bawie sie w bascomie i nieumię sobie ztym poradzić za pomoc bardzo dziękuje.
Witam. Potrzebuję systemu do pomiaru czasu pracy urządzeń (maszyn). Sam pomiar czasu pracy realizowany miałby być przez jakiś licznik z interfejsem (np. ModBus'em). Aby wyeliminować zaliczenie do czasu pracy maszyny jej "puste" włączenie trzeba będzie jakąś logikę zorganizować, np. impuls na licznik po przekroczeniu pewnej wartości pobieranego prądu...
Witam, Chciałem prosić bardziej zaawansowanych kolegów o sprawdzenie kodu jaki udało mi się napisać (co ciekawe nie przerobiłem do końca jeszcze żadnej książki o bascomie, ale miałem do czynienia z vb). Program ma liczyć od 1 do 56 i przełączać się na następną liczbę co 24h. Dodatkowo wstawiłem możliwość resetowania i zwiększenia liczby o 1. Debuger...
Witam. Od kilku dni próbuje napisać prosty,jak mi się wydawało kilka dni temu ,programik. Chodzi o to żeby zmieniać stan portu w odstępach czasowych z możliwością ich regulacji. Proszę o jakąś ,na razie drobną podpowiedż .
Witam, Mam problem z zrealizowaniem za pomocą tylko jednego przycisku funkcji: naciskam - licznik zlicza w górę puszczam - licznik zatrzymuje się naciskam - licznik zlicza w dół puszczam - licznik zatrzymuje się itd... Męczę się nad PWM - regulacją podświetlania LCD, na atmega8, problemu nie widzę ze sterowaniem dwoma przyciskami, ale rozłożyłem się...
Witam serdecznie! Od niedawna interesuję się mikrokontrolerami i właśnie dlatego zbudowalem niedawno Zegarko-Datomierzo-Termometr. Tutaj załączam schemat: http://www.olsztyn.mm.pl/~vcd_a/zegarek.... Niestety mam teraz problem z napisaniem oprogramowania pod to urządzonko. Czy byłby ktoś w stanie wykonać dla mnie taki program:?:, najlepiej gdyby to było...
Witam, mam pytanie jak napisać formułę aby odczytać stan czujnika w 3 pozycjach serwa (lewo,środek,prawo) ,a następnie sprawdzić w których pozycjach przeszkody nie było.
8MHz. Inną opcją jest kalibracja pracy licznika.
Bascom sam się nie zajmie resetowaniem Watchdog'a, jak słusznie zauważył Holy . Żeby z niego skorzystać najpierw trzeba go skonfigurować (ustawić stopień podziału - od tego zależy czas potrzebny na przepełnienie jego licznika) poleceniem CONFIG WATCHDOG = czas , później uruchomić: Start Watchdog . Teraz w newralgicznych punktach programu musi zostać...
Nowa wersja BASCOM AVR (1.11.9.5) naprawia błąd z przesuniętym bitem AS2. Teraz instrukcja CONFIG powinna działać poprawnie.
Temat licznika rozwiązałem kupując licznik kierunkowy . Zobaczę jak to rzeczywiście wychodzi w pracy , dziękuję wszystkim za udział w dyskusji . Temat zamykam
Możesz podłączyć poprzez rezystory bezpośrednio do portów, tylko trzeba pamiętać, że diody mogą wziąć 20mA i to teoretycznie pin ma wytrzymać, ale też chyba nie można brać więcej niż 100mA na cały port. To tyle teorii a w praktyce to sam sprawdzisz i pewnie procek to zniesie. Wprowadziłbym jednak pewna optymalizację. Wyświetlacze podłącz do portów PB...
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
A kolega rozumie różnice pomiędzy pracą w trybie timer i counter ??? ;)
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Niewiele nie oto chodzi bo raczej ma za mały opis wiec troszkę minie zanim ogarnę oco w tym chodzi jestem w pracy wiec niema za wiele czasu by popróbować .
"Timer" odnosi się do konfiguracji pracy licznika T/C, natomiast INT0 to przerwanie zewnetrzne ! Radzę poczytać HELP'a.
Maksymalna częstotliwość jaka mnie interesuje jest uzyskiwana przy OCR1A = 19. Generalnie wszystko mi działa i to całkiem przyzwoicie, ale muszę zliczać wygenerowane impulsy. Myślałem już nawet o jakimś zewnętrznym liczniku - w postaci układu TTL którego wyjścia będę sobie odczytywał w pętli głównej. To już oczywiście abstrakcja.
Witam. Mam problem z prawidłowym odczytywaniem danych z eepromu atmega 8. Dzieje się to po kilkunastu startach procesora, zamiast np. 90 wskakuje mi 10 lub inne głupoty... do procka mam podłączony kwarc 8MHz z każdego +5V 100nF, reset podciągnięty do +5V przez 5,1k i kondensator 100nF do masy, fusy mam ustawione na CKOP = 0 , kwarc zewnętrzny czyli...
Czyli nic nie zrozumiałeś z linkowanego programu. A szkoda... Zasada działania (podobnie jak dla wielu innych programów), to wykonywanie krytycznych sekcji w przerwaniach. Pętla główna może być zupełnie pusta. W programie głównym: 1. Zdefiniuj sobie 8 zmiennych (Parametr_x), które będą odpowiadały wartościom włączenia każdego z kanałów. Np. 100,47,198......
Po małych zmianach działam na czymś takim. Pomimo taktowania z wewnętrznego kwarcu nie widać efektu. Jakiegokolwiek. [syntax=c]/* * RealTimeClock.c * * Created: 2013-11-17 01:46:48 * Author: Piotr Pabian */ #include <avr/io.h> #include <avr/interrupt.h> void init_RTC(void) { //ASSR = 1<<AS2; //Enable asynchronous mode TCCR2 = (1<<CS22)|(1<<CS21)|(1<&l...
Ho ho ho :) ale narozrabiałeś :wink: Dim Timer0_200ms As Word , B_200ms As Bit ' dot. uaktualniania co 200ms Const Timer0_200ms_max = 400 REM to dodaj $asm inc {Timer0_200ms_max+1} $end Asm Dim Timer0_1s As Word , B_1s As Bit ' dot. uaktualniania co 1s Const Timer0_1s_max = 5 Dim Licznik As Word 'pomocniczy licznik do zminy stanu lini w glownej petli...
A spróbuj tak: [syntax=basic4gl] ' Fuse bity ustawione fabrycznie $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Output 'sterowanie segmentów LED Config Portd = Output 'sterowanie segmentów LED Config 1wire = Portc.5 Anoda1 Alias Portc.1 ' Lewy wyświetlacz Anoda2 Alias Portc.2 Anoda3 Alias Portc.3 Dim Nr_wysw As Byte Dim Liczba As Long Dim...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Skoro sygnał ma być podawany na INT1 (PD3) to chyba tu jest problem bo podłączony jest tu wyświetlacz No ale jak to? Mówisz tak ja by wyświetlacz podłączył tam się sam. A przecież to Ty go chyba podłączyłeś. Wina więc nie w wyświetlaczu a w tym kto go podłącza :D No i druga sprawa. Nie bardzo rozumiem dlaczego chcesz podłączać sygnał do INT1, skoro...
Podaje program z komentarzem. ............ Ps. Nie ładowałem do licznika wartości bo potrzebuje dwóch pełnych przeładowań. W programie jest zupenie nie ważne ile tych przepełnień wystpuje; istotne aby rachunek odmierzanych odcinków czasu był zgodny z zamierzonym. Skoro jesteś zmuszony zliczać przepełnienia (co jest rzeczą absolutnie normalną), więc...
(...) ' 5 Data 250 ' 6 Data 131 ' 7 Data 251 ' 8 Data 219 ' 9 Wstępna ocena dostępnych informacji W kodzie widzimy dwa liczniki (Liczba_ok i Liczba_nok) zadeklarowane jako zmienne typu Word, a także tablice na cyfry (Cyfra_ok i Cyfra_nok) jako typ Byte. Z punktu widzenia zakresu wartości samych liczników (od 0 do 999) nie powinno to powodować błędów...
Szukając rozwiązania mojego problemu napotkałem na rozwiązanie timera2 w pracy asynchronicznej. Tylko mam pytanie bo nie jestem pewien, przy kwarcu 32.768kHz przepełnienie licznika odbywać się będzie równo co 1s ?? Co zrobić żeby przerwanie z przepełnienia było co 0.25s ??
Moze AVR studio nie działa tak jak trzeba z winych złych bibliotek include... kto wie To nie wina złych bibliotek. Pewnych rzeczy nie da się zasymulować AVR Studio. A największa bolączką są właśnie liczniki. O ile praca jako licznik, PWM w trybie normalnym, CTC działa poprawnie; to FastPWM, tryb PWM ze skróceniem cyklu, przechwytywanie przez ACI już...
No tak. Dzieki serdeczne. Tyle razy czytalem dokumentacje i zawsze jakos tego nie zauwazylem. Ale zawsze lepiej jak ktos to potwierdzi, bo archiwalne posty wskazują ze przerwania mogą nie działać. A o internal/external to myślałem że chodzi o wywoływanie przerwania ale już zrozumiałem. Prace skończyłem to zabieram się do sprawdzenia. Dzięki narazie
ale podobno load działa (powinno) też przy 16 bitach Pewnie że działa , ale dla Timer2 . Ładuje odpowiednią wartość do rejestrów RCAP2L, RCAP2H , a T1 i T0 przy pracy reload , są 8-bitowe - koniec :D Niezbyt dokładna znajomość architektury , często się mści :( Piotrek
ok ja podpowiem co to jest :D COnfig timer0 = timer 'ustaw timer jako licznik impulsów wewn. zegara procesora Mode=1 ' tryb pracy czujnika, to jest ladnie opisane w datasheet do procesora, 1 w tym przypadku oznacza normalna prace timera czyli zlicza impulsy gate = internal ' najprawdopodobniej chodzi tu o taktowanie licznika ale nie pamietam dokladnie...
ICR/ICP to nie piny przerwań, to wejście zatrzaskujące aktualny stan licznika timera w w rejestrze ICR, skąd go można odczytać najlepiej w przerwaniu, lub po prostu w programie. Oczywiście każdy działający sposób jest dobry, jednak skoro można zaprząc do pracy hardware, to po co męczyć się softwarowo :)
Muszę wprowadzić zmiany w programie aby zamiast wyświetlaczy segmentowych użyć lcd. Czy jest z tym dużo pracy? [syntax=basic4gl]'************* Konfiguracja uC ***************** '***************************************... $regfile = "m8def.dat" $crystal = 8000000 Config Portb = &B00000000 : Portb = &B11111111 Config Portc = &B11111111...
Zrobione... Załącza się raz na kilka dni (nie dokładnie tydzień) na kilka sekund. To na chwilę obecną finalna wersja softu: [syntax=Bascom]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '=== Wejścia === Config Pinb.7 = Input 'MIN Config Pind.7 = Input 'MAX Config Pinb.6 = Input 'Suchobieg Config Pind.1 = Input...
To zajrzyj do noty katalogowej odpowiedniego procesora odnośnie trybów pracy licznika. Podany wyżej sposób obliczania jest dość przejrzysty, można sobie to policzyć nawet na piechotę na kalkulatorze. Tzn. ja nie ustawiałem żadnego trybu pracy timera. A powinieneś, w końcu sprzęt trzeba najpierw przyszykować do pracy... ;)
Dzieki za pomoc :) Dla potomnych cytat z manuala: CONFIG TIMER0 = COUNTER , EDGE = RISING | FALLING Kiedy TIMER0 jest skonfigurowany do pracy w charakterze licznika (parametr TIMER0 = COUNTER) wtedy należy określić parametr EDGE: Można określić czy licznik będzie zwiększany wraz z pojawieniem się narastającego zbocza sygnału (RISING) lub opadającego...
Przecież liczniki T0 i T1 mogą pracować jako liczniki zewnętrznych impulsów które wchodzą na wejścia T0 lub T1. Wystarczy więc skonfigurować np licznik T1 (16bitowy) do pracy z zewnętrznymi impulsami a potem tylko robić start Timer1, wait, stop timer 1 i odczyt Timera w którym będzie wynik. To najprostsza metoda i najbardziej naturalna i pewna.
Hej! Jest możliwe ustalenie konkretnej częstotliwości sygnału PWM w AVR. Da się sterować serwem modelarskim bez problemu. W Datasheet od ATmegaXX znajdziesz opis timerów. Jest tam wiele trybów pracy możliwych do wybrania. Ja pamiętam że do uruchomienia serwa użyłem trybu poprawnej fazy i częstotliwości. Potem na podstawie częstotliwości kwarcu i nastaw...
Skąd pochodzisz? Bo z opisu widze że jest to 15min. ciężkiej pracy w skomplikowanym środowisku bascom :D Z opisu ciężko mi wywnioskować o so chosi, ale myśle że możnaby to zrobić na poczekaniu! Jakby co wal na priv, pomogę!
Rejestry sterujące TCCR0A / TCCR0B , TCCR1A / TCCR1B - ustawianie trybu pracy. Rejestr licznika TCNT0 , TCNT1 (nic nie zmieniasz, ale jest wykorzystywany) - zliczanie. Rejestry porównania OCR0A / OCR0B , OCR1A / OCR1B - sterowanie wypełnieniem. A w liczniku Timer1 także GTCCR (dodatkowe tryby pracy) i OCR1C (dzielnik PWM).
Witam. Nie istotne jest co wpiszę w: Load Timer1 , 250 czy też Load Timer1 , 65000 liczy tak samo. Dodatkowo stosując prescaler nawet 8 uzyskam częstotliwość blisko 20Hz czyli chyba nie bardzo jak pracę diody. P.s proponuje zerknąć do helpa:) Opis: Instrukcja powoduje wpisanie do licznika określonej liczby zliczanych impulsów. Przed załadowaniem wartości...
bascom praca licznik bascom bascom licznik
bascom gotowe programy tłumić przelotowy głośniki samochodowe pioneer
firmware 7018b temperatura wyłącznika
Philips Sonicare 2100 - migająca czerwona lampka po ładowaniu Arduino MEGA 2560: Napięcie zasilania na pin VIN