Ten sam kod, który zaprezentowałem w pierwszym poście , natomiast przerwanie wywołane już na nodze portb.0 i działa zmienna nie jest nadpisywana. Cała reszta kodu bez zmian poza zmianą przerwania. Przerwania skonfigurowane prawidłowo. Moze przerwania masz skonfigurowane prawidlowo... ale..... Czy mozesz wyjasnic w jakim celu, w obsludze przerwania...
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 '***************************************...
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...
ISR(TIMER1_OVF_vect) Upewnij się czy nazwa tego wektora (adres) jest właściwy. Najlepiej w jakimś debagerze.
emarcus super wykład, dziękuję! Starałem się wytłumaczyć ale faktycznie powinienem napisać - dwa niesymetryczne impulsy masowe w okresie 103ms (jednak wciąż nie jestem pewien czy precyzyjnie). Urządzenie już zrobione, działa. Ale napotkałem problem, o którym wspomniałeś. Mianowicie zawartość Counter1 w momencie rozpoczęcia cyklu jest przypadkowa. Nie...
ok zrobilem cos takiego , wyjasnie jeszcze zasade dzialania mamy dwa sygnaly z silnika 1. sygnal zaplonu ( 4 impulsy na cykl pracy) 2 sygnal pierwszego cylindra ( jeden impuls na cykl pracy , pomiedzy impulsami zaplonu) program dziala tak ze zeruje licznik za kazdym razem wystapienia sygnalu 1cylindra , nastepnie przy kazdorazowym sygnale zaplonu ,...
A tak to by to zadziałało ?? Config Timer0 = Timer , Prescale = 64 Config Timer1 = Timer , Prescale = 64 Dim W As Byte W = 10 Do If P_gora = 0 Then Incr W End If If P_dol = 0 Then Decr W End If If Ped1 = 1 Then Start Timer0 Start Timer1 Set Silnik1 Set Silnik2 End If If Ped2 = 1 Then Set Silnik2 End If If Sens = 0 Then Reset Silnik1 End If If Kran1...
Literówka z tym portd.3 a pind.3 , już poprawiłem Wkleiłem kod do pętli i na oscyloskopie cisza. Podpowiedź co jeszcze poprawić ? [syntax=c] $regfile = "m8def.dat" $crystal = 16000000 Config Pind.3 = Input Config Pind.0 = Output Config Timer1 = Timer , Prescale = 1 Do If Pind.3 = 0 Then Reset Portd.0 While Timer1 > 0 Set Portd.0 Reset Portd.0 Timer1...
To właśnie zostało uruchomione - musi działać. Pisane pod WinAVR [syntax=c] #define SET(port, bit) port|=(1<<bit) #define RESET(port, bit) port&=~(1<<bit) #define NOT(port, bit) port^=(1<<bit) //Przerwanie wywolywane 100 razy na sekunde ISR(TIMER1_COMPA_vect)// == SIG_OUTPUT_COMPARE1A { NOT(PORTD,PD6); } int main (void) { SET(DDRD,PD6);...
Już działa elegancko. Sprawdzone procedury: https://filmy.elektroda.pl/3NFTHeMM.flv i zamykam :-)
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.
Robię tak jak mi sugerujecie ale z tymi warunkami jest coś nie halo. Nadal sie nie kompiluje. If I1 = 0 Then Start Timer1 'Start Timera End If If I1 = 0 Then If Efekt > 1 Then 'Zmiana efektu Efekt = Efekt + 1 End If Stop Timer1 Reset Licz End If End If 'Włączanie układu If I1 = 0 Then If Licz >= 1 Then If Efekt = 1 Then Efekt = 2 End If End If...
Chciałbym jednak użyć CTC, ale kompletnie nie wiem jak się za to zabrać w Bascomie. Nie znalazłem na forum żadnych przykładów. Jak by ktoś poczęstował przykładem kodu dla z CTC w Bascom to byłbym niezmiernie wdzięczny :) Jakieś kilka dni temu, nie dłużej jednak niż tydzień, ‘gaskoin’ podal dokładną procedurę konfiguracji CTC. Jeżeli przeoczyłeś...
Ś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, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
Ale odpowiedzi dla nouki? W Bascomie można wstawić wartości do rejestrów, niekoniecznie w asemlerze. Ja to robiłem tak: Set Tccr1b.cs10 'start timer1 Else 'a jak nie Czas = Timer1 'odczytaj czas (liczbę zliczonych impulsów) z timer1 Reset Tccr1b.cs10 'zatrzymaj licznik Timer1 = 0 'wyzeruj licznik(żeby po następnej zmianie wyjścia komparatora mógł liczyć...
Spróbuj zmienić początek programu - wektory przerwań: ;================================ .CSEG .ORG0x0000 jmp RESET .ORGOC1Aaddr jmp TEST ;Przerwanie zgodnego porównania OC1A .org0x0050 ;....... dalsza część programu
Poniższy kod działa na 100% $regfile = "2313def.dat" $crystal = 11059200 $baud = 9600 ' ... Config Timer1 = Timer , Prescale = 1024 'zmień prescale na mniejsze, żeby odmierzać krótsze odcinki czasów Config Pind.2 = Input Set Portd.2 Przycisk Alias Pind.2 '... Do Stop Timer1 Timer1 = 0 Bitwait Przycisk , Reset Start Timer1 Bitwait Przycisk...
hmm... a może samo sterowanie fazowe masz spierniczone i tu jest pies pogrzebany ? Wyłącz też na próbę watchdoga. Wrzucam mój stary, ale działający kod (istotne fragmenty), może się na coś przyda. [syntax=vbnet] Dim Predk_timer(70)as Word For Pomoc = 1 To 70 Predk_timer(pomoc) = Pomoc_w Pomoc_w = Pomoc_w + 13 Next Pomoc Config Aci = On , Trigger = Toggle...
Czy mógłbyś jeszcze napisać czym jest ta zmienna D_v i rzuć okiem na te moje wypociny[syntax=basic4gl][/syntax] $regfile = "m32def.dat" $crystal = 16000000 Config Portc.0 = Output Config Portc.1 = Output Config Portb.1 = Input Set Portb.1 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.2...
Jak zmienić kod aby dane wyjściowe były w Serial Monitor zamiast na LCD. Dekoder nie wymaga biblioteki IRRemote tylko wykorzystuje przerwanie INT0 na pinie D2 Arduino: Dodano po 41 No dobra, poprawiłem ale to nie są wartości 8-bit HEX NEC ADDR, CMD tylko rozbity kod 32 bit integer na XXXX XX XX. Myślałem iż on dekoduje wartości ADDR i CMD ale jednak...
Wystarczy wpisać do rejestru licznika zero oraz wyzerować preskaler. Na przykład Timer0: 1. TCNT0 ustawiasz na zero 2. ustawiasz bit PSR10 w rejestrze SFIOR. Ale uwaga! W tym przypadku PSR10 zeruje także preskaler Timer1. Szczegóły w datasheet. Jak już poprawisz program to napisz proszę w komentarzu do artykułu. :)
Zapalasz: „Set Led” Gasisz: „Reset Led” Cała linia odnośnie przerywania i PWM też jest nie potrzebna (Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down). Złap jakąś książkę z BASCOM-em naprawdę się przydaje, albo przynajmniej jakiś porządny kurs będziesz łykał co do czego ;)...
Czyli pisząc programy w tym środowisku i nie znając go dogłębnie, wykorzystując bezpośrednie ustawianie rejestrów należy brać pod uwagę, że bity mogą nie mieć wartości domyślnych po resecie.
Const odlicz=65436 rem dla zegara 12MHz odliczy tylko 100 impulsow (100us) dim licznik as word dim koniec as bit Config Timer1 = Timer , Mode = 1 , Gate = Internal On Timer1 etykieta Counter1 = odlicz do start timer1 bitwait koniec,set reset koniec rem petla powtarza sie co 100 us loop etykieta: licznik = counter1 rem To ma eliminowac czas od momentu...
Przecież timer liczy tak: niech MR0 = 4 to 0,1,2,3,4,0,1,2,4,0,... zatem trzeba odjąć 1. W takim razie zrób test preskaler ustaw na wartość taktowania uC, żeby do timer był taktowany 1 s natomiast do rejestru MR0 załaduj 10 a później 9 LPC_TMR32B0->MR0 = s - 1; Teraz dopiero zauważyłem, że AN jest jedno przerwanie od timera i jego wejścia CAP. Ale...
Oto szkielet programu *** .dseg .include "2313def.inc" ; Jaki procesor ;.......................................... SEGMENT DANYCH W SRAM ; Twoje dane ;.......................................... SGMENT DANYCH W EEPROM .eseg .org $0000 ; Twoje dane w EEPROM ;..........................................
Prosty przykład: on timer1 zwieksz enable timer1 start timer1 do ' przycisk 1 if pina.1=0 then reset portb.1 a=0 end if if a=10 then set portb.1 ' czas=timer1 x 10 ' przycisk 2 if pina.2=0 then reset portb.2 b=0 end if if b=20 then set portb.2 'czas=timer1 x 20 ' przycisk 3 if pina.3=0 then reset portb.3 c=0 end if if c=30 then set portb.3 'czas=timer1...
Witam wszystkich, potrzebuje pomocy z poniżej zamieszczonym kodem (jestem początkujący w C więc proszę o wyrozumiałość) Kod działa idealnie ale dla jednego wejscia [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 9, 8, 7); volatile unsigned int count = 0; //input pins...
Procesor to Atmega16. Zauważyłem, że przy włączeniu zasilania układu przerwanie zostaje wykonane 4 razy; po resecie tylko raz.
Tu masz kod jakim testowałem płytkę. Napisane to było bardzo "na pałe", aby tylko odpalić i sprawdzić regulację na triaku. NIE MA tu procedur odczytu czasu z RTC i programowania całości. Jak napisałem projekt i płytka leży od chyba stycznia i czeka na "swój czas" - po prostu kolega który mnie prosił o wykonanie tego układu wyjechał za pracą a ja nie...
Witam Potrzebuję zbudować licznik który po zliczeniu określonej liczby impulsów wykona jakąs czynność. Jako generator impulsów wykorzystałem kontaktron magnes i filtr RC Początkowo napisałem program obrotościomierza i wszystko działa ok. A Teraz po małych zmianach nic nie zlicza. Wykorzystuję Timer1 $regfile = "m16def.dat" $crystal = 1000000...
TimerExplode oraz ShowTime całkowicie nie działają TimerExplode to nie jest komenda! To jest nazwa timera. No dobra, tak nigdzie nie dojdziemy. Niech będzie, że zostaniemy przy jednym timerze który liczy tylko co 1s. Bardzo prosty i zupełnie pozbawiony wodotrysków program: http://obrazki.elektroda.pl/5017639100_1... Zero wodotrysków i kombinowania....
$crystal = 8867000 $regfile = "2313def.dat" Const T1_prescale = 1024 Const T1_okres = 500 Const Podzial_ms = 1000 Const Okresosekunda = Podzial_ms / T1_okres Const T1delay = _xtal /(okresosekunda * T1_prescale) Const Timer1_wpisz = &HFFFF - T1delay Config Aci = Off Config Timer1 = Timer , Prescale = 1 'T1_prescale Config Portb...
Celem jest zrobienie funkcji zliczającej czas między przerwaniami generowanymi przez zewnętrzny generator (docelowo będzie to obrotomierz). Generator jest precyzyjny, AD9850. Na wejście zapodaje prostokąt o różnym od 50% stopniu wypełnienia ale to właśnie nie powinno mieć znaczenia. Wyjaśniam. W poniższym kodzie korzystam z funkcji micros która mierzy...
Programik wygląda teraz tak: $crystal = 11059200 Config Pind.6 = Output Dim Czas As Byte Dim Czestotliwosc As Single On Int0 Licz Config Timer1 = Timer , Prescale = 256 Reset Portd.6 Enable Interrupts Enable Int0 Enable Timer1 Config Int1 = Rising Do Czestotliwosc = 1 / Czas //Tutaj chyba trzeba coś dodać// If Czestotliwosc >= 3.5 Then Set Portd.6...
Witam, Zerknijcie proszę. Chodzi o funkcję 2. Config Portd.4 = Input Config Portb.7 = Output Config Portb.6 = Output Config Portb.5 = Output Config Portb.4 = Output Config Portb.3 = Output Config Portb.2 = Output Config Portb.1 = Output Config Portb.0 = Output Config Int0 = Rising Config Int1 = Rising ' Config Timer1 = Timer , Prescale = 1 'timer1 -...
przecież zczytywanie pinów, także zajmuje określoną ilość cykli A także pewną ilość cykli, być może niestałą, zajmie ciągła ich interpretacja w pętli syntezy... ;) A niech jakiś switch będzie słabo kontaktował, to będzie stabilność... Skoro użytkownik ma samodzielnie zmieniać stan przełączników, to wystarczy mu wytłumaczyć, że powinien zmiany zatwierdzić...
kto mi pwoie czemu to nie dziala? sama idea chyba dobra, tylko cos z przerwaniami kicha Config Timer1 = Timer , Gate = Internal , Mode = 2 Enable Int0 Enable Timer1 Enable Interrupts Priority Set Int0 Reset Tcon.0 On Int0 Tim0 On Timer1 Timer1_int T = 0 10u = 0 Do Cls Lcd "_" ; T Waitms 250 Loop Timer1_int: Load Timer1 , 10 Start Timer1 Incr 10u Return...
skoniecki, spróbuj tego ;-) $regfile = "m8def.dat" $crystal = 8000000 Enable Interrupts Enable Timer1 Config Timer1 = Timer , Prescale = 64 On Timer1 Przerwanie '''''jesli timer1 doliczy do 65535 wykonaj Przerwanie Counter1 = 64285 '''''=65535-1250 -> pprzepelnienie timera co 10ms Start Timer1 Config Portd.0 = Output Config Portd.1 = Output...
Narazie wymyśliłem coś takiego $regfile = "m8def.DAT" $crystal = 8000000 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.6 , Rs = Portd.4 Config Timer1 = Timer , Prescale = 64 'czas taktu 8us Portc.2 = 0 Config Pinc.3 = Input T Alias Portc.2 R Alias Portc.3 Dim A As Word Cls...
Witam w niedzielne popołódnie. Narazie zmajstrowałem coś takiego: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinb.2 , Db7 = Pinb.1 , E = Pinc.1 , Rs = Pinc.0 Config Rc5 = Pind.2 Config Timer1 = Timer , Prescale = 256 Config Sda = Portc.4 Config Scl = Portc.5 On Timer1...
Witam! postanowiłem użyć dwóch timerów lecz za chint nie chce mi to działać :( [syntax=basic4gl]Sub Tmr1 Cls Dim Sek As Byte Enable Interrupts Config Timer1 = Timer , Prescale = 256 Enable Timer1 Timer1 = 34286 On Timer1 Czas: Start Timer1 Sek = 0 Locate 1 , 1 : Lcd " Czas zadzialania" Locate 2 , 12 : Lcd Chr(1) : Lcd " -MENU" Locate 4 , 12 : Lcd "C...
Powiedz mi skąd u ciebie wektor przerwania wynosi 10 ? Czy to jakis Egzotyczny procesor czy jak ? Bo dla przerwania Timera 0 dla normalnego uK jest to inna wartość Patrz np Atmel strona http://www.atmel.com/dyn/products/tools_... C51 Timer1 in Mode 1 with Soft Gated Timer (20 KB, updated 06/04) /** * FUNCTION_PURPOSE: timer1 interrupt...
Witam, Mam problem z uruchomieniem dwóch timerów. Timer0 ma obsługiwać przerwanie pochodzące z INT1 (Signal1), natomiast Timer1 (Signal0) z INT0 (ale może być odwrotnie). Każdy z timerów ma wykryć impuls PWM większy od 1,5ms i zapalić lub zgasić diodę / diody. Po wgraniu poniższego kodu, diodki migają chaotycznie, nie ma żadnej reakcji na zmianę szerokości...
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...
Dodaj komentarze- co gdzie chcesz zrobić. Bo nie rozumiem po co Ci Timer1 skoro wynik masz z Timer0.
Tu masz dzilajacy kod;) fast PWM na timerze1 rozdzielczosc 8 bit. .include "m8def.inc" .org 0x00 rjmp reset RESET: ldi R16,low(RAMEND) out SPL,R16 ldi R16,high(RAMEND) out SPH, R16 ldi r16,1<<WGM10|1<<COM1A1 out TCCR1A,r16 ldi r16,1<<WGM12|1<<CS10 out TCCR1B,r16 ldi r16,122 out OCR1AL,r16 ldi r16,0xFF...
Ja uczyłem się na poniższym kodzie: [syntax=basic4gl]'1 second code $regfile = "m8def.dat" ' or "m88def.dat" or "m168def.dat" $crystal = 4000000 $baud = 9600 $hwstack = 32 $swstack = 16 $framesize = 40 Dim Seconds_count As Long ' ========================================... ' Timer1 initialization ' ' Mode: Clear Timer1 on Compare Match (CTC...
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
Pracuję nad odczytem ramki z ALPINE M-BUS i wysyłaniu do Terminala po RS232 Temat był kiedyś poruszany.Ogólnie M-BUS pracuje na zasadzie PWM ,tzn, 0 i 1 są transmitowane z różną szerokościa impulsów . Joerg Hohensohn zrobił już coś takiego w języku C. www.jevinskie.com/mbus/ Chce zrobic tosamo w bascomie. Docelowo ma być pózniej emu zmieniarki na module...
$regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 1 Config Portb = 255 Config Portc = 255 Config Portd = 255 Portb = 0 Dim A As Byte 'Czerwony Dim B As Byte 'Zielony Dim C As Byte 'Niebieski Dim D As Byte 'Czas A = 0 B = 255 C = 255 D = 4 Zolty: Do Pwm1b = A Set Portb.4 Waitms...
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...
No i jest dziwna sprawa ... Dioda testowa świeci najpierw informując o dojściu do podprogramu "odtwarzacz" potem informuje o utworzeniu pliku testowego "plik13.txt" na karcie, potem informuje że procek zabiera się do odtwarzania pliku .wav i cały cykl się powtarza w kółko. Napisałem że dziwna sprawa bo wygląda na to że prawidłowo inicjalizuje kartę...
więc tak, schemat i fotka: http://obrazki.elektroda.pl/2310798200_1... http://obrazki.elektroda.pl/4708784000_1... wszystko działa, tylko tak jak pisałem z jakiegoś powodu procesor co jakiś czas wraca do początku maina. wszystkie zmienne zostają zresetowane, wpomniany MCUCSR nie rejestruje resetu. i dodam jeszcze kod...
Mam takie coś: $crystal = 4000000 $regfile "attiny2313.dat" Config Lcd = 16 * 2 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.4 LCD Db5 = Portb.5 , Db6 = Portb.6 Db7 = Portb.7 , E = Portb.3 Rs = Portb.2 Dim Wynik As Long Config Timer1 = Counter , Edge = Rising Cls : Lcd "Licznik" : Wait 1 Start Timer1 If Pind.1 Then Waitms 25 Timer1 = 0 Do Timer1...
Witam Chciałem nauczyć się regulacji fazowej i popełniłem taki układ na podstawie tego co wyczytałem w internecie http://obrazki.elektroda.pl/1619199600_1... I do tego taki program [syntax=vbnet] $regfile = "m32def.dat" $crystal = 16000000 Config Com1 = Dummy = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 'konfiguracja...
A mi wychodzi coś innego :) proponuje tak: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 8
To się mylisz. W OCR1B może być dowolna wartość nie większa od tego, co jest w OCR1A. Po reset jest tam 0, więc możesz nie wpisywać nic i będzie dobrze, a nawet bardzo dobrze.
To trzeba zmienić priorytet z 12 bitów stałokodowego pilota na odbiór HCSa lub całkiem usunąć obsługę pilota 12 bitowego. może tak: [syntax=vbnet]'*************************... '========================= przerwanie przy kazdym zboczu ICP, odczyt czasu trwania impulsu...
Witam W prockach dopiero raczkuje. Robię obrotomierz do samochodu (choć można zastosować to wszedzie). Oparłem to na atmega16 bo taki akurat teraz mam, ale docelowo ma byc na 2312.Na razie jest wszystko w fazie testowej na biurku, ale założenia są takie: na kole zamachowym umieszczam siakiś czujnik, podaje to na układ formowania impulsu, z którego będę...
Oczywiście, że warto go odratować. Źródła w Basicu w wersji V4 są na Elektrodzie. Po lekkim uporządkowaniu wrzucam poniżej. [syntax=vbnet]$regfile = "m8535.dat" $crystal = 8000000 Config Clock = Soft , Gosub = Sectic Config Sda = Portd.1 Config Scl = Portd.0 Config Timer1 = Timer , Prescale = 64 Config Timer0 = Timer , Prescale = 64 On Timer1 Dcf_start...
Hej :) Powracam do tematu, ale z innym problemem. Otoz w ww. "komputerku" czasami resetuja mi sie wartosci zmiennych, lub przyjmuja kosmiczne wartosci. Bardzo czesto, gdy mam ustawione np. pokazywanie przebytej drogi, po jakims czasie wraca do pokazywania temperatury, czyli wartosc pewnej zmiennej zmienia sie z 1 na 0. Ponadto zmienna przechwujaca ilosc...
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...
Zgadza się zapomniałem. Mam jeszcze problem z portem E 3 piny jako wejścia. TRISE = 0b0111; i nie chce mi ich czytać. W aplikacji nie mogę się doczytać powodu. Dodano po 25 Już chyba mam. Po resecie ustawiane są jako wejścia analogowe.
Witam :) Źle inkrementujesz "Licznik" ... 'jest ... Skocz: Incr Licznik Toggle Portd.4 'CLK Timer1 = Timer1 + 65535 ... '... powinno być Skocz: Toggle Portd.4 'CLK If Portd.4=0 Incr Licznik End If Timer1 = Timer1 + 65535 Return ... 'Coś zeżarło przecinki Litera_a: Data 1 0 1 0 0 0 1 1 1 'Po wysłaniu 9 bitów trzeba zatrzymać Timer1 , by nie...
Fakt są tam nazwy funkcji - jakoś na plik cr_startup_lpc11xx.c nie zwracałem uwagi :) void MOJA_OBSLUGA_INT3_IRQHandler (void) ALIAS(IntDefaultHandler); oraz w main obsługa przerwania na: [syntax=c] // obsluga przerwania od portu GPIO3 void MOJA_OBSLUGA_INT3_IRQHandler (void) { // kod obsługi przerwania... } [/syntax] ale podczas kompilacji nadal dobija...
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...
Super :) Teraz przydała by mi się pomoc jak skonfigurować w bascomie timer1 tak żeby był taktowany kwarcem :) Dodano po 2 Czy przy pracy na wewnętrznym generatorze i rezonatorze 32768Hz na pinach XTAL1/TOSC1 i XTAL2/TOSC3 trzeba w bascomie określić $crystal ? Znalazłem coś takiego ale nie ogarniam tego CTC :) [syntax=basic4gl] '1 second code $regfile...
Witam ponownie, Mam nadzieję, że tym razem mój program wygląda nieco lepiej. A oto kod: $crystal = 4000000 $regfile = "2313def.dat" Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.6 , Rs = Portb.7 Dim P As Bit 'Bit aktywnego pomiaru Dim Pz As Bit 'Bit zakonczenia pomiaru Dim...
'$sim 'to jest programik do sterowania silniczkiem w obu kierunkach 'za pomocą sygnału do sterowania serwa w odbiorniku zdalnego sterowania. 'sygał odbierany przez wejście odwracające komparatora analogowego z progiem 1.1V 'Sterowniki do silników modeli samolotów,chociaż są lekkie, nie mają zwykle możliwości zmiany 'kierunku obrotów silnika.(I...
1. Czy nie będzie przeszkadzać że jest 20nF zamiast klasycznych 22nF? Raczej pF. 20, czy 22 raczej bez znaczenia, chociaż ja dałbym 12-15 pF. Podane wzory we wskazanym linku przez kol. (at)stmx są ok, tylko trzeba uwzględnić pojemność wejścia MCU oraz pojemność ścieżek. Stąd te 15 pF max myślę, że jest lepsze. 3. Użyte kondensatory trochę się różnią...
Mogę oczywiście i tak jest, zobacz foto. To jest marker startu. Ustawiam na nim początek, przyciskam reset w liczniku i naciskam przycisk start. Rusza napęd i zliczanie z enkodera od zera. Licznik zlicza i zatrzymuje na wymiarze, timer1 odlicza 200 ms do ustabilizowania papieru i całkowitego wyhamowania napędu żeby papier w ruchu nie wlazł pod noz i...
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are written. For non-PWM modes, the action can be forced to have immediate effect by using the FOC1x strobe bits. Być może w tym jest problem. OC1A jest prawdopodobnie inicjowane z wartością 0 do momentu wystąpienia pierwszego "compare match". W trybach "set...
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...
Mam od dawna przetestowany i działający program do odtwarzania plików *.wav. [syntax=basic4gl] '---PROCESOR----------------------------... $regfile = "M32Def.dat" Wait 2 $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 '---DEKLARACJE ZMIENNYCH-------------------------------...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Witam Męczę się z tym i mimo że powinno działać coś jest nie tak. Układ detekcji zera jest zrealizowany na pc814 (układ wg pewnej mądrej książki czas całej "szpilki 1,6ms). Układ wykonawczy to MOC3023 + BTA 16. Aby zobaczyć jak to działa bawiłem się z rozjaśnieniem od zera do 100%, i pierwsze 1/3 idzie idealnie następnie strasznie żarówka mruga, wariuje...
Na to wskazuje także tablica wektorów z początku pliku hex: :10 0000 00 1EC0 37C0 36C0 35C0 34C0 33C0 32C0 31C0 66 Widać najpierw wektor resetu skaczący pod adres 0x3E (0x1E * 2 + 2) a potem ciągłe skoki pod ten sam adres (0x72 - np. 0x37 * 2 + 4, 0x36 * 2 + 6 itd) - normalnie jest to __bad_interrupt, skaczący na początek (do wektora resetu). Wektor...
co by niebyć goło słownym $regfile = "8535def.dat" $hwstack = 64 $swstack = 64 $framesize = 32 'Czestotliwość kwarcu np 4Mhz mozna zmienić $crystal = 4000000 'ustawienie końcówki wyjścia Triac_out Alias Portb.0 Config Pinb.0 = Output Set Triac_out '***************************************... Const Rozdzielczosc = 100 Const Tim =(_xtal /(100...
witam... mam problem z timerem1.... podczas pierwszego wykonania procedury "petla" jest wszystko ok (chyba bo licze czas rzędu kilkudziesięciu ms wiec mam problem to sprawdzić), ale podczas drugiego wywołania "petli"timer umiera i już w ogóle nie liczy nic.... zamieszczam fragment kodu (procedury bezpośrednio współpracujące z pętla) Sub Sprawdz_czy_dziala...
Odłącz sobie elementy wykonawcze bezpiecznikiem, wyjmij kabelki z Q czy co tam masz w szafce i zacznij eksperymenty. Najpierw narysuj układ że przycisk uruchamia (np. set jakiejś wirtualnej cewki M1 jako pamięć) Timer1 na 15 minut, a timer wyjście Q1, wgraj sprawdź. Potem dorób że drugi przycisk przerywa pracę, wgraj sprawdź (reset ww. M1). następnie...
A coś takiego będzie dobre? A jak zrobić żeby nie przekręcić licznika bo teraz dochodzę do końca i przeciągam oto program [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 8000000 Config Portd.6 = Output Config Portb.0 = Output Config Portb.3 = Output Dioda Alias Portd.6 Przek Alias Portb.0 Reset Dioda Reset Przek Config Timer1 = Pwm , Pwm = 8...
Witaj. Skądś znam ten problem, ktoś mnie o coś takiego prosił. Tyle, że wartości częstotliwości i wypełnienia były ustawiane potencjometrami. Programik był napisany na ATtiny26, wartości częstotliwości i wypełnienia nieco sie różnią, ale możesz sobie to zmienić. Programik testowałem (ale bez oscyloskopu). W razie błędów proszę o łagodny wymiar kary...
dziekuje za zainteresowanie otoz wczesniej w programie mam wyswietlanie na lcd + polaczenie z komputerem gdzie uzytkownik podaje znaki z klawiatury (od wlaczenia ukladu do obslugi pomiaru temperatury mija >0.5 sek).. mysle ze dzieki temu sygnał reset wystepuje.. ale moge sie mylic..
regfile = "2313def.DAT" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 'Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4 Cursor Off Config Pind.6 = 1 Config Pind.0 = 0 Portd.0...
Watchdog robi reset, a ja nie chce reset bo potrzebuje przejowac jedna informacje w komorce pamieci, a nie wiem jak flash obsluzyc. Dzieki pozdrawiam.
Witam. Panowie walczę jakiś czas i nie mogę poradzić sobie z dość prostą sprawą. Nie działa mi instrukcja Load na timer1 Wyczytałem że wartość jaką podaję czyli 250 zostanie odliczona do 0 i ma nastąpić przerwanie i tak w koło. Czyli licząc Q=8Mhz 250 impulsów daje - 0,000032s czyli 31250 Hz 31250 / 100 =~310Hz Natomiast dioda Toggle Ledd1 zmienia się...
Kod poprawiony przedstawiam dla zainteresowanych. Wyszedł mi ładny serwer temperatur z obsługą po protokole UART z użyciem modułu USI procka ATTiny85. Śmiga jak ta lala. Zastanawiam się czy przejść na 12 bitową rozdzielczość ale nie wiem czy zyskam na dokładności. Jak to z tym jest Panowie? Może dodatkowo zaimplementuję protokół Modbus RTU w procku...
[syntax=c] #include "lpc11xx_syscon.h" #include "lpc11xx_gpio.h" #define OUT 1 #define IN 0 // a b c d e f g h i j k l m n o p r s t u w y z // _ _ _ _ _ _ _ _ _ //|_| |_ | _| |_ |_ | |_| | | |_ | | | _ _ |_| _ |_ |_ | | |_| _| //| | |_| |_ |_| |_ | |_| | | | _| | |_ | | | | |_| | | _| |_ |_| |_| _| |_ 1 2 3 4 5 6 7 8 9 0 char out[]={8,3,70,33,6,14,66,9,121,113,15,71...
Witam, Temat dotyczy uP, ale wrzucam go tu bo cały projekt w temacie grupy. Mam działający układ pomiaru odległości wyciągnięty z polaroida. Podłączony pod 8515 działa i mierzy odległość. Jedyny problem, że ciut mało precyzyjnie. Prawdopodobnie to wina softu dlatego proszę o podpowiedź. Która instrukcja bascom (avr) faktycznie uruchamia Timer? Czy samo...
.org 0x0000 rjmp Reset ;wektor przerwan od resetu .org 0x0016 rjmp Timer0 ;wektor przerwań od przepełnienia T0 .org 0x0012 rjmp Timer1 ;wektor przerwań od przepełnienia T1 Reset: ldi Temp, LOW(RAMEND) out SPL, Temp ldi Temp, HIGH(RAMEND) out SPH, Temp Spójrz jeszcze raz na wyżej wybrany fragment - widzisz błąd? Przypatrz się dobrze......
Nie bardzo wiem dlaczego wogóle to nie chce wykonać podprogramu po otrzymaniu na noge ICP1 czyli portb.0 opadajacego zbocza. Nic się nie dzieje, co robię nie tak? Mój program: $regfile = "m8def.DAT" $crystal = 8000000 $baud = 9600 Config Portc = Output Set Portc.2 Reset Portc.1 Reset Portc.0 Config Pinb.0 = Input Config Timer1 = Counter ,...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Za bardzo sie na tym nie znam tylko sobie przerabiam inne projekty na moje potrzeby. Chodzi mi tylko o to czy dobrze rozumiem te taktowanie procesora. no ale jak co to tu masz caly kod: $regfile = "m8def.dat" $crystal = 12000000 Config Lcd = 16 * 2 Config...
Witam, Czy da się jakoś magicznie zrobić, żeby licznik w trybie CTC nie kasował się przy dojściu do zadanej wartości, tylko liczył dalej sobie... Chodzi mi o to, ze zrobiłem na rejestrze przesuwnym taktowanym przez CTC sterowanie 8 serwami modelarskimi, a teraz chce jeszcze zrobić odczyt PPM 8 kanałów odbiornika (po kolejki przez multiplexer 74151)...
Mam problem z tym call i ret mam taki kod: ldi R16, 0x00 Co jest źle? W przypadku procesorów AVR zawsze na sam początek musisz ustawić stos w odpowiednim miejscu w pamięci programu. Praktycznie każdy program więc zaczyna się (dla atmega32) od rozkazów ustawiających stos. Za manualem str 45: Address Labels Code Comments $000 jmp RESET ; Reset Handler...
Niestety ale opcja wait nie nadaje sie do moich celów gdyż wtedy nie widzę co się dzieje z temperaturami, ciśnieniem układu. Wszystkie pomiary stoją. Cóż będę musiał poszukać podobnych programów i coś może wykombinuje. Dzięki za odpowiedzi! Bedziesz wie musial uzyc jeden z wolnych timerow. Ponizej masz przyklad zastosowanie timera 1 w trybie CTC. (z...
Do przeładowania Timer'a1 używaj: Int_timer1: Load Timer1 , 62500 [...] Return Mam jeszcze jedną regułę z przeszłości aby nie używać obsługi pamięci EEPROM w obsłudze przerwań (starsze wersje BASCOM'a przy rozbudowanych programach powodowały błędne działanie programu). Stosuję to do dziś dnia i nie mam zamiaru sprawdzać to w nowszych wersjach...
Witam Procesor przechodzi w stan Powerdown po ustalonym czasie kiedy zmienna L=1. Ustawiłem wybudzanie z przycisku (podanie 0 na int0) no i nie działa . Przepatrzyłem już chyba wszystkie tematy na forum i robiłem z milion kombinacji. Już nie mam pojęcia co robić czy to może być wina BASCOM, procesora , prosilbym o konkretne wskazówki jak ustawić aby...
Tymon możesz coś więcej wyjaśnić, bo coś nie mogę załapać :) Myślałem o czymś takim: others oraz record i jego różnymi typami. Trzeba konkretniej podawać, gdzie chcemy zrobić agregację. Wyjściem z tej sytuacji, jest stworzenie wspólnego rekordu z jednym typem (std_logic) i rozdzielenie funkcjonalności za pomocą nazw: uart0_send, timer0_up. Wtedy można...
timer1 winavr timer1 odlicza timer1 zlicza
bramy spawanie naprawa pilota peugeot blaze sterowniki
silnik zelmer schemat podłączenia connects2
Zanussi ZWF1026 - Pralka nie włącza się: Diagnostyka i możliwe przyczyny Jak wejść do BIOS-u w PlayStation Portable (PSP)?