Witam. mam problem ...... Więc moje pytanie brzmi czy jest możliwość programowej zmiany prescale podczas działania programu ? A jeśli da się to w czym może być problem ? Z góry dziękuje za pomoc Sprobuj RESET prescaler -> Set Bit1 w SFIOR Nie mam w tej chwili czasu na dokladniejszy opis, wiec przeanalizuj ta opcje w DS. albo tu: str. 143 http://books.google.ca/books?id=TE54lJ7X...
Witam Walczę z programem w Bascomie (coraz mniej mi się on podoba) listing poniżej. Docelowo będzie to zegar na lampach nixe. Projekt bazujący na mirley, ale zmianę ustawień chcę zrobić na impulsatorze. Dlaczego funkcja Zmiana_godziny i Zmiana_minuty nie zwraca mi wartości? Edytowałem post umieszczając w tytule znacznik
Pojawiły się małe komplikacje. Po podłączeniu 4 wentylatorów odświeżanie jest tak duże ,że wynik zmienia się bardzo szybko i na ostatnich 2 cyfrach widać tylko 88. Dziwne jest to że po podłączeniu 1 odświeża np. co 1 sec po podłączeniu 2 już co 500 ms a po 4 to chyba co 50 ms. Zmiana PRESCALE nic nie daje. Nie sprawdziłem tego wcześniej bo nie miałem...
Mam inny pilot który bankowo nadaje w RC5.I nic.Zero reakcji W takim razie po co przy konfiguracji Getrc5 można zmienić domyślny Timer0 na Timer2? Czy tylko po to żeby zwolnić Timer0 jeśli jest używany do innej funkcji? i co nam daje zmiana mnożnika PRESCALE określana przy funkcji GETRC5? W gruncie rzeczy chodzi mi o to że mam parę projektów wykorzystujących...
Zastosowałem następujące modyfikacje: - dodałem diodę zwrotną + kondensator, - zmianiłem częstotliwość proca z 4Mhz na 1Mhz Zmiana współczynnika prescale na inną niż 1, przy próbach powodowała: - miganie napisów na wyświetlaczu LCD i jego podświetlania (2 pozostałe pwm wykorzystywane są do ustawienia kontrastu i jasności podświewtlania LCD), - mniej...
Problemem może byc: [syntax=c] Ton = (DutyCycle*ICR1)/100; //czas wysoki [/syntax] Domyślnie jest to liczone na typie int, a dla niektórych kombinacji argumentów znacznie przekraczasz pojemność tego typu. Dodaj rzutowanie na uint32_t i przynajmniej jeden problem powinien znkinąć.
Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Set Tccr0.pwm0 Set Tccr0.com00 Set Tccr0.com01 Set Tccr0.cs00 Ocr0 = 127 'T2 już normalnie ;) Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Ocr2 = 127
Czyli pozostaje lutownica :/ a zmiana prescalera? jak ten bajt konfiguracyjny zmienić? konkretnie chodzi mi o zmianę wartości : CLKPR – Clock prescale register CLKPS0 bit z wartości 1 na 0
Może GPIO SHT się zmieniły. Dołącz 2 MB kopii zapasowej oprogramowania układowego urządzenia. Jeśli go nie masz, możesz również dołączyć tylko partycję konfiguracyjną Tuya: https://www.youtube.com/watch?v=WunlqIMA... Albo... może ta wartość 247 jest temperatura i po prostu brakuje flagi wartości prescale? https://obrazki.elektroda.pl/9172856600_...
Zrobiłem układ jak na schemacie, mosfet to IRF4905 sterowany jest PWM z Attiny2313 (kwarc 11,0592MHz, bez dzielnika 8). A teraz problem, albo grzeje mi się mosfet albo piszczy żarówka nim sterowana, ustawienia: Prescale 1 (~21kHz) - grzeje się mosfet i dużo prądu chyba coś pobiera, bo napięcie z 5V spada do ok 4. Prescale 8 (~2,7kHz) - mosfet zimny,...
Oczywiście że przekompilowałem. Jedynym pomysłem, jaki przychodzi mi teraz do głowy jest zmiana kolejności w deklaracji Timer1 Timer1 = Pwm ,Prescale = 1 , Pwm = 10 , Compare A Pwm = Clear Down Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 1 Dla AT90S8515 nie miało to znaczenia, ale może dla ATmegi jest to istotne. Niestety nie mogę...
Da się. Poczytaj o : CLKPR – Clock Prescale Register w rozdziale: System Clock and Clock Options. dokumentacji do procesora.
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
BlueDraco nie w tym rzecz. Janoo0 ja steruje silnikiem za pomocą L298 i problem wydaje mi się rozwiązany (nie testowałem jeszcze wszystkich silników). Sprawa była taka że mostek może przyjąć sygnał max 50KHz, przy prescale = 1 częstotliwość PWM równa się częstotliwości krwarcu czyli 16MHz (trochę za dużo :)). Po zmianie prescalera na 1024 silnik zaczął...
Chciałem Ci dać wędkę, ale wolisz rybę. $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_2s Dim Licz As Byte Enable Interrupts Enable Timer1 Start Timer1...
Czy moglbym prosic o poprawienie tego kodu. Chcialbym zeby co dwie sekundy zmienial sie stan PB1, ale chyba jeszcze źle coś robie z tym przeliczaniem :| Jak juz ktos bedzie taki dobry i to poprawi to prosilbym tez o dodanie komentarza dlaczego akurat taka zmiana. Dziekuje bardzo! $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000...
No to mamy trzy fragmenty kodu i nadal nic nie wiemy o ich złożeniu w jeden program. Jeśli nie chcesz, pomimo próśb, pokazać całego swojego kodu po ostatnich zmianach, to skończ narzekanie i zamknij wątek. Błąd jest prosty i głupiutki, ale nie widząc programu nie sposób go wskazać. Stawiam na zasłanianie deklaracji danych.
Timer0 i timer1 używają tego samego preskalera. Dlatego instrukcja prescale=64 zmienia warunki dla funkcji getrc5. Rozwiązaniem może być dopasowanie się z timer1 do preskalera użytego przez timer0 w obsłudze rc5 lub zmiana kodu funkcji getrc5.
Coś mi się nie podoba część dotycząca PWM (bez dogłębnej analizy programu). Powodem jest zmiana wartości Timer2 w programie. Załączę poniżej program, którym próbowałem działanie PWM'ów na M8. (Komentarze dotyczą Timera1, a poniższy program utuchamia Timer2) Program działa w 2 pętlkach - jedna zwiększa wypełnienie i kiedu dojdzie do max druga petla zaczyna...
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
Tylko, że ja pytam o problemy Bascoma z USARTem. Procek bez problemu działa na 4MHz. Jednak pokaż jak masz ustawione fuse? $crystal to chyba tylko informuje program jak taktowany jest procesor a nie przestawia jego częstotliwości, wpisz 8000000 i powinno zadziałać prawidłowo. To się zgadza ale, w tym uC masz specjalny rejestr "CLKPR – Clock Prescale...
Cześć wszystkim! Otóż pierwszy raz mam taki problem z odczytem napięcia... Po uruchomieniu czegoś takiego: while(1){ ADC_set_channel(2); ADC_start_convert(); if(ADC_is_complete())vol... LCD_GoTo(0,0); LCD_writeU16(voltage); delayms(30); }...
Witam. Mam pytanie. Ja mam kwarc 12 MHz i jak wyliczyć te liczby i czy coś zmieniać w prescale. Dziękuję za odpowiedz i pozdrawiam. $crystal = 12000000 i oczywiscie zmiana sposobu taktowania i czestotliwosci w FuseBitach jezeli masz ATmege.
Poczytaj ten temat link [url=http://www.elektroda.pl/rtvforum/to... tu masz trochę informacji Należy pamiętać że częstotliwość kwarcu jest ściśle powiązana z częstotliwościa PWM a to dalej powiązane jest w częstotliwościa wystawiania próbek z pliku, ale to nie to samo co częstotliwość PWM, to zmiana wartości wypełnienia PWM co określony...
Witam sprawdź ten kod co prawda są inne numery portów i inny procek ale jak zmienisz powinno działać. Problem jest jeden w momencie jak naciskasz przycisk i zmieniasz końcówkę na WYJŚCIE to stan tego pinu Musi być (0) Niski , żeby nie zrobić zwarcia. '$sim $regfile = "attiny2313.dat" $crystal = 11059200 $baud = 9600 enable interrupts 'włącz...
Witam mam prosty program. Timer zlicza naciśnięcia przycisku. Problem polega na tym że po jednokrotnym naciśnięciu wartość zwiększa się o jakąś ilość (nie zawsze o 1). Jak temu zaradzić? np. żeby zmiana stanu licznika była możliwa tylko co określony odcinek czasu. [syntax=basic4gl]Config Pinb.0 = Input Set Portb.0 Config Timer0 = Counter , Edge = Falling...
Po tej zmianie działa dobrze , pisałem program na podstawie kodu z zestwu AVT5266 w tym kodzie i projekcie był zastosowany kwarc 8 MHz i wpis Prescale w kodzie było 1 ,a także był wpis Enable Timer1. Też atmega 8 sterował Driverem L293. Aplikacja wysyła litery od 0 do 9 - max prędkość to litra q Aplikacja pochodzi z Sklepu PLAY. Problem rozwiązany Dzięki
Oczywiście że się da. Zobacz sobie w .pdf o tajmerze 1 i zobacz jakie ma możliwości trybu compare i do czego służy funkcja w nim togle output. Powiem w skrócie że tam się wpisuje określoną wartość do której będzie zliczał tajmer a jak do niej dojdzie to zrobi tzw toggle(zmiana portu na przeciwny) i zacznie liczyć w dół do zera(taki prosty pwm 50%)....
Robi się to prosto na wejściu ICP Atmegi, mierzysz czas pomiędzy kolejnymi zboczami, raz jest opadające, raz narastające itd.. potem to tylko interpretacja wyników, liczenie bitów i po odliczeniu 64 bitów z transmitowanych 66, bo dwa ostatnie dla uproszczenia procedury pomijasz. wyświetlasz na LCD lub wysyłasz po RS232 do komputera, a tam wyświetlasz...
Próbowałem ustawić prescale timera 1 na 8 co powinno dać przerwanie co 32,768ms i w przerwaniu zwiększałem liczniki mikro\milisekund co eliminowałoby opóźnienie przed zmianą wartości licznka. Wynik bez większych zmian - również około 1s\2h, może minimalnie mniej. Czy to znaczy, że miałeś kod, w którym nie modyfikowałeś timera ? Bo właśnie to Ci chciałem...
Udało mi się pogodzić te dwa timery.Timer1 pozostał bez zmian lecz timer2 zmieniłem: prescale=256 timer2=6 Udało mi się do tego dojść metodą prób i błędów ale teraz wszystko działa jak należy ;]
Witam ostatnio założyłem temat [url=http://www.elektroda.pl/rtvforum/to... ale przez moje nie dopatrzenie zostało no wyrzucony dziękuje wszystkim za pomoc chwilowo (po poprawkach) zegarek wygląda tak [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 Config Timer0 = Timer , Prescale = 256 On Timer0 Przerwanie Dim Licz As Byte...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
Dobrze już - może nie zrozumiałem w pełni, ale zapytam ostatecznie: Czy poprawiony kod będzie poprawnie funkcjonował z kwarcem 7.3728 MHz i odmierzy mi tą 1 sekundę czy nie? [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 Enable Interrupts On Timer0 Odmierz_1s Enable Timer0 Load Timer0 , 200 Odmierz_1s: Load Timer0 , 200 Incr Licz_7ms If Licz_7ms...
Zastosowałem się do instrukcji i dalej nic mi nie wychodzi.Przepraszam ,że zawracam głowe ale ja dopiero się uczę i to moje pierwsze pisanie. Dodano po 7 Teraz wygląda to tak: $regfile = "2313def.dat" $crystal = 800000 Config Pind.0 = Output Config Pind.1 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_8ms As...
Witam od 2 godzin draże problem i już troszkę jestem bezradny. Sprawa tyczy się procesora jak w temacie czyli ATmegi169 i Timera1 w niej. Chcę wywołać najprostsze przerwanie po przepełnieniu i żadnym sposobem mi się nie udaje. To że wszytko jest poprawnie testuję tak ze po podmienieniu w kodzie 1 na 0 (zmiana z timera1 na timer0) wszytko zaczyna ładnie...
Nie ma znaczenia czy pętla główna jest pusta czy nie. Ja uczyłem się na programie właśnie tak skomponowanym. Cały program był wykonywany podczas przepełnienia licznika. Co do podziału to proszę ATMEGA 8 na zegarze 8MHz Config Timer1 = Timer , Prescale = 256 'konfiguracja timera On Timer1 Cykl 'realizacja podprogramu cykl po przepełnieniu Enable Interrupts...
Ja coś podobnego zrobiłem na ATmedze16. Podłączyłem enkoder pod wejścia generujące przerwania zewnętrzne i odpaliłem tajmer, zliczam różnice czasu między przerwaniami. W AT90S2313 masz przerwania zewn z PD2 i PD3. w obsłudze przerwania zewn. robisz: prędkość = (obwód_koła / rozdzielczość_tarczy_enkodera) / różnica_czasu_między_przerwaniami lub pomiar...
Witam wszystkich! Mam taki problem.... 'C026a.bas Zmiana jasności diody LED Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down Cls 'czyść ekran Lcd "EdW" 'wyślij napis Lowerline 'kursor do dolnej linii LCD Lcd "Cwiczenie 26a" 'wyślij napis 'czekaj 3 sekundy Do 'pętla nieskończona Incr Pwm1a 'zwiększ zawartość rejestru OCR1 If...
Proszę. Gotowe bo jak widzę kilka If`ów do tej samej zmiennej zamiast Select Case i tym podobne kwiatki... [syntax=vbnet]$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 64 $swstack = 16 $framesize = 64 Const Timeout_time = 8 'x500ms Config Submode = New ' config LCD 2X16 Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 =...
Witam. [syntax=basic4gl]Ustaw F_CPU na 8000000 Hz 'Declarujemy zmienną np.Licz Dim Licz As Byte Config timer0 = Timer , Prescale = 256 Enable Interrupts Load Timer0 , 250 '--przerwanie będzie co 8ms On Timer0 Przerwanie 'W przerwaniu: Przerwanie: Load Timer0 , 250 Incr Licz If licz = 125 Then Licz = 0 Toggle Portb.6 '--- zmiana stanu co 1sek End If...
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,...
a może plynnie ?? . . Config Timer1 = Pwm , Pwm = 10 , Prescale = 8 , Compare A Pwm = Clear Down Config Adc = Single , Prescaler = Auto , Reference = Avcc . . . Wartosca = Getadc(2) If Wartosca > Pwm1a Then Waitms 1 Incr Pwm1a Elseif Wartosca < Pwm1a Then Waitms 1 Decr Pwm1a End If Coś w tym stylu działa mi bezproblemowo. Wartość 0v -0,...
Wkradł się bład przy wpisywaniu. Fuse Bity E4 D9 a nie 99 bo to pokazuje jasno na Twoim screenie Watchdog Always On :D Wyswietlacz nawet bez nadajnika ma wyświetlac po starcie trzy poziome kreski. W programie łatwo odczytać że żeby ustawić zero na wyświetlaczu procesor podaje masę na sześć segmentów. Wspólna końcówka wyświetlacza jest sterowana poprzez...
Tak jak pisałem wcześniej poczytałem i stworzyłem takie coś: Dodano po 26 Już doszukałem się błędu. Udało mi się odwzorować jak są zaprogramowane te moduły. Dodano po 4 Kwestie przycisków zrozumiałem, tylko mam problem by zrobić tak że po naciśnięciu przycisku dioda się zaczyna rozjaśniać i dochodzi do 100% a gdy znowu nacisnę przycisk dioda zaczyna...
Wydaje mi się że się da. Oczywiście nie po całkowitym odłączeniu zasilania ale po przejściu na zasilanie bateryjne. Ale musisz dokładnie przestudiować PDF. W trybie power save procesor pobiera kilka uA a Timer2 działa. No i timer2 asynchronicznie z kwarcem zegarkowym- jak napisał tadzik85. Wszystko zależy od pojemności ogniwa. Poza tym zegar wewnętrzny...
Witam ponownie. Panowie znajdźcie lepszy sposób na bicie postów. Niestety mój angielski jest za słaby żeby zrozumieć różnice, a i jestem zbyt zielony by bawić się z fusbitami (jeżeli taki jest mój problem). Trochę zmodyfikowałem mój kod i wszystko działa tak jak powinno, lecz nadal nie wiem czemu potrzebne są takie zmiany. Dim Mili As Byte Dim Mili1...
Witam, od pewnego czasu nie mogę poradzić sobie z problemem sterowania PWM w mikrokontrolerze LPC1768 (dokładnie jest to płytka LandTiger). Próbowałem setek różnych kombinacji aby to poprawnie uruchomić, jednak niestety bezskutecznie. Dodam, że jestem początkującym programistą i na pewno sporo wiedzy jeszcze mnie czeka do przyswojenia, ale przeszukałem...
Witam Pytanie 1: Zrobiłem coś takiego że jeśli odebrano znak to jest wygenerowane przerwanie Urxc następnie przed instrukcją INPUTBIN uruchamiam przerwanie Timer0 jako licznik czasu który chcę wykorzystać do przeterminowania czasu odebranego znaku. bo INPUTBIN B(1), 6 oczekuje na 6 bajtów. Jak wysyłam całe 6bajtów to działa poprawnie, a jeśli bym wysłał...
Nadal nie rozumiem kwestii konfigurowania timera tak aby zliczał tyle ile chcę. Poczytałem parę wątków i nadal nie wychodzi. Aktulanie na Atmega16 z taktowaniem 4MHz staram sie uzyskać przerwanie co 100ms. Dla testów wyświetlam zmiany na LCD [syntax=basic4gl] $regfile = "m16def.dat" $lib "I2C.LBX" '$lib "mcsbyte.lbx" $lib "Ds1307clock.lib" $crystal...
Płytka SMT32 F103RB podłączona do słuchawek. Dźwięk się odtwarzał, ale jego modulacja była dziwna, sterowało się głównie prescalerem, a wypełnienie niewiele robiło (raczej głośność zmieniało, niż częstotliwość), tak się chyba PWMa do dźwięku nie używa. Niskich tonów w ogóle nie dało się uzyskać, bo było strzelanie zamiast basu. Dlatego zrobiłem ten...
Przerwanie źle działa - reaguje n zmianę stanu jednak tylko raz na kilkanaście zmian. Jeżeli uruchamiam procesor ze stanem wysokim na wejściu INT a INTEDG = 0 (zbocze opadające) to po starcie procedura obsługi przerwania jest wywoływana. Jeżeli jest tam zero to po starcie nie wchodzi do procedury obsługi. Przerwanie kiedy procesor pracuje wywoływane...
Nie umiem arduino i zrobiłem na rejestrach dla UNO z megą 328/328p. Powinno działać. Dla mega wystarczy zmienić nazwy rejestrów w funkcjach startujących i zatrzymujących timer. Obsługa opóźnienia zrealizowana na timerze pierwszym. [syntax=c]#include <avr/interrupt.h> volatile int timer_cnt=0; // tutaj definiujesz co po jakim czasie przekaznik...
A mi wychodzi coś innego :) proponuje tak: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 8
Oto kod jednego z programów z którym mam problemy: 'C029f.bas Generator impulsów prostokątnych ' UWAGA! Wejsciem EN(able) modułu LCD steruje końcówka PB.1 ' do wyjscia PB.3 dołączona przez rezystor 1k anoda diody LED (katoda do masy) Dim Impuls As Word , Przerwa As Word , Czas As Single , Zmiana As Bit , Napis As String * 9 Config Timer1...
Odświeżam bo zmiana czasu jest rozwiązana w Bascom-ie bezpośrednio na dowolnej ATMega. Nie potrzeba zewnętrznego RTC. [syntax=vbnet] $regfile = "m32def.dat" 'procesor $crystal = 11059200 $hwstack = 64 $swstack = 64 $framesize = 64 $lib "Datetime.lbx" Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.4 ,...
Dzięki za odpowiedź! nie ma powodu, żeby nie była powtarzalna Czyli bez różnicy, którą wersję zrobię bo nic poza tym interwałem nie będzie. Zatem biorę się za zrobienie na gotowo i spróbuję dwie wersje; waitms i timer. Drążę prosty temat, bo ten wzorzec ma iść do GUM, oni sprawdzą, zapłacę, wystawią świadectwo, zaplombują i koniec grzebania. Zamierzam...
Nie spełniają? Najdroższy cyfrowy tam przedstawiony kosztuje 224,- Kč -> mniej niż 30 Zł. Ale mniejsza z tym, bo Twoje żądanie potrzebuje aż 96 załącz/wyłącz cykli na dobę. A tu będzie z takimi zegarami problem. Co do dokładności zegara na procku, to albo jakiś RTC albo moduł DCF albo da się też takim podobnym kodem: $regfile = "Attiny2313.DAT"...
Witam. Potrzebuje licznik co 1us sprawdzam poprawność działania na 1s i jakoś nie działa program do odliczania 1s działa : $regfile = "m8def.dat" $crystal = 8000000 Config Portd.1 = Output Config Timer2 = Timer , Async = Off , Prescale = 64 Dim Licznik2 As Integer On Timer2 Tim2_int Enable Timer2 Enable Interrupts Timer2 = 6 Licznik2 = 0 Do...
Nie. Robię to mniej więcej tak: czekam na przejście przez zero i w czasie półokresu włączam i wyłączam na określony czas dmuchawę. Jestem pewien, że można to zrobić łatwiej, ale musiałem całość szybko uruchomić, a że ten sposób działał to już tak zostało. Póki co dmuchawa się nie popsuła przez takie sterowanie :P. [syntax=basic4gl] $regfile = "m16def.dat"...
Napisz coś podobnego jak poniżej: [syntax=c] // zmienne globalne dostepne rowniez w przerwaniu volatile uint32_t PulseWidth; volatile uint8_t zakonczono_pomiar = 0; // obsluga przerwania TMR32B0 void TIMER32_0_IRQHandler(void) { static uint32_t LastCapture = 0; if ( LPC_TMR32B0->IR & (0x1<<4) ) // sprawdzenie czy przerwanie od kanalu zliczajacego...
Witam. Chciałem w celach edukacyjnych zrobić częstotliwościomierz. Ponieważ nie mam za bardzo skąd wziąć zewnętrznych impulsów postanowiłem, że jeden pin procka będzie je generował, a przerwanie int0 będzie liczyć ile tych impulsów było. Do odmierzenia czasu posłużył timer1, który ma odliczyć sekundę (więc wynik od razu w Hz). Po upływie sekundy ma...
Nie rozumie twojego postu . W warunkach kempingu nie wezne sieci . Zmodyfikuje aby przelaczalo na zmiane. $regfile = "m8def.dat" 'atmega 8 $crystal = 8000000 '8 mhz 'INNE KONFIGURACJE Config Timer1 = Timer , Prescale = 256 Config Portd = Output On Timer1 Juz '625 Enable Interrupts Enable Timer1 Load Timer1 = 624 ' powinnno byc 625 ale 0 to...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
No nie, niestety. Mimo pomocy w kompilacji, program nie specjalnie działa. Przy ustawieniach jak wyżej podane znalazłem tylko jedną wartość Pwm_led(1) = 99, dla której serwo samo strobując zmienia pozycję z dowolnej na maksymalną. Dla prescale=1024 nie reaguje wcale. Ponieważ przy ustawieniach: [syntax=basic4gl] Ocr2a = 90 Ocr2b = 90 Tccr2a = &B10100011...
Witam Odświeżę wątek. Dodałem układ UDN2981A pomiędzy Atmege a wyświetlacze, wyrzuciłem tranzystory które sterowały anodami oraz ich rezystory z baz. Działa całkiem nieźle. Jest jedno ale... jasność. Migotanie nie widać, ale jasność jest słaba, tzn. gdy nie ma dużego słońca to ujdzie, podobnie jak w nocy. Zastanawiam się, czy pomoże coś zmiana częstotliwości...
Więc tak Portc.0 zmiania stan Jedynie podczas gdy zapalaja sie inne czyli w momęcie Set Led1 Set Led2 Set Led3 Set Led4 ''''' '' Jeśli tam wpisze faze1 i faze 2 to też pojawia się stan wysoki i niski Ale jak już trafi do pętli programu to nie działają te oprty jako wyjścia. program wyglada tak: $crystal = 8000000 $regfile = "m8def.dat" Config...
Witam Potrzebuję zrobić zegar na ATMEGA8535 i nie mogę uruchomić pracy asynchronicznej. Kwarc zegarkowy podłączony do XTAL1/2. Program wstępny poniżej. Analogiczny program (ze zmianą ASSR.5 = 1) dla ATMEGA88 działa poprawnie. Proszę o pomoc. Pozdrawiam Jacek Program napisany w "BASCOM AVR" [syntax=basic4gl][/syntax] $regfile = "m8535.dat" $crystal =...
bascom charakteryzuje sie latwoscia programowania o ile w asemblerze musisz dobrze znac budowe procka to w bascomie az taka duza wiedza nie jest potrzebna <co moze jednak nie jest az takim duzym plusem :roll: >chac np uruchomic licznik w asemblerze trzeba wpisac odpowiednie stany w odpowiednie rejestry natomiast w bascomie zalatwiaja to wpisane...
Mam za zadanie napisania programu który będzie sterował serwomechanizmem metodą PWM. Odpowiedniemu położeniu serwomechanizmu odpowiada sygnał o konkretnym wypełnieniu. Oto mój pierwszy program "testowy" za pomocą którego chcę po prostu ruszyć tym silniczkiem. Prescaler + Timer + rejestr compare TOP + rejestr compare Toggle + bufor na niego. Z takich...
Raczej wina kwarca. Ale wpływów jest więcej. Jeśli nie chcesz laborować z kwarcami a kondensatorami około niego, zrób tak: $crystal = 10000000 'kwarc 10MHz Config Timer1 = Timer , Prescale = 1 , Compare A = Disconnect , Clear Timer = 1 Compare1a = 50000 'przerwanie co 5 ms On Compare1a P_czas Enable Interrupts Enable Compare1a . . ....itd... W obsłudze...
Witam, chciałem skorzystać z mikrokontrolera atxmega32e5 ale nic mi na nim nie idzie(programowałem tylko z serii A), nawet taki prosty program nie działa prawidłowo. Zmienna wybor powinna być wyświetlana na LCD co około 1,6 s a jest wyświetlana z o wiele większą częstotliwością. Nie mam już żadnego pomysłu co tutaj jest źle. Program: [syntax=csharp]#include...
Chyba znalazłem problem, powoli sobie zaczynam przypominać po latach, jednak analfabetyzm wsteczny zrobił swoje .Jestem na etapie nauki .Proszę o opinie czy dobrze kombinuję : mam kwarc 8Mhz pomiar robię na 8 kHz 8 000 000 / 8 = 1 000 000 /8 000 =125 Licznik zdąży zliczyć do 125 ? a chcę liczyć przesunięcie +- 90 st. więc lipa ? Może większy kwarc lub...
Mam maly problem ze zliczaniem czasu stanu niskiego na pinie INT0. Napisalem programik ale nie chce on liczyc czasu. A zmienna Ilecykli czasem zawiera wartosci ujemne, i ogolnie pokazuje jakies nieprawdziwe wartosci. bede wdzieczny za pomoc $regfile = "m48def.dat" $crystal = 8000000 $baud = 4800 Config Timer1 = Timer , Prescale = 1 On Timer1...
Może wkleję cały kod : $regfile "m32def.dat" $crystal = 8000000 Dim Zmianna As Byte Dim Porownanie As Byte Config Portc.1 = Output Config Timer0 = Timer , Prescale = 1 Config Int0 = Rising On Int0 Zero Porownanie = 255 Enable Interrupts Enable Timer0 Counter0 = 255 Glowny: Set Portd.2 Start Timer0 Do Loop End Zero: Stop Timer0 Reset...
Podsumowując projekt na moim przykładzie: najprościej dać kwarc 16 mhz i do tego 2 kondensatory 33 pF a potem skompilować wsad drakerusa zmieniając przy tym na $crystal = 16000000 i Config Timer1 = Timer , Prescale = 256. Przy użyciu wbudowanego RC o częstotliwości 4 mhz zegar bardzo się późni i nie polecam tego choć i tak przy 16 mhz jest to u mnie...
Zacina sie bo to wada bascomowejo Getrc5. ten program musi działac, dlaczego go nie zastosowałeś? Spróbuj, tylko odbiornik IR musisz dac na wejscie ICP procesora. [syntax=basic4gl]$regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1 uS On Capture1 Capture_edges 'To przerwanie...
Zacznijmy od pytań: 1. Które bity według Ciebie ustawiłeś w TCCR2B : Autor tematu pisał, że stosuje gotową bibliotekę do obsługi jakiegoś panelu dotykowego. Z tego, co zrozumiałem, to przerwanie to znajduje się we "wnętrzu" tej biblioteki. Takie efekty są oczywiście normalne, gdy ktoś mało świadomy tego, co się dzieje w jego programie stosuje gotowe...
Mam taki timer ale jak przypisać żeby po odliczeniu czasu przekaźnik się wyłączył. [syntax=vbnet] $regfile = "m16adef.dat" $crystal = 8000000 'OSCYLATOR 8MHZ Config Lcd = 16 * 2 'KONFIGURACJA TYPU WYSWIETLACZA Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Config Pina.2 = Input 'S1 Config...
Zrobiłem bufor na tablicy i oto co wyszło: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 20000000 $baud = 115200 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1 Config Timer0 = Timer , Prescale = 64 Config Portc = Input Portc = &B11111111 Enable Interrupts Enable Timer0 Enable Timer1 Enable Serial On Timer0 Przerwanie_timera...
Jak dla mnie to powinno być tak. Nie mam kompilatora pod rękom nie jestem pewien czy jest dobrze ale to mniej więcej to. Kod: $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input ' ustawiam we/wy Dim A As byte 'po co marnować pamięć A = 0 Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Enable Interrupts Do If Pind.4 =...
Witam: Mam problem, potrzebuję odczyt z pilota w przerwaniu a nie chce działać. Poniższy kod nie działa, natomiast to samo w pętli głównej działa: [syntax=basic4gl] $regfile = "m168pdef.dat" 'deklaracja rodzaju procesora (tutaj Atmega168p) $lib "mcsbyte.lbx" $crystal = 8000000 'taktowanie Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down ,...
Pobawiłem się dziś chwilkę programowym PWM. Jest to rozwiązanie na 8 kanałów - 25 może być ciężko pociągnąć ale oczywiście możesz próbować rozbudować program i zmienić częstotliwość zegara czy wywołania przerwań. Pierwszy to demonstracja tworzenia w zasadzie dowolnie biegnącego światła - dane umieszczamy w liniach Data (wartości od 0 zgaszone do 8 max...
Więc sprawdziłem i takie wyniki. Testowane na układzie i oscyloskopie 2 kanałowym. Zmiana opóźnienia If Licznik = 1 Then do 1000 daje włąśnie to opóźnienie lecz mam uszkodzona podstawę czasu w oscyloskopie i nie bardzo jestem w stanie sprawdzić ile trwa. Po podaniu impulsu czas zmian portów wydłuża się i skraca zgodznie z watroscia 1 do 1000. Lecz działa...
Witam serdecznie. Próbuje stworzyć generator PWM o zmiennym wypełnieniu i zmiennej częstotliwości. Generator ten chce stworzyć na ATmega32 12MHz w języku BASCOM. Zmian dokonywać będzie można przez dwa potencjometry. Mam już napisany program ale niestety sygnał na oscyloskopie wariuje. Co jakiś czas jest przebicie innych wartości. Walczyłem z tym dość...
Spróbuj zamiast Timebase zrobić Load Timer0, 31250 (nie będzie przeskakiwał po kodzie ponad 30 tys razy tylko zliczy wewnętrzne tyle impulsów i po przepełnieniu przejdzie do podprogramu), w ogóle ustawiłbym Prescale na wartość około sekundy chyba, że chcesz mieć jak najdokładniej. [syntax=basic4gl]$regfile = "m8adef.dat" $crystal = 8000000 $hwstack...
Jeżeli można wiedzieć o ile będzie wiesza częstotliwość? (+/-) i jakie sa szanse na spalenie atmegi, ew. zawieszanie się programu? Dodano po 16 No i jeszcze kilka pytan.. czy przy wpisaniu 255 wartość zapisuje się w pamięci ulotnej czy nie? tzn chodzi mi czy po ponownym podłączeniu uC do prądu częstotliwość wróci? jeżeli nie jak później kalibrować...
http://obrazki.elektroda.pl/5385398300_1... Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt...
http://obrazki.elektroda.pl/6978962600_1... Witam. Chciałbym zaprezentować moją konstrukcję, którą jest sterownik oświetlenia oraz klaksonu do motocykla typu cafe racer. http://obrazki.elektroda.pl/5488909600_1... Sterownik oparty jest na atmege8 oraz tranzystorach mosfet irfz34n. Urządzenie steruje kierunkowskazami,...
Witam Udało mi sie uzyskać w miarę płynną regulacje na podanym przezemnie wyżej schemacie PC817 zastoswałem gdyż był pod ręką a PC814 jeszcze nie dotarł Ale docelowo chciał bym zastosować ten drugi zmieniłem też program teraz procedura przerwania i timera wygląda następująco [syntax=vbnet] $regfile = "m32def.dat" $crystal = 16000000 $hwstack = 128 $swstack...
Witam, Napisałem kawałek programu który ma generować przebieg na porcie b.0 około 9ms - stan wysoki około 4,5ms - stan niski Użyłem do tego licznika, żeby odmierzał czas, dokładność tutaj akurat nie ma znaczenia. Problem w tym że nie działa to jak należy, tzn wykonuje się tylko jeden podprogram. Wiem że jest coś nie tak, bo po przepełnieniu licznika,...
Kurcze to nie wiem gdzie mierzyć i jak :( jeśli to nie problem to poproszę o pokierowanie. Zasilam z zasilacza lab UDN-y (6V) logika +5 zasialana jest z płytki testowej AVR OK niedawno sobie nabyłem oscyloskop z zamiarem jego poznania :) , poproszę o pokierowanie mnie gdzie mam mierzyć to zobaczymy co się uda zobaczyć.... Dodano po 5 No to jeszcze kawałek...
Witam! Wykonałem zegarek binarny z tego linku: 'TO DZIALA :) 'S1 - godziny 'S2 - minuty $regfile = "m8def.DAT" $crystal = 16000000 Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Uniwers As Byte Config Portd = 255 : Portd = &B255...
tu masz trochę opisane w tym [url=http://www.elektroda.pl/rtvforum/to... wprawdzie bascom ale zasada i ustawienie PWM są tam gotowe do podglądnięcia, przy okazji troche teorii, warto poczytać. Należy pamiętać że częstotliwość kwarcu jest ściśle powiązana z częstotliwościa PWM a to dalej powiązane jest w częstotliwościa wystawiania...
Dlaczego stosowana jest aż tak wielka częstotliwość PWM Przy ustawieniu Timer1, jak w załączonym programie (Prescale = 64) częstotliwość PWM wynosi oczywiście ok. 340Hz. W układzie z tranzystorami T1 i Q1 użycie wyższej częstotliwości (nawet 22kHz) nie stwarza żadnych problemów (a przynajmniej ja ich nie stwierdziłem). UART jest tu trochę nietrafiony,...
Po niewielkich zmianach powinno działać też na Attiny85. Wrzucam kod dla Attiny85 (nie testowany; nie mam jak): [syntax=c]//############################... // SPWM implementation for Attiny85 // Clock frequency 8MHz internal clock oscillator // High Fuse: 0xFF, Low Fuse: 0xE2 // // Signals generated: // - SPWM...
Witam. Staram się zrobić program który będzie reagował na wyzwalanie poprzez przycisk (w przyszłości klaskanie). Wejście, do którego podłączony jest przycisk to Port C na wejściu 0x01. Cały problem jest następujący: - gdy na wejściu podany jest sygnał, zmienna Licznik zwiększa się o jeden. - gdy zmienna jest równa 1, to następuje włączenie timera z...
Prescaler pracuje nawet w TV LCD czyli znacznie niżej, co on ma robić to decyduje oprogramowanie w procesorze obsługującym go.
Widzę że muszę trochę sprostować. 1. Nawet kosmicznie często wywoływane przerwanie zdąży się wykonać choć by nie wiem jak długo ono trwało, bo przerwania po wejściu w obsługę jakiegoś przerwania są blokowane i odblokowywane są dopiero po zakończeniu się obsługi tego przerwania. Więc twierdzenie że przerwanie nie zdąży się wykonać w ciągu 128us bo samo...
Witam, Dzisiaj zmierzyłem się z tym samym problemem, choć kod na ATTINY13 przerabiałem samodzielnie. Taktowanie wewn. 9,6MHz. Oprócz użycia zaktualizowanych wzorów na obliczanie czasów bitów i pół-bitów trzeba było zwiększyć tolerancję: #define DD_RC5_TOLERANCJA_US 350 Po tej zmianie zaczęło działać poprawnie. Jak widać więc attiny13 ma "pecha" do tych...
zmiana prescale bascom bascom zmiana prescale bascom prescale zmiana
przetwornica 200hz wygłuszanie pomieszczeń pasek rozrząd citroen
napis neonowy roomster schemat
Przekaźnik 204 w Audi A4 - funkcje i diagnostyka Serwis amplitunera Unitra AT 9115 we Wrocławiu - gdzie naprawić?