Jeżeli to jest przetwornica to nie pisz UPS. To kwestia tylko zamiany przed główną pętlą Do Loop: Reset tr1 Set tr1 W kodzie tym początkowym. Pamiętaj o tych 10ms.
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Witam, potrzebuje zbudować generator z 2 częstotliwosciami rzędu kilku 1-2kHz. Do tego celu przeznaczyłem Timer1 i rejestry OCR1A i OCR1B i tryb CTC. Generator będzie miał dodatkowo zmieniane wypełniania impulsów, wiec zbudowałem sobie taki odo program: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 'Stos Systemowy , Gosub...
Sprawdź w symulacji co się dzieje z rejestrem TCCR1B (a szczególnie z bitami CS10 - 12) po komendzie "timer1 = 0".
to zatrzymanie timera przed załadowaniem wartości jakby pomogło (przynajmniej nie zachowuje się dziwnie) teraz miga w równych odstępach ... Home Lcd "P=" ; P ; "us" Lowerline Lcd "I=" ; I ; "us " ; Licznik If Licznik = P Then Portd.2 = 0 End If If Licznik >= C Then Portd.2 = 1 Licznik = 0 End If ... Dobra odczepiam się od portów :) I już mówię dlaczego...
Widzę że nie rozumiesz zapisu WGM13:0. To oznacza 4 bity. WGM13 WGM12 WGM11 WGM10 Czyli do tych 4 bitów musisz wpisać 15(d)=1111(b). W tabeli 39 na stronie 99 dokumentacji masz nawet to rozpisane.
Program działa i nawet licznik się zatrzymuje tylko jaką mam pewność że jest to 250ms? chodzi mi o to żeby uzyskać jak największą dokładność. Dzięki za ten przykład, spróbuję... Nie wiem dokładnie , do czego Ci to potrzebne ale przykład z przerwaniem , który podałem wcześniej działa z dokładnością do ~2 cykli zegara(500)ns.Czy to niezbyt dokładnie...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
Muszę użyć układ dwóch timerów ponieważ w docelowym układzie zakres czasowy Timera1 będzie za mały. Czy procesor zliczy na T1 impulsy generowane na OC2 ? Obawiam się sytuacji, że przy wspólnym CLK gdzieś mi się zbocza miną pomiędzy OC2 a T1 i układ nie zatrybi... Oczywiście że zbocza te mogą się minąć, ale to jest bez znaczenia. Podczas synchronizacji...
Witam! Bawię się czujnikiem ultradźwiękowym mierzącym odległość, z którym komunikuje się za pomocą interfejsu I2C. Dane z czujnika za pośrednictwem amtegi8 (8MHz) wyrzucam na kompa za pomocą RS-232 (9600 baudrate). Problem polega na tym aby obliczyć czas jaki upływa pomiędzy kolejnymi pomiarami i wyświetlać go z resztą danych na komputerze. Trochę poczytałem...
OC2 to wyjście wykorzystywane przez Timer2 - nie Timer1. Wystarczy skonfigurować T2 - i po kłopocie... (Przestudiowanie noty katalogowej układu rozwiązałoby problem)
Tryb Capture służy do przechwytywania zawartości licznika a nie do jego przeładowywania.
Witam, Piszę program do atmega8 i mam problem z ustawieniem Timer1. Dopiero zaczynam programować więc proszę o wyrozumiałość. Chciałbym ustawić tak timer1 aby zaczął liczyć czas od pojawienia się na portd.3 pierwszego impulsu do drugiego impulsu, zapisał wartość do zmiennej, wyzerował się i zaczął zliczać czas od drugiego do trzeciego impulsu zapisał...
Kod wydaje sie ok, przy czym moje walki z odmierzaniem czasu mowia ze trzeba brac poprawke na Bascoma /i to duuuza/. Sprawdzilem pod symulatorem (Bascom) i program dziala, w realnym procku pewnie czasy sie rozjada.
W ATmega8 masz 3 timery:TIMER0(8bit bez funkcji PWM),timer1(16bit z 2 kanałami PWM),i timer2 (8 bit z jednym kanałem PWM) i do tego musisz się zastosować. Wyjścia PWM to PORTB.1, PORTB.2 i PORTB.3 Możesz jeszcze zrobić programowy PWM np. na timer0 i będziesz miał PWM na wyjściu na jakim tylko chcesz. [syntax=basic4gl][/syntax] $regfile = "m8def.dat"...
Po pierwsze jakie czasy chcesz obliczać i jakie przerwania po co ??? To jest bascom nie assembler, deklarujesz na wstępie programu prędkość kwarcu a kompilator troszczy się o resztę tj. dajesz deklarację $regfile = "m8def.dat" $crystal = 12000000 Po drugie, procedura obsługi wyświetlaczy LCD (mowa tu o alfanumerycznych HD44780) jest w BASCOM zaimplementowana...
Nigdzie. Tak działają single. - patrz na http://babbage.cs.qc.edu/IEEE-754/Decima... Wpisz wartośc 0.00167 i zobacz reprezentajcę tej liczby w formie not rounded, wynik to: 1.6699999e-4 (czyli te 0.0001669)
podaje blad przy kompilacji - albo nieumiejetnie wstawiam ten czynnik:)
(at)ElektrodaBot W twoim programie wg BASCOM-AVR są błędy: Error : 254 Line : 17 Variable expected [TIMER1 OVERFLOW] Error : 46 Line : 17 Assignment error, unknown variable (DIM) [___WR24: 0 TIMER1 OVERFLOW: 0] Popraw program.
Timera1 nie użyjesz do RC5 ale jak poczytasz HELP Bascomiczny to zobaczysz z łatwością, że można spokojnie podłączyć go do Timera2 Tak więc albo możesz zmienić RC5 na Timer2 ale możesz nie zmieniać tylko swoją procedurę w Timer0 przenieść do Timer2 i po zawodach . Reasumując masz dwa wyjścia a ty szukasz trzeciego z Timerem1 ;)
$regfile "m8515.dat" $crystal = 8000000 Enable Timer1 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Timer1 = 34286 dim sek as byte do loop Sekunda: Timer1 = 34286 Incr Sek Return Powinna byc rowna sekunda (wyliczone przez kalkulator avr) Ps. Timer startuje w momencie jego konfiguracji wiec jesli nie chcesz go uzywac odrazu,...
Witam. W tych dwóch liniach kompilator zgłasza ci błędy bo to nie są polecenia z Bascom AVR tylko z Bascom 8051. Dlatego Bascom AVR ich nie rozpoznaje.
Czyli jest maly postęp. Sprubujmy takiej przeróbki: Pob_rc5: Disable Int0 Disable Timer1 Enable Interrupts Getrc5(address , Command) Enable Timer1 Command = Command And &B01111111 Set Odebrany_kod Return Ciekawe co zrobi. Chyba że jest błąd w książce.
2 kanaly na timer1 a kolejne 2 na timer2 :]
kurcze mi nie wychodzi :| timer chodzi co 1s ale reszta do kitu Dodano po 25 program chodzi :) oczywiscie musisz go przerobic na wlasne potrzeby dodac tyle ile chcesz przekaznikow i zmienic czasy w programie bo tam jest 10s i 40s ten program jest przygotowany pod ATmega8 i kwarc 8MHz $regfile = "m8def.dat" $crystal = 8000000 Config Pind.0...
dzieki , dyrektywe crystal=8000000 dałem, jestem na tyle poczatkujący że nie wiem jak przestawić te fuzy, no tak bascom jaK TO SIE ROBI Z POD BASCOM AVR
CONFIG TIMER1. Nie czytałeś noty katalogowej i pomocy.
Jeśli pomiędzy przerwaniem od timera a wpisaniem do niego nowej wartości upływa zbyt "długi" czas to może się okazać, że timer zgłosił przerwanie w międzyczasie, które zostanie uwzględnione jeśli zapiszemy Timer1 = Timer1+wartość, a utracone jeśli zastosujemy Timer1 = wartość.
Chodzi mi jak napisać kod w bascomie do procka Atmega8 żeby zliczał takty zegara podczas występowania stanu niskiego.
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
Nie wiem jak jest w BASCOMIE to traktowane, wiec to bardziej pytanie niz odpowiedz, jesli dzielisz C i A to otrzymujesz ulamek - czy nie trzeba tego zaokraglic do calosci by uzyskac wlasciwy wynik na wyswietlaczu?? I chyba cos masz namieszane z dzialaniami, bo po co wyliczasz B skoro wcale go nie wykorzystujesz??
Jest możliwe aby przy kwarcu 16Mghz i prescaler1 Timer1wysyłał na portd.0 impulsy o szerokości 100us ? Timer1 nie wyśle żadnych impulsów na pin PD0. Można natomiast tak ustawić timer, by generował przerwanie co określony czas, a w nim odpowiednio sterować pinem PD0. I pytanie: Od kiedy programujesz w BASCOM?
Ściągnij sobie z tej strony program kalkulator avr http://www.elportal.pl/index.php?module=... [syntax=basic4gl] $crystal = 1000000 $hwstack = 80 Config Timer1 = Timer , Prescale = 64 Dim Sek As Byte 's Enable Timer1 Enable Ovf1 On Ovf1 Czas Stop Timer1 Enable Interrupts Sek = 0 Do If pinc.0 = 0 then Load Timer1 , 49911...
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...
c1 to przerwanie na nodze procesora atmega8 pod tytułem "ICP" Portb.0 wystarczy że zamiast pod int0 podepniesz się tutaj.
Wg. mnie powinno tam być timer1 czyli np. Config Timer1 = Timer , Prescale = 128
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
Jak więc go skonfigurować i na którym pinie jest "wyjście"? Konfiguruje się normalnie jak timer1?
Witam, potrzebuje prostego programu który zliczy ile razy na sekundę wciskany jest przycisk. Np na jednym z portów pojawi się 0 kiedy przycisk zostanie wciśnięty, program ma zliczyć ilość impulsów przez sekundę i zwrócić daną do zmiennej. Proszę o pomoc lub podpowiedź. Niestety jestem początkujący i niezbyt rozumiem Liczniki-Czasomierze Timer0 i Timer1....
trzeba 4 postow na elektrodzie, zeby w koncu zabrac sie za datasheeta... niezle. 4\/3!! Takie rzeczy tylko w Bascomie
Może ten Twój jakiś dziki jest :P więc spróbuj jeszcze przenieść Sub pod pętlę główną jak ja poniżej. U mnie kompilują się wszystkie wersje wiec w załączniku masz skompilowane Hex i Bin do wyboru. Sprawdź też prywatną wiadomość ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE...
Eeeee tam.... Jak to się nie da!? Przykład konfiguracji dla atmega8: Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer2 = Pwm , Async = on , Prescale = 1 , Pwm = On , Compare Pwm = Clear Up Pwm1a = 255 Pwm1b = 255 Ocr2 = 255 Pozdrawiam.
Trzeba mierzyć czas impulsu i jeśli wynik = ileśtam to wtedy dzieje sie cośtam Może : $regfile = "twój uP" $crystal = twój crystal Config Timer1 = Counter , Edge = Rising Config Portc = Input Do If Portc.1 = 1 Then Start Timer1 If Portc.1 = 0 Then Stop Timer1 End If End If For Timer1 = 100 To 200 Reset Porta.1 Next For Timer1 = 300 To 600...
A nie prościej liczyć to za pomocą Timera1 czyli na sekundę ma być np. wyświetlonych 50 obrazów i każdy z nich zawiera np. 10 części. Daje nam to 500 przerwań na sekundę. W przerwaniu Timer1 ustawiasz za każdym razem początkową wartość timera i ustawiasz jakąś flagę. Możesz również dodać zwiększanie licznika od tego co ma być wyświetlane. W programie...
Do tego najlepiej użyć PWMa. Na medze ósmej musisz uruchomić timer1. [syntax=basic4gl] config timer1 = PWM , pwm = 10 , compare a pwm = clear up , compare b pwm = disconnect , prescale = 1 Dim opu as word do for opu = 0 to 1023 pwm1a = opu waitms 3 next opu for opu = 1023 to 0 step -1 pwm1a = opu waitms 3 next opu loop end [/syntax] To tak na szybko....
zacznijmy od tego, ze kod umieszczamy w klamrach Dodano po 10 to jest kod na jedna sekunde $regfile = "m8def.dat" $crystal = 8000000 Config Pind.7 = Output Portd.7 = 0 Przekaznik Alias Portd.7 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Enable Interrupts Enable Timer1 Load Timer1 = 31250 Do Loop End Sekunda: Load Timer1 =...
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
........, a podpowiedzcie mi jak mogę obsłuzyc Rc5,serwo i pwm? Pozdraiwam Dla obsługi RC5 i kontroli serva użyłeś w sumie 2-ch timerów... ATMega8 posiada wbudowane 3 timery , zastosuj więc ten trzeci do 'produkcji' PWM''. Jeżeli ten ostatni (dotychczas wolny) jest Timer1, to ma on dwa kanały dla PWM, na których możesz generowac praktycznie dwie różne...
Config Serialin = Buffered , Size = 80 Enable Interrupts Dim _Flaga_1s as Bit _Flaga_1s = 0 Config Timer1 = Timer , Prescale = 64 Enable Timer1 : On Timer1 Co1s Cls Do If Ischarwaiting() = 1 Then Znak = Inkey() Print Chr(znak) ; End If if _Flaga_1s = 1 then ' ------> a tutaj wyświetlaj już sobie spokojnie co chcesz co...
Witam. 1./ konfiguracja Timera1 musi być w jednej linii jako całość np. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect Po za tym masz nie pozamykane prawidłowo warunki IF. Poniżej przykład całości: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.4 = Input Config Pinb.2 = Input Config Pinb.1...
Jak jest z dokładnością zegarka RTC w Atmega8? Słyszałem plotki, że nie chodzi to zbyt idealnie. Potrzebuję zrobić zegar do zliczania tylko dni i zastanawiam się czy jest sens stosować zewnętrzny układ RTC. Układ musi mieć podtrzymanie zegara z baterii/kondensatora w przypadku zaniku zasilania. Śmiało możesz użyć np. Timer1 w trybie CTC jako generatora...
Nie zadziała to w tak prostej formie w jakim masz kody. 1. W kodzie 1 musisz ustawić PWM z timera 1 na 10bitowy (masz 8bitowy w konfiguracji). 2. W kodzie 2, nie masz ustawionego PORTC na wejście dla przetwornika. 3. W kodzie 2, samo przypisanie W = Getadc(channel) (po skonfigurowaniu timer1 i zmianie rozdzielczości PWM na 10bit) będzie zmieniało prędkość...
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...
Witam! Musisz wykorzystać wewnętrzny timer. W momencie gdy ulegnie przepełnieniu to zostanie wygenerowany sygnał przerwania i wtedy..... ....i wtedy zaczac naliczac te przerwania (przepelniena) do dodatkowej zmiennej, a po osiagnieciu wartosci tej zmiennej rachunkowo rownowaznej 5 min wtedy... ..... i wtedy uruchomiony zostanie podprogram do zmiany...
Takie skomplikowane rzeczy dla jednej sekundy... Takie coś odmierza sekundę dla kwarcu 11059200 , dla innego musisz użyć gdzieś dostępnego kalkulatora tajmerów: $crystal = 11059200 Config Timer1 = Timer , Prescale = 256 Enable Interrupts Enable Timer1 On Timer1 Timer1_int Start Timer1 Dim sekunda as byte ' bo mniej niż 255, 60sekund Do : Loop '...
aha to źle zrozumiałem. myślałem że jak pilot nadaje to zegar staje. no to w takim układzie podejrzewam że getrc5 używał właśnie do odbioru kodu timera0. Zmień w swoim programie odmierzanie czasu z timera 0 na timer1 i zacznie działać.
Daj jakiś schemat. Bo już nic z tego nie rozumiem. Co ma wyzwolić opóźnienie? Bo Timer1= counter zlicza impulsy z PD.5. Czy na tę końcówkę podajesz impulsy jakieś?
Paweł Es. - Sprawdzałem ten warunek loop until timer1 = 6249 krok po kroku i jest ok, tzn wyskakuje zawsze z pętli. Proble, tak jak napisałem wyzej - ze zwiększaniem tego timera M.S. - Cos nie kumam tego wutłumaczenia. Poza tym jak zerowanie timera i Impw wurzucę nad start timer1 to nic się nie zmienia - też 9300:/
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
Dioda płynnie się zapala,kiedy uzyka maksymalną jasność gaśnie i program sie powtarza.100% dobry program wersja dla wewnętrzengo rezonatora RC 1MHZ $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.1 = Output Config Pinb.2 = Output Dim I As Byte Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale...
Atom dzięki, że zwróciłeś mi uwagę na 1wread. Wcześniej wyłączałem przerwania na każdej komendzie 1wire, ale podczas testów i modyfikacji programu zapomniałem tego wstawić z powrotem. Jak dopiszę kod do obsługi Timer1 i kwarcu to się odezwę czy to działa jak powinno.
Ale przenieś choć część swoich Sub do przerwania Timer2, lub 1 i zobacz jaka jest różnica w działaniu programu. A różnica jest i to spora, program przyśpiesza znacznie, wczoraj przerobiłem cały program na timer1, skończyły się problemy z komendą wait. Więc jeżeli timer1 jest wolny to będę go bardzo chętnie używał.
Ok rozumiem. Spróbuj tego. Użyte przerwanie. Można też zrobić bez zależnie od potrzeb. $regfile = "m8def.dat" $crystal = 8000000 Dim Zmienna As Word Dim A As Bit Config Pinb.1 = Output Config Pind.2 = Input Set Portd.2 '============ definicje timera ================================ Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect...
właśnie. Jestem wkurzony, bo właśnie skończyłem pisac swoj kod. Ja nie miałem gotowca ;) $regfile "m8def.dat" $crystal = 8000000 Config Lcd = 40 * 2 Config Timer1 = Timer , Prescale = 256 Stop Timer1 Config Pind.2 = Input Config Int0 = Falling Enable Interrupts Enable Int0 On Int0 Przerwanie1 Nosave Cls Timer1 = 0 Dim Li As Word Dim Lj As...
Jakies sugestie?? Jeżeli to już cały kod , to co robią w nim te dwie instrukcje :?: Enable Timer2 Enable Timer1 Piotrek
Sposobów znalazłoby się kilka, ale ja proponuję: Włączenie "generatora" [syntax=basic4gl]Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1[/syntax] Wyłączenie "generatora", przez "odłączenie" wyjścia OC1A, od portu(pinu). [syntax=basic4gl]Config Timer1 = Timer , Prescale = 8 , Compare A = Disconnect , Clear Timer = 1 [/syntax]
Włącz timer1 i w jego przerwaniu wstaw getadc np co sekundę. To ma być woltomierz? Rozumię , że masz tylko jedną cyfrę na wyświetlaczu?
ewentualnie PWM i tranzystor ... wtedy mozna procesorem płynnie zmieniać jasność podświetlania CONFIG TIMER1 CONFIG TIMER2 tym sie chyba to w bascomie ostawiało ... poczytaj w manualu
np tak : Config Timer1 = Timer , Prescale = 1024 Timer1 = 0 Start Timer1 Enable Interrupts On Timer1 sterowanie_led do ..... loop sterowanie_led : Toggle Led1 return
Proszę rzucić okiem na dokumentację ATMega32 w sekcji Timer0/Counter0 and Timer1/Counter1 Prescalers , rys. 39 i porównać sobie z rys. 31 w tej samej sekcji w dokumentacji ATMega8. Czy widać jakąś różnicę? A zatem 2x większe taktowanie wymusi całkowitą zmianę w programie.
Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak: * sterowanie wentylatorami czasowo * sterowanie poprzez odczyt temeratury 2 osobne funkcje (działa albo jedno albo drugie). Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych) OK, Popatrz na swój program; sterujesz ustawienia trzema przyciskami, z których...
] 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...
Hmm, czy takie coś by się sprawdziło? :D $crystal 1000000 dim 5min as byte Config Timer1 = Timer, Prescale = 1024 On Timer1 Opoznienie On Interrupts Enable Timer1 Load Timer1 = 65535 Opoznienie Load Timer1 = 65535 incr 5min If 5min = 5 Then *********** 5min = 0 End If Return
zarzuciłem do pętli głównej Stop Timer1 Waitms 5 Start Timer1 i przy tym TSOP-y nie reagują. Za długo siedzę przy tym i już głupieje od tego. Udało mi się uzyskać zasięg 50cm ale potrzebuję 100cm. :( cry
$regfile = "m8535def.dat"0 ' Pewnie tutaj chodzi o ATmega8535... ;) Nieee LightI , u mnie jest "m8def.dat" bo mnie się ubzdurało ,że my tu mówimy o ATMega8 :) Config Timer1 = Pwm , CAPTURE EDGE = RISING , Compare A = Disconnect O to właśnie chodziło :wink: Pozdrawiam Piotrek
Nie wspominałeś o Bascomie. W C wyglądałoby to tak: [syntax=c]void przerwanie_timera(void) { if (CZUJNIK1_AKTYWNY) { wlacz1(); timer1 = CZAS1; } if (timer1 && -- timer1 == 0) wylacz1(); // I powtórzyć to samo dla dwóch pozostałych } [/syntax]
Człowieku - Jesteś wielki... Ja tych kaw musiała bym wypić litry i zjeść kilogram cukierków, a d*psko rośnie :) Mam jeszcze jedno pytanie: Jeśli by to przerabiać na Tiny261, 2313, albo Atmega8, to jak konfigurować timer i ADC? Np dla Tiny261 doczepił mi się bascom do tych parametrów: Unknown CONFIG parametr (internal) i unknown variable dim COMPARE0:...
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Config Pinb.5 = Input Config Pinb.4 = Input Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64 Dim I As Byte Centr1 Alias Pinb.5 Centr Alias Pinb.4 Set Portb.4 Set Portb.5 Pwm1a = 0 Do If pwm1a = 0 then 'dodatkowy warunek...
Myślę, że można bez problemów ten program przerobić. Będzie jednak kilka problemów. 1. Maksymalny zegar dla układów serii L to chyba 8MHz, chociaż mogę się mylić. W oryginale uC chodzi na 12MHz. 2. Trzeba zmienić konfigurację TIMER0 i TIMER1 które w AVR Bascom sa "trochę" inne. Ale w ogóle sądzę, że jest to do zrobienia.
Sorry, że wam się wtrące ale też pracuje nad komputerkiem dla Vectry B Silnik na wtrysku paliwa więc wysarczy zmierzyć czas otwarcia wtryskiwacza i tu moje pytanko. Jak najlepiej odmierzyć czas otwarcia wtryskiwacza oraz ilość wtrysków na jednostke czasu? Wtryskiwacz jest sterowany masą wiec spoko można użyć przerwań z końcówki INT1 do wykrycia otwarcia...
Jeszcze raz od nowa. Tym razem postaraj się bardziej. Ustaw wreszcie te przerwania INTx na jakieś zbocze, a nie poziom. Co z tego, że ustawiłeś Timer1 jako licznik jak nie ma to związku z resztą kodu. Timer sobie działa,a ja się pytam - i co z tego ? gdzie obsługa tego timera?
Sprawdź coś takiego: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Witam Mam za zadanie wykonać sterowanie fazowe żarówki. Wykorzystuje układ Atmega8 oraz Bascom 1.1.9.5. Poniżej przedstawiam kod: Enable Interrupts Enable Int0 Enable Timer1 Config Int0 = Falling Config Timer1 = Timer , Prescale = 1 On Int0 Przerwanie On Timer1 Opoznienie Load Timer1 6000 Do Loop : End Przerwanie: Start Timer1 Return Opoznienie:...
Koledzy a czy ktos moglby przeltumaczyc ten kod na BASCOMA?? Ccialbym podobny uklad jednak na BASCOMie. Z gory dziekuje Może nie ten kod ale przykładowy program do generowania kodu PWM w Bascomie. Miłej zabawy i pozdrawiam. '************** '* - PWM - * '************** Dim A As Byte 'Zlicza lolejne przerwania Timer1 Dim D As Byte 'Określa % wypelnienia...
Jeżeli przycisk miałby podciąganie to zawsze byłby w trybie gaszenia a po wciśnięciu i zwarciu do masy 0 czyli tryb rozjaśniania tu mi już coś nie pasuje! Dodano po 20 [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale =...
A może by tak dwa liczniki zaprzęgnąć do jednego zadania... Timer0 byłby generatorem PWM 8-bit z regulowanym wypełnieniem, z zewnętrznym taktowaniem z koncówki T0. Timer1 byłby generatorem o regulowanej częstotliwości (Tryb CTC) i za pomocą przerwań zmieniałby stan końcówki wyjściowej, którą to podłączysz do wejścia T0.
Mam prośbę . Jak skonfigurować w Bascom i czy wogóle jest to możliwe żeby na ATMEGA8 uzyskać na wyjściach OC1A,OC1B i OC2 trzy regulowane niezależne przebiegi PWM ? Z konfiguracją TIMER1 i compare1a dla PWM na wyjściu OC1A nie mam problemu. I jeszcze jedno pytanie . W nocie do procka ATMEGA8 doczytałem a raczej wydedukowałem bo z angielskim trochę do...
A może zamiast: If A < 65533 Then A = A + 1 End If to: If A < 65533 Then incr A to jest to samo ale zajmuje mniej miejsca w Bascomie (w procku) incr A -> A=A+1 decr A -> A=A-1 pozdr.
Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię: CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR...
chcialem zrobic sterowanie dioda rgb, 6 przyciskami po 2 przyciski do jednego koloru lub potencjometrem. narazie widze ze potencjometrem bedzie problem ale mam ksiazke do bascomu rozwiazanie z przyciskami to pare linijek kodu. chcialem zrobic go na atmega8 ale jak sie nie myle to jest tylko timer0 i timer1 i to mi nie wystarczy na sterowanie 3 kolorow...
Witam kupiłem ostatnio nadajnik i odbiornik ultradźwiękowy, dziś się męczyłem próbowałem to uruchomić no ale niestety nic z tego nie wyszło, najprawdopodobniej to wina programu. To chyba coś nie tak z ustawieniem komparatora. Proszę o pomoc. http://obrazki.elektroda.net/27_12249746... Config Portc = &B0000000 Portc = &B0000000 Config Portb...
Z przerwaniami nie jest tak trudno. Enable Interrupts Config Timer1 = Timer , Prescale = costam Timer1=costam2 Enable Timer1 On Timer2 etykieta Config Timer2 = counter , edge=falling Enable Timer2 On Timer2 etykieta2 coś takiego na przykład dobry zwyczaj to czas realizacji procedury pod daną etykietą był w granicach 10us, a wszystko pakuj do pętli głównej...
Witam. Patrz komentarze które dodałem do Twojego listingu: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.3 = Input 'pinb.1 jako wejscie Config Pinb.2 = Input 'pinb.2 jako wejscie Config Lcd = 16 * 2 'jaki zostal podlaczony wyswietlacz LCD Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4...
Odświerzę trochę temat. Ja konkretnie muszę w miarę precyzyjnie zmierzyć prędkość obrotową w możliwie krótkim czasie. prędkość w zakresie 750-6500 obr/min. Dysponuje tarczą 25 nacięć na obrót i fotokomórką szczelinową która daje ttl na wyjściu. Puki co ttl generuje z generatora ne555 by uniknąć błędów pomiarów związanych ze stroną mechaniczną systemu....
A czy mogę prosić o napisanie programu w BASCOMie generatora 36kHz w przewaniu TIMER1 ?? Dodano po 23 Atmega8 10Mhz - Kwarc
Masz część programu którym steruję diody RGB u siebie w pokoju. Jest to mój programik testowy, dodatkowo wyjściami PWM można sterować pilotem Rc5. Korzystałem z niego przed napisaniem właściwego softu. W Bascomie jest błąd jeśli chodzi o trzeci kanał (wyjście OC2). Nie "sterujesz" nim przez pwm.., tylko ocr2=... Myśle że dojdziesz na podstawie przykładu....
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
To jest przykład dla Atmega8, nie wiem czy pomoże: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.0 , E = Portc.2 , Rs = Portc.1 Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Cursor Off Cls Rem konfiguracja portów Dim R As...
. 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ś...
Udało mi się! 'Przykład generowania fali prostokątnej niezależnie od CPU 'procesor AT Mega8 'zegar wewnętrzny 1 MHz 'piezo pomiędzy PB.1 a +5V 'UWAGA!!!, ATMEGA8 ma domyślnie załączonego Wachdoga!!!. Trzeba wyłączyć bezpiecznik!!! $regfile = "m8def.dat" $crystal = 1000000 Dim I As Byte Ddrb.1 = 1 'port b.1 wyjściowy '---------------------------------------...
bascom atmega8 timer1 timer1 atmega8 bascom atmega8 timer1
przygasa płomień dioda alarmu świeci cobra wąż ssący odkurzacz
sterownik rolet domofon hikvision
Ikony MOS i termometru na kontrolerze solarnym - co oznaczają? Jak zgrać filmy z kamery Samsung VP-D362?