Witam panie i panowie potrzebuje pomocy porady w rozwiązaniu problemu z impulsami o czasie 100us Bascom kwarc 16mhz prescele - 64 timer0 = 39 i niby powinno wyjść 100/100us dając banalnie prosta opcje wyjścia poprzez toggle OUT i nie ma 100us stanu wysokiego i 100us niskiego gdzie błąd Nadmienię że nawet robiłem tylko sama procedurę impulsów pomijając...
1. Ogólnie liczysz dobrze, ale procesor nie wyrobi się w 160-ciu cyklach (a dokłądniej mówiąc to liczysz trochę źle bo własnie nie uwzględniasz czasu potrzebnego na obsługę przerwania). Nie uzyskasz czasu 10us, nawet dla kwarca 16MHz. Musiał byś to napisać w assemblerze i użyć dyrektywy Nosave. 2. Nie. Jeżeli coś zadeklarujesz w programie to ta rzecz...
piotr5000 --> ok, sorki źle zrozumiałem z tymi diodami, a z tym zauważeniem miganięcia 100us to masz rację ;)
Jest jeszcze Waitus które daje opóźnienie w mikrosekundach. Czyli zeby uzyskać 0.1ms stosujesz Waitus 100 (100us = 0.1ms ) Pozdrawiam
Witam, Autor nie sprecyzował, co chce mierzyć. "Pomiar napięcia AC" nic nie mówi. Wartość średnia, skuteczna, maksymalna, minimalna, amplituda, okres itd. Załączony kod działa, ale będzie wskazywał "przypadkowe" wartości migające na ekranie, dokładniej wartość jaką (jak dobrze widzę) zmierzy co 1s i usredni przez 100us. Pozdrawiam
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...
timer jest tak ustawiony, aby przerwanie było generowane co 100us, w ten sposób mam możliwość ustawienia 100 poziomów, bo poł okres sinusoidy trwa 10ms, wiec 10ms / 100 = 100us. W przerwaniu mam formułkę podobną do tej (teoretycznej): if( temp_delay++ >= (100 - x%)) triac_pulse(); to były założenia, a w praktyce, jasność żarówki przy 20% jest na tyle...
No pewnie że jest w helpie- to jest ta podstawowa zasada getatkbd. Ale jak wejdziesz w przerwania gdzie dasz wait- a oczekiwanie na kod klawisza nie wyłącza przerwań- to będą błędy. Podobnie będzie gdy przerwanie od Timera będzie np. co 100us- a nie wiadomo co ile jest- co ile Autor daje.
A do tego przerwanie spowoduje ze petla waitms bedzie sie wykonywac dluzej wlasnie o czas przerwania. Np wykonuje sie petla waitms 1 i w jej trakcie wystapily dwa przerwania kazde po 100us. Petla waitms wykona sie 1ms + 2x100us= 1,2ms Pozdro Dexter
Skoro już zaśmieciliście post to było napisać coś konkretniejszego: - nie wiadomo jak wygląda ten tajny program ale jeśli chodzi o Bascoma to wróżka Jadwiga mówi że z pewnością wykonuje się on dłużej niż 100uS i nigdy nie wypadnie zgodnie z przerwaniem - nawet jeśli był w przerwaniu to i tak przerwania się spiętrzały i były nierównomierne bo program...
a jakby multipleksować wyświetlacze co 100us ? (timeslot dla dallasa) Rozumiem przez to, że tuż po nadaniu/odebraniu bitu przełączyć wyświetlacz i transmitować następny bit.
(at)ElektrodaBot To było podchwytliwe pytanie :) Przedstawiony kod działa poprawnie. Wejścia i wyjścia procesora są właściwie skonfigurowane i transmisja jest poprawna. Wszystkie dane zapisywane i odczytywane są na narastających zboczach sygnału CLK gdy zmiany ich są na opadającym zboczu więc jest ok 100us na ustabilizowanie sygnału. https://obrazki.elektroda.pl/2868912000_...
Delay daje niby 100us to zbyt mała dokładność. Potrzebowałbym procedury która będzie zwykłą pętlą opózniającą o czas 440 lub 444uS. Mam proca at89c52 i kwarc 12MHz. Proszę o pomoc. Muszę zdekodować kod RC5 a na at89s52, getrc5 niestety nie chce mi działać...
Petros :arrow: :idea: "w obsłudze zewnętrznego przerwania 1 napisałem kod który 256 razy co 100us sprawdza wejście PD3" ... ja na c też się mało znam jak narazie bo piszę tylko w asm lub bascom ale z tego co kolega pokazał - tą swoją procedurę - hmmm rodzi się szereg pytań, jak choćby: - a co z synchronizacją odbieranych kodów? gdzie jest wyłapanie...
Nie chciał bym za Ciebie pisać tego programu, bo jest to naprawdę proste zadanie i dlatego spróbuj sam napisać go jeszcze raz od początku wg np. takiego algorytmu: Ustaw timer powiedzmy na 10khz aby każde przerwanie wykonywało się co 100 mikrosekund. Możesz też gęściej od tego zależy dokładność - tu 100us czyli 0,1ms Zdefiniuj sobie zmienną licznikową...
... PS. Dopiero teraz widać kolosalna różnice pomiędzy BASCOMEM a C. Temu pierwszemu zebranie 205 próbek do tablicy zajmowało ok. 50-100ms, C takie zadania załatwia w przerwie na kawę ;) i trwa to ok. 2-3ms może mniej, bo ustawiłem w przerwaniu zapalenie diody, i mrugniecie tak krotko trwa, ze prawie go niema ;). Tiaaa..., a gdyby napisać to w asemblerze,...
Chciałbym się upewnić w pewnej sprawie. Przeszkadza mi konieczność oczekiwania na konwersję tmperatury przez DSa nawet te ~100us przy rozdzielczości 9 bitowej to za dużo. Czy można zamiast waitus wykorzystać timer i zrobić odpowiednią procedurę z warunkami gdzie odczyt będzie realizowany po iluś tam przepełnieniach timera i tak w kółko ?
Dodajmy, że kiedfy pilot nie nadaje, odbiornik odbiera śmieci i wystawia na wyjściu przebieg prostokątny, któego zbocza są dużo gęstsze niż podczas odbioru danych, a każde zbiocze będzie w takim przypadku generowało przerwanie. Dlatrego lepiej jest odbierać w przerwaniu timera, a nie używać przerwań od zboczy. To jest oczywiste, ale.. odbiornik RF...
delay Panowie to było rozwiązanie problemu. Przy kwarcu 12MHz daje 100us czyli 5 razy dało mi około 0,5ms (bo u mnie kwarc jest 11 z kawałkiem). Dokładność nie była mi potrzeba a timery ze względu na przerwania akurat wolałem oszczędzić. Mimo wszystko wielkie dzięki, okazało się, że jak coś się nie wie to najlepiej zerknąć do instrukcji obsługi (jest...
OK udalo sie !! dziala , praktycznie nic nie zmienilem, istotna rzecza jest inicjalizacja (jej czas) i to w jaki sposob startuje uC. Tak wiec, 1 - ok.100us from power up to rfINIT 2 - na plytce mam port jak z zasilacza DC i do niego przez wtyczke wpieta baterie 9V. Wlaczam.wylaczam uklad wyciagajac wtyczke. Wtedy transmisjaMOZE byc ale w sumie nieczesto,...
zegar 12 MHz, a 40us wyszło stąd ze sprawdzalem od jakiej dlugosci impulsu uruchomi sie triak, przy 36 us juz mial problemy, sprawdzalem juz nawet z 100us ale ciagle jest to samo... Nie mam 100% pewności co do jednoznaczności w BASCOMie, ale zakładając, że $ASM jest jednoznacznym przejściem na asembler, to 20 krotne wykonanie rozkazu djnz przy zegarze...
No właśnie tak podejrzewałem. 10us to już było w akcie desperacji zmniejszone aby poprawić dokładność ale wyszło tak że przedobrzyłem. Wcześniej założyłem sobie 100us co też w gruncie rzeczy niewiele zmieniało. Musze spróbować albo zmniejszyć ilość próbkowania i może uda się wtedy nieco wyrównać ewentualny błąd, albo zmienić metodę. Powiem szczerze...
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?
Kombinujecie jak koń pod górkę. Jakieś wyliczenia, przeładowywania sprzętowego licznika, jakieś PWMy... ' Copyright by ZbeeGin $crystal = 8000000 ' ========================================... ' STEROWANIE TRIAKIEM Config Int0 = Change On Int0 _sync50hz Triak Alias Portd.6 Licz = 49 Impuls = 0 Regimpuls = 0 ' licznik timer0 - generator...
Witam ponownie z WS2803 nie miałem problemów, postanowiłem zająć się taśmą led z WS2812 z tego względu że ma tylko jedną linie danych nie ma linii zegara dane trzeba wysyłać o ściśle określonych czasach: logiczne 1 stan wysoki 0,7us stan niski 0,6us logiczne 0 stan wysoki 0,35us stan niski 0,8us. Jako że próbowałem w bascomie to pisać i mi się nie udawało...
Load timer = ... nie jest równy Timer = ... ... no to akurat jest oczywiste :-) Problem dotyczy zupełnie czegoś innego - poczytaj powyżej, ale dokładniej ;-) Skąd te obliczenia? Poniżej masz kalkulator do timerów. Policz i się nie dziw. ... no jakoś się nie dziwię, bo kalkulator (swoją drogą całkiem fajny - szczególnie przydatny dla tych, który nie...
Witam Mam problem ze skompilowaniem kodu w Bascomie. Cały czas wywala błąd: ERROR :344 Line: 108 Program will overwrite bootloader $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack = 8 $framesize = 16 Dim Timer_main As Byte 'zegar zliczajacy 2s Dim Timer_signal As Byte 'zegar zliczajacy 10ms Dim Flag_1_overflow As Bit 'flaga...
A wg mnie spokojnie wystarczy, tak jak pisze autor, jednostka czasu i wszystko będzie śmigać - kwestia algorytmu. Sam zajmuje się przede wszystkim sterowaniem silników i jeden z projektów to właśnie przeróbka sterownika kogoś kto nie za bardzo wiedział co robi na niezależne sterowanie dwoma krokowcami oczywiście z rozpędem i wyhamowaniem. Kwarc jakiego...
Dzięki za konstruktywne uwagi. Zostawiłem rezystor podciągający 2,2k. R-MIK "Dlaczego 100us skoro w nocie napisali 15..65?" - Racja już poprawiłem na 40us. Po presence nie czekasz, aż magistrala osiągnie "1". - Po wykryciu "0" jest opóźnienie a następnie sprawdzanie zmienną b czy na magistrali jest stan "1". Tylko zdefiniuj sobie port i wyprowadzenie...
Poniższy temat (w odróżnieniu od 99.9% znajdujących się w tym dziale) jest krótkim przewodnikiem opisującym w jaki sposób uruchomić wyświetlacze oparte na sterowniku OKI (MS)C1937-01. Od pewnego czasu spora ilość wyświetlaczy (opartych na tym sterowniku) jest do zdobycia na portalu allegro i zapewne poniższy tekst ułatwi zabawę z tymi cudeńkami. Sterownik...
Witam, po czwartym dniu studiowania forum, googli itp. Doszedłem do wniosku, że jak założę nowy temat to ktoś się ulituje i nie pisząc o lenistwie, wyszukiwarkach itp odpowie na parę pytań. Do tej pory pisałem w bascomie, ze względu na koszty postanowiłem sie przesiąść na C- i tu zaczął się jakiś koszmar. Przyzwyczajony do bascomowej składni zetknąłem...
a wiec ;] przemotronik , czytalem helpa wielokrotnie, ale funkcje które są zawarte w bascomie oraz w dodatkowej, komercyjnej bibliotece umożliwiaja jedynie odczyt z klawiatury, oraz emulacje klawiatury i myszki $regfile = "m32def.dat" ' Atmel 8535 AVR register file $include $crystal = 8000000 ' 8mhz AVR clock Ddrd = &B11111111 ' Set PortC...
Wszystko zrobione według aplikacji Atmega8 (memory programming) i powinno działać i co ?? NIE DZIAŁA Błąd w połączeniach, nie bez powodu u siebie każdą linię łączyłem poprzez rezystor. Nawet napisane jest o tym w nocie, że gdyby pacjent nie wszedł w tryb programowania lub pojawiły się inne problemy, a doktor będzie robił swoje, to mamy piękny konflikt...
Witam wszystkich. Dzisiaj postaram się opisać Wam czujnik HC-SR04 zwany też ultradźwiękowym miernikiem odległości. Za pomocą tego czujnika możemy dokonywać „bezdotykowego” pomiaru odległości pomiędzy czujnikiem a przeszkodą. Zasilanie czujnika to 5V, pobór prądu – możemy wyróżnić dwa stany czujnika: bierny – do 2mA – czujnik...
Gotowiec: $regfile = "m32def.dat" ' Atmel 8535 AVR register file $include $crystal = 8000000 ' 8mhz AVR clock Ddrd = &B11111111 ' Set PortC DDR (PS2 lines toggle direction in code) Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0 Config Lcd = 16 * 2 Clockin Alias Pind.2...
http://obrazki.elektroda.pl/9838687700_1... Trochę z obawą prezentuję kolejny już na elektrodzie sterownik oświetlenia, no bo ileż tego już tutaj było? A jednak nie znalazłem rozwiązania mnie zadowalającego, dlatego też powstał niżej prezentowany układ, powstał ponieważ klasyczne lampy z czujnikami ruchu mają pewną zasadniczą wadę:...
Od kilku dni staram się uruchomić pomiar temperatury czujnikiem ds18b20. Pomiar niskich temperatur przebiega poprawnie. Po przekroczeniu temperatury 54stC na wyświetlaczu ukazuje się wartość 127. Poniższy kod jest skopiowany z tego forum, poza tym napisałem własne funkcje obsługi 1wire lecz skutek był taki sam. Programując uC bascomowymi procedurami...
michcior - wiem, a w dodatku ta zmienna jest używana tylko i wyłacznie w głównej pętli w main michalko12 - oto kod: problem jest ze zmienną nrflag [syntax=c]#ifndef F_CPU #define F_CPU 11059200 #endif #define F_STD 400 //standardowa czest #define C_OSC_STD_LEV 40 //std poziom gen x0.1dBu #define UART_BAUD 4800 #define __UBRR F_CPU/16/UART_BAUD-1 #define...
Witam, robię obrotomierz do silnika o obrotach do 6000obr/min. Pomiar wykonuje następująco: - po 1 przerwaniu startuje timer1 - w obsłudze przerwania timera1 (co 100us) zwiększam zmienna X - po 20 takich pomiarach usrednam wyniki i poddaje kalkulacji: Impuls: Disable Int1 If Measure = 0 Then X = 0 J = 1 Timer1 = 65136 Enable Timer1 Measure = 1 Else...
Ponieważ długo szukałem przykładowego programu do regulacji fazowej mogącego sterować 8 triakami przesyłam kod na 90S8535 do tejże zabawki. Układ nie jest jeszcze sprawdzony w praktyce. Dodaje też pliczek z Proteusa w którym narysowałem schemat i symulowałem działanie układu. Jedna rzecz, którą może będzie trzeba poprawić to regulacja Timer1. W oryginalnym...
bascom bascom enkodera bascom projekt bascom bascom bascom enkoder
wiena mostek kalibracja belki tensometrycznej strumienica zamiast katalizatora
Kod serwisowy Defro Lux AG - dostęp i informacje Programowanie termostatu Tybox 21 - instrukcje i porady