Chodziło tylko o zamianę Timer1 na Timer0, ale ok mogę pokazać który nie działa... a właściwie który już działa... dobrałem wartości prescale i load całkowicie doświadczalnie... miałem nadzieje że ktoś wyjaśni co i jak z tym przy okazji ale ok... Przy taktowaniu 16 MHz; Versja 0 dla Timer1 masz zalozone: const Timer1Reload = 700 config timer1=timer,...
Witam. Zapis (składnia) Load Timer1 jest zły. Sprawdź w pomocy Bascoma.
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 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...
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....
Nie mam noty przed sobą, ale o ile mnie pamięc nie myli to timery 0 i 2 mają możliwość zrobienia przerwania typu Compare w trybie CTC. Sprawdź to.
No jak za każdym razem do licznika wpisujesz zero to jakim cudem ma być spełniony ten warunek timer1= A?
Prototyp zrobiłem na pomiarze napięcia (ADC) na fotodiodzie - to chodziło, dopóki nie zacząłem testu na dworze.... Fotodioda łapała podczerwień z... no właśnie, skąd? Nie wiem. To oczywiste. Światło z otoczenia również zawiera podczerwień, więc pojawiają się zakłócenia. Po odłączeniu fotodiody i dotykaniu kabelkiem do + na wyświetlaczu także pokazywały...
... wydawało mi się, że w trybie CTC mogę za pomocą OCR1A i OCR1B oddzielnie regulować częstotliwość na wyjściach OC1A i OC1B ... Masz racje , tylko Ci sie wydawało ;) W trybie który ustawiłeś , timer zlicza od zera , do wartości w OCR1A.Jeśli w OCR1A masz 1562 , a do OCR1B zaaplikujesz 3124 , to na wyjściu OC1B nic nie zobaczysz , bo NIGDY nie nastąpi...
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...
Timer1 jest 16-bitowy. 2^16 = 65536.
Możesz skonwertować godzinę na sekundowy format ( typ long, 4 bajty) ss=24*60*H +60*M+S Reszta to Twoja inwencja :-)
Witam! Potrzebuję zmienić TIMER1 do obsługi PWM na TIMER2 ktoś pomoże? ATMEGA32 BASCOM
Oto prosty przykład: $regfile = "m8def.dat" $crystal = 4000000 Config Timer1 = Pwm , Prescale = 1 , Compare A = Disconnect Compare1a = 32768 On Compare1a Oc1a_int Enable Compare1a Enable Interrupts Do nop nop nop nop Loop Oc1a_int: nop nop nop Return Reszta opisana w Helpie :wink: Piotrek
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...
Przerwanie miałbyś z częstotliwością 32000Hz(8000000/250), gdybyś tylko przeładowywał Timer w przerwaniu. [syntax=basic4gl] Prztimer1: Load Timer1, 250 '<----- w tym miejscu na przyklad Incr Licznik If Licznik > 100 Then Licznik = 0 End If[/syntax]
A gdzie instrukcja CONFIG TIMER1 = COUNTER?
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
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.
Sprawdź w symulacji co się dzieje z rejestrem TCCR1B (a szczególnie z bitami CS10 - 12) po komendzie "timer1 = 0".
Jaka wersja BASCOM?
Witam, a po choinkę wyłączać Timer przy organizowaniu wymiany danych z PC ??? poczyta sobie kolega o takich poleceniach jak np: Config Serialin - dzięki któremu można ustawić sobie bufor wejściowy, do tego proszę zobaczyć co przy tym poleceniu robi Bytematch - dzięki, któremu można sobie ustalić po nadejściu jakiego znaku ma się zainicjalizować np jakaś...
jeśli przerwanie jest co 100msek a obsługa procedury wywołanej w przerwaniu będzie trwała 101msek to przed zakończeniem pierwszej procedury i powrotu z przerwania program uruchomi drugi raz tę procedure potem trzeci itd . dojdzie wreszcie do zapełnienia stosu i "zwis" programu Gdy procedura wykonywana jest w pętli głównej jest zezwolenie od przerwania...
Witam. Problem leży w obsłudze Timera1. W Bascomie Timer1 jest uważany jako 16 bitowy. Natomiast układ ATiny25 posiada liczniki 8 bitowe. A więc nie możesz użyć Timera1 a jedynie Timera0 ( 8-bitowy ) i odpowiednio zmodyfikować program.
A dałeś PORTB na włączone rezystory podciągające?
c1 to przerwanie na nodze procesora atmega8 pod tytułem "ICP" Portb.0 wystarczy że zamiast pod int0 podepniesz się tutaj.
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=...
Tomsyty zobacz w dokumentacji do Tinny26 (kompletną) na stronę 23 pierwszy akapit. Tam Jest prawdopodobna przyczyna Twojego problemu. Timer T1 pracuje z zegarem mnożonym przez 64 względem zegara rdzenia!! Więc Twój układ dostał na preskaler Timera1 nie 8MHz jak chciałeś tylko 512 MHz !! Znaczy się zamiast 36kHz za preskalerem masz około 2,3 MHz !! Sprawdź...
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...
Co to za przerwanie? Od porównania? Przepełnienia? Czy może od przechwycenia - co sugerują komentarze. Nie używasz innych przerwań? Załącz cały program.
Oczywiste że tak zawsze będzie. Tym licznikiem możesz liczyć tylko impulsy które są ukształtowane np z enkoderów, natomiast dla styków mechaniczynych musisz albo je ukształtować sprzętowo, albo zrobić debouncing programowy. Chodzi o to, aby z sieczki krótkich impulsów które powstają po wciśnięciu przycisku zrobić jeden impuls wydłużony. Można to zrobić...
Uruchomić timer w trybie CTC. Tryb CTC [syntax=vbnet]CONFIG TIMER1 = ..... CLEAR TIMER = 1[/syntax]
Sygnałem wyjściowym hallotrona jest napięcie. Tak więc przez 1/2 LM358 pracująca jako komparator i zasilona napięciem takim jak procesor. Ważna jest biegunowość napięcia wejściowego.
witam jest zrodełko w bascom z obsługą Timer1 ale niepotrzebuję aby timer1 obsługiwał mi port zewnetrzny T1 (portb.1) w atmega16 ,jak mozna wyłaczyć go z obsługi przez timer1 w Bascom ? poniewarz potrzebuję go do sterowania lcd i chce go z tego powodu wykluczyć :(
Jak poprawnie skonfigurujesz to zadziała. Oczywiście sam licznik to nie wszystko, trzeba jeszcze ustawić port jako wyjście.
niekoniecznie, chyba nie czytales uwaznie watku :) pisalem o przerwaniach od Timer1 :)
Kolego FREDY "rozsypie" to miałem na myśli ten czas obsługi. Jeśli bym jednak wykorzystał timer1 tylko do celów PWM programowego czy może być konflikt miedzy między dwoma timerami
Witam dziękuje za podpowiedz to prawda ściągnąłem wersje Avr Help jest tam dużo ciekawych rzeczy z tym że mam kompilator Bascom 8051 wersje demo kod żródłowy nie daje się z kompilować wersja nie generuje tak dużego kodu wynikowego wyświetla mi błąd Error alows 2048 bytes of code only in file Czy jest większa wersja demo dla procków z serii 8051 czy...
Spróbuj na tym: http://www.frank-zhao.com/cache/avrtimer...
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...
Komenda RC5Send jest napisana na podstawie tej noty aplikacyjnej [url=http://www.mcselec.com/index.php?op... #105 - Sending RC5 and SONY IR codes . Timer jest skonfigurowany chyba jako CTC, jeżeli procek posiada drugi kanał dla timera1 to mógłbyś wykorzystać przerwanie TIMER1_COMPB. Można też próbować zmodyfikować...
Właśnie cały problem w tym, że program główny ma co robić i nie jest pustą pętlą.. Temperatura musi być stale kontrolowana choćby dlatego aby włączać wentylatory (jest to wzmacniacz) lub reagować np wyłączaniem zasilania.. Dlatego zależy mi aby działało to poza programem głównym.. I pomijając estetykę programu... Czemu to nie chce działać? Co ma odczyt...
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 ;)
Witam. Mój wtrysk w samochodzie jest załanczany poprzez mase. Jak skonfigurować Timer żeby zliczał czas załączenia masy. Z tego co pamiętam to gdy podamy mase na Timer1 to zlicza impulsy dopóki nie wystąpi stan wysoki. Jak skonfigurować w bascomie żeby tak pracował???
Że jak? Do Loop Load Timer1 , 5 Return Czy to co powyżej (do,loop) to przemyślane działanie czy jakaś opcja debug'ujaca? A - i jak wywnioskowałeś, że nie działa przerwanie?
Nigdy nie miałem do czynienia z Bascomem 5051, możesz mi podpowiedzieć co to za polecenia i jakie są adekwatne polecenia w Bascom AVR?
Dziekuje za pomoc, teraz wszystko działa jak należy, teraz pojawił się następujący problem: Ponieważ transoptor który służy do wykrywania zera, wykrywa zero ok 2ms po faktycznym zerze sieci, nie mogę dostać pełnej sinusoidy zasilającej żarówkę, ponieważ nawet gdy wyzwalam triak w momencie uruchomienia przerwania int0 (timer1=65535) to zostanie podana...
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ł...
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)
tak, przepraszam za literowke, oczywiscie mam w programie napisane tak: config timer1=counter reszta jak wyzej
Tryb Capture służy do przechwytywania zawartości licznika a nie do jego przeładowywania.
A ja z kolei znalazłem gdzieś taki programik: Enable Interrupts Config Timer0 = Timer , Prescale = 64 On Timer0 Tim Enable Timer0 Dim M As Byte Do Loop End Tim: Timer0 = 6 Incr M Return Jeśli dobrze licze, to przy kwarcu 4MHz przerwanie będzie wywołane co 4ms, zgadza się? Jak to wszystko przeliczać na Hz? Pozdrawiam
Sprobuj tak: On Timer1 Seb Nosave Pozdro Dexter
Z tego co wiem to bascomowe procedury LCD odliczają opóźnienie potrzebne wyświetlaczowi przy pomocy tego timera. Spróbuj zmienić timer albo poszukać w helpie bascoma.
Witam Przyznam szczerze, że właściwie nie miałem problemów z timerami w Bascomie (większych) jednak w zamieszczonym programie nie podoba mi się sposób deklaracji zmiennych. Dlaczego tego nie porozbijać na osobne linijki ? W dodatku pomieszane typy zmiennych... -- pozdrawiam
Czy przed załączeniem PWM mam używać enable time1 i po wyłączeniu disable timer1
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"...
podaje blad przy kompilacji - albo nieumiejetnie wstawiam ten czynnik:)
Dwa razy włączasz Timer0. A pewnie chodziło Ci o to żeby włączyć Timer0 i potem Timer1.
Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Jezeli to ma sluzyc jako wyniki konkretnych badan "na endurance", to musisz dolozyc staran aby wyniki byly dokladniejsze a moc processor byla bardziej prawidlowo wykorzystana. Wiec tak na...
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...
(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.
[syntax=basic4gl] Config Timer1 = Timer , Prescale = 8 'Parametr Prescale może być równy:1, 8, 64, 256 lub 1024 [/syntax] Potem w programie możesz sobie odczytywać zawartość tego licznika w następujący sposób (np.): [syntax=basic4gl] Stan = Timer1 'Zmienna Stan typu Word [/syntax] robiw
Niestety nic z tego nie wyszło. Po wpisaniu powyższego programu i zmianie $regfile na "attiny45.dat" BASCOM wskazuje na błędy: "Error: 46 Line: 7 Assignment error [TCCR1a: 0 &B00010001; 112] Error: 46 Line: 8 Assignment error [TCCR1b: 0 &B10000011; 112]" Jeżeli wpiszę $regfile = "attiny26.dat", wtedy jest OK. Jeżeli chcę normalnie w BASCOMIE uruchomić...
Dzięki za radę, ale niestety nic z tego. Spróbowałem i kompilator wyrzuca błąd, że nie ma odpowiedniej onstrukcji asemblerowej... Dziwna sprawa, jeśli zmienię plik z TINY45 na TINY26 to błędu już nie ma. Wygląda na to, że chyba coś jest nie tak z BASCOMem- natknąłem się już wcześniej na kilka błędów. W takij sytuacji pozostaje grzebanie w rejestrach...
Hej! Masz rację - ztym kontrolerem (lub Bascomem) jest coś nie tak, ponieważ próbowałem zrobić na nim prosty sterownik z użyciem IR "Get RC5", i niestety bascom wywala error, że niemożliwe w tym chipie najpewniej błąd Timera (nie pamiętam 0 czy 1). Tak zechyba nie robisz błędu, tylko w Bascomie w stosunku do tego procka jest coś spaprane.
Mój błąd zegar ma 8MHz
może jednak lepiej wsadzic tyłek w krzesło i posiedzieć nad C lub asm. bascom? proste rzeczy jak najbardziej. ale tylko proste rzeczy
A nie lepiej byłoby wykorzystać PWM? Wtedy można dosyć precyzyjnie ustalać częstotliwość na wyjściu, oczywiście ustawionym w tryb Toggle... Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Toggle , Prescale = 8
$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,...
W Bascomie AVR jest taka ciekawostka: Load timer1 ,100 - działa błędnie Load timer1,zmienna - działa prawidłowo! dla timer0 jest odwrotnie(ze zmienną nie działa) Np. w symulatorze Bascom AVR: Dim X As Word Config Timer1 = Timer , Prescale = 8 Load Timer1 , 100 ' timer1 = 156 X = 100 Load Timer1 , X ' timer1 = 65436 nop nop
... to chyba najprostrze rozwiązanie (program pod BASCOM) Config Timer1 = Counter , Edge = Falling Enable Timer1 Do Timer1 = 0 Waitms 100 Print Timer1 ; "0 Hz " ; Chr(13); Loop sygnał TTL podaje sie na 9 noge 90s2313, a z 3 nogi przez tranzystor odwracajacy - na COM do kompa (pin2). moze to urzadzenie nie jest bardzo dokladne ale w przyblizeniu potrafi...
Spróbuj tak: 'czestotliwosc uprocesora w Hz $crystal = 11059200 Config Portb = Output Config Timer1 = Timer , Prescale = 256 On Ovf1 Timer1_tick Portb = 254 'ustawienie komparatora timera '65535 - 43200 = 22335 Timer1 = 22335 ' load timer1 nie działa prawidłowo w Bascomie Enable Timer1 Enable Interrupts Do 'program glowny Loop Timer1_tick: stop timer1...
odpowiem sobie sam, sprawdzilem w symulatorze bascom i działa
Tak.
Drogi kolego jest coś takiego jak "Help" w bascom i jest on bardzo przejrzysty. Tak na logikę. Deklarujesz Timer1 jako timer a wpisujesz wartość do countera? Nie dziw się że wywala błąd. Spróbuj "Timer1 = 120".
"Czy ktoś wie żeby przerwanie mogło zakłucać pracę 1wire?" Oczywiście że może jeśli wypadnie podczas transmisji danych z DS'a Przed każdą komunikacją z DS'em zablokuj przerwania. Np: Disable Timer1 a po komunikacji odblokuj Enable Timer1.
Wystarczy wpisać warunek w dodatku prosty If I = 100 then stop timer1 I=0 timer1= 0 start timer1 end if a tutaj Kasowanie: stop timer1 I=0 Timer1 = 0 start timer1 Return W ogóle nie bierzesz pod uwagę z jaką częstotliwością będzie liczył licznik chyba potrzebujesz jakiś konkretny czas...
w języku BasCOM piszę
Musisz zaznaczyć cały tekst który chcesz pokazać jako kod, a następnie zaznaczyć napis Code $regfile = "attiny2313.dat" $crystal = 8000000 'kwarc 1MHz $prog &HFC , &HE4 , &H9F , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Timer1 = Timer , Prescale = 64 'timer1 jako licznik 15536 Config Int0 = Rising 'detetor zera...
Witam ,napisałem program który ma odmierzyć czas lotu helikoptera (do wyczerpania bateryjki) ,niestety po 2 tygodniach utknąłem na czymś takim: $regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.0 = Output 'dioda sygnalizująca odmierzenie czasu Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu...
mam problem ze zliczaniem a wlaściwie mnożeniem wartości. kluczowe fragmenty w kodzie niżej: Start Timer1 Waitms 500 Stop Timer1 A = Timer1 * 0.000167 Timer1 = 0 Odo = Odo + A Odo1 = Odo1 + A niby wszystko OK jednak po jednym impulsie ODO wynosci 0.0001669 a odo2 = 0.000152. blad jest potem powielany razy ilość impulsów wszyskie zmienne sa DIMowane...
OC 1 A, OC 1 B - timer1 OC 0 - timer0 OC 2 A - timer2
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
No właśnie do tego migania LED ustawia się odpowiednio Timer1, którego BASCOM w emulacji nie obsługuje. Czyli nie mogę w niej sprawdzić czy wszystko funguje OK. więc jak soft będzie w kupie zostaną nam eksperymenty jak z pierwszym piórnikiem.
no wcześniej trzeba zatrzymać licznik :P to znaczy jest taki kłopot, że jak piszę load timer1, 1234 to bascom mi wpisuje do obu rejestrów 255, podobnie przy timer1 = 1234 :lol: więc wolę wpisać do każdego rejestru osobno bo wtedy jest wszystko ok... może tylko u mnie tak jest, moja wersja bascoma 8051 to 2.0.11 :)
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.
Jak napisałem nie wnikam w sedno tego zegarka,chodziło mi tylko o zwrócenie uwagi na błąd polecenia Load Timer1 ,...
Ten typ zegarka musi być napedzany przez rezonator kwarcowy "zegarkowy" Podłącza się go do pinów TOSC1 i TOSC2 jak na obrazku ;) http://obrazki.elektroda.pl/7500713300_1... Udanych testów :D P.S. Można kilkoma instrukcjami uruchomić zegarek bez tego rezonatora używając Timer1.
Witam. Mam problem z zawieszaniem się programu po kilku kilkunastu sekundach i nie wiem o co chodzi. $regfile = "m32def.dat".dat " $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config 1wire = Porta.4 Config Portc = Output Deflcdchar...
Przede wszystkim to masz tutaj błędy składniowe. Np: [syntax=vbnet]On Timer1[/syntax] i tyle. A powinno być: [syntax=vbnet]On Timer1 nazwa_funkcji[/syntax]
Moim zdaniem całość nie działa poprawnie, bo używasz Timera1 pracującego w trybie CTC jednocześnie do odmierzania odcinków czasowych wyświetlacza i do pomiaru czasu zatoczenia pełnego koła. W trybie CTC Timer liczy od 0 do wartości Compare1a po czym zostaje wyzerowany, więc ten podprogram w przerwaniu ICP1, który oblicza Ci ile cykli zliczył Timer podczas...
Nie napisałeś , że ten pilot nie pracuje w kodzie RC5 , ale też nie napisałeś , że w tym kodzie pracuje :wink: Inna wersja Twojego programu: $regfile = "m32def.dat" $crystal = 8000000 '11059200 Dim Adress As Byte , Command As Byte , X As Byte , Tmpcode As Word Dim Odebrano As Bit , Flaga As Byte Config Pind.2 = Input : Portd.2 = 1 Config...
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...
Poniżej mój testowy program w bascomie. Procek m8, wew. zegar 8 mhz. Testowałem na nikon D80 - działa OK. ' PILOT NIKON ML-3 ' ZEGAR 8 MHZ Dim I As Word Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Config Portd.5 = Output Reset Portd.5 Compare1a = 100 Enable Interrupts Disable Timer1 Reset Tccr1a.com1a0 '***************************************...
Zegar na Timer0 ruszył, natomiast PWM jest zrobione na Timer1. Przyczyną nie działania Timer0 to procedura RC5(!!??) Teraz tylko pozostało wyregulować odmierzanie czasu..
tak, teraz te 2 przypisania odnoszą się do Timera 1 i wyprowadzeń oc1a i oc1b, więc poprawnie zakładając, że konfiguracja uwzględnia tryb 10-bit, czyli: Config Timer1 = Pwm , Pwm = 10, Compare A Pwm = Clear Up, Compare B Pwm = Clear Up, Prescale = 1
Witam. Wersja 2.0.10.0. Ten kod zachowuje sie tak samo w bardziej rozbudowanym programie jak i w tym co wyzej jest napisany (napisalem sobie to odzielnie bo takze myslalem ze cos napisane jest zle w dalszym programie) Pozdrawiam
I tylko timer1 ma możliwości zliczania impulsów z zewnątrz?
timer1 bascom timer1 counter1 bascom bascom timer1 przerwać
xenon temperatura palnik bezpiecznik zafira instrukcja navigon
wykrywacz metali schemat piekarnik samsung
Pompa ciepła R290: ekologiczne i wydajne ogrzewanie Kara za brak oryginalnego zasilacza w Play