Przepraszam że nie potrafię tego wyjaśnić ale to nie ja pisałem ten program. Mam taki kod:
Moyshaa, dzięki za link. Ostatecznie pisze, że ten kod działa ale drażni mnie to, że nie rozumiem w jaki sposób tutaj mierzony jest okres(od rising do rising) może dlatego, że komentarzy mało :( Kod proszę umieścić w znacznikach code! Robak
Witam. Robię sobie wyświetlacz widmowy do roweru. Wszystko jest na 89c2051. Zrobiłem już tak że mam synchronizację obrotu koła i napis zaczyna się zaraz po zrobieniu pełnego obrotu (zastosowałem hallotron w połączeniu z int0). Wszystko spoko tylko im szybciej się jedzie to napis bardziej się rozjeżdża. Wpadłem na pomysł żeby zależnie od czasu obrotu...
Wiem że atmega16 ma tryb CTC który próbowałem bezskutecznie włączyć. Kolega Zumek napisał że bascom ma w tym miejscu błąd i nawet po zastosowaniu jego wskazówek nie mogłem tego trybu uruchomić a było by to najlepsze rozwiązanie. Męczę się już z tym przebiegiem strasznie i nic mi nie wychodzi. Może ktoś by mi napisał gotowca do bascoma jak skonfigurować...
To jest fragment kodu, którego używałem , żęby zrobić obsługę licznik, ale nie działa w symulacji $sim $regfile = "m8def.dat" 'Informacja dla kompilatora. $crystal = 8000000 'Też dla kompilatora,zastosujemy kwarc zewnętrzny 10MHz. Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E =...
Witam wszystkich, Tak jak w temacie: Poszukuje sprawnego programu aby zrobić zegar LCD na ATMEGA8. Program musi być w języku bascom. Znalazłem coś takiego ale nie działa :/ Opoźnienie sekundy wynois jakies 4s 'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk...
Witam Chciałem zrobić zabezpieczenie przed rozładowaniem akumulatora ( 12V/65Ah ) zasilającego moje halogeny LED nad biurkiem. Woltomierz na PCF8591 działa ok, nawet dodanie warunku określającego reakcję na spadek poniżej ustawionego napięcia również ( chwilowo jest tam tranzystor FET sterujący paskiem LED ). Chciałbym, aby układ po osiągnięciu zbyt...
Witam. Dawno nie pisałem w BASCOM-ie a zdecydowałem się na niego bo myślałem, że tak będzie szybciej i prościej. Nic bardziej błędnego. Do napisania był dwu-trybowy program uśredniający do nieco przerobionego radiometru SOSNA. Ale nie w tym rzecz. O ile kod który zamieszczam powstał w miarę szybko o tyle błędu nie potrafię wyeliminować 3 dzień. Po krótce...program...
Zaprogramowalem procek. Oto spostrzezenia. Zegar odlicza poprawnie czas, ustawienia godziny dzialaja poprawnie. Wystapil natomiast problem z miganiem kropki oddzielajacej jednostki godizn od dziesiatek minut. Powinna ona zapalac sie na sekunde, a potem gasnac na sekunde. Jednak okazuje sie, ze w trakcie sekundy, w ktorej powinna sie swiecic, ona migocze....
pomyślałem że wykorzystam 2 przerwania, złączyłęm razem int0 i int1. jedno bedzie wykrywac opadajace zbocze a drugie rosnące. efektem miał być ciąg licz np "345,12,345,32,463,12" gdzie kazda liczba oznaczałą by długość kolejnego impulsu otrzymywanego z czujnika. napisałem kod: $regfile = "m16def.dat" $crystal = 16000000 Config Lcdpin = Pin...
Ok posiedziałem ciut, poczytałem w necie jak się używa te Timery i ich przepełnienia . Powstał taki oto kod .Proszę wyświetlacz traktować jako pomoc pokazującą mi ile już wystąpiło przepełnień, zresztą bardzo fajnie to pokazuje. Ramowa zasada jest taka - programik ma zliczać przepełnienia do 2108 i się zatrzymać po osiągnięciu tej sumy(wstępnie ta wartość...
Po wlaczeniu funkcji MUTE na calym wyswietlaczu zostaje wyswietlony tan napis kilkakrotnie. Czy mozna zmienic jakos kod programu aby ten napis byl wyswietlony tylko raz i na srodku?? Kod: $large Config Lcd = 16 * 2 Config Timer1 = Timer , Gate = Internal , Mode = 1 Config Sda = P3.1 Config Scl = P3.0 Dim Licz As Byte Dim I As Byte Dim Nast(5) As Byte...
Witam Przyszedł czas wolny więc zabrałem się za zgłębienie nauki Bascoma, celem było nauczenie się Tablic. Jako przykładowe i zarazem przydatne mi urządzenie chciałem złożyć regulator fazy z podwójnym wyświetlaczem siedmiosegmentowym LED. Schemat jako taki na razie nie powstał, wszystko jest na płytce stykowej. Udało mi się "ogarnąć" wyświetlacz, lecz...
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...
Mam mały problem chcę zrobić prosty miernik częstotliwości w bascomie do ok. 600KHz Warunek ma mierzyć z dokładnością 1Hz i niestety nie wychodzi mi to. Taimer 1 mam skonfigurowany jako taimer (Config Timer1 = Timer , Prescale = 8) taimer 0 skonfigurowany jako licznik (Config Timer0 = Counter , Edge = Falling ) z resztą zamieszczam fragment kodu [syntax=basic4gl]$regfile...
Witam Napisałem taki oto programik w bascomie, chce aby przerwanie bylo co 10ms. Mam jednak pewne zastrzeżenia do Bascom'u i nie jestem pewien czy w praktyce te 10ms bedzie dokładne ?? ile taktów zegara potrzeba na wpisanie wartosci dla timera oraz jego wystartowanie ?? gdzies wyczytalem ze 54 takty, ale nie jestem pewien tego. $crystal = 12000000 $large...
Witam Napisalem sobie program w Bascomie ktory liczy czas stanu niskiego na pinie INT0. Powiedzmy ze wszystko dziala wporzadku ale zastanawia mnie jedna rzecz. Ponizej przedstawiam kod programu. Atmege48 idzie na 8 MHz, czyli jeden takt zegara=125ns ?? Czas licze poprzez Timer1(16 bitowy), W przerwaniu od przepełnienia licznika Timer1 napisalem procedurke...
Mam pytanie odnośnie bascoma AVR i komendy RC5SEND. W pliku pomocy napisano, że komenda używa timera 1 i wyprowadzenia procesora. Do generowania komend należy podpiąć pod OC1A. Czy mogę użyć tego samego timera do generowania przerwań np. co 1 sekundę z przerwaniem, aby program wykonywał mi jakąś swoją procedurę czy muszę wykorzystać do tego celu timer...
Witam Do "kompletu" brakuje mi obsługi zegara DCF77. Tzn. uruchamiałem już wcześniej na Atmega8 i nie było problemów. Jednak przy tym układzie wykorzystuję Timer, przerwania - może konfiguracja jest zła ?. Timer0 - liczniki i flagi Timer1 - DCF77 Timer2 + INT0 - odbiór RC5 INT1 - przerwanie od PCF8574 Całość działa, do momentu podpięcia sygnału zegara...
A skąd wytrzasnąłeś te 46875 :?: Pisano o tym setki razy , ale powtórzę ;) przyklad w Bascomie: $Crystal = 4000000 Const T1_value = 65536 - ( _xtal / 64 / 4) ... Timer1 = T1_value Zważywszy , że Bascom generuje procedury przerwania ... powiedzmy nieciekawie , to proponuję zmodyfikować stałą T1_value do postaci Const T1_value = 65536 - ( _xtal...
$regfile = "attiny2313.dat" $crystal = 10000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2 'konfiguracja podłączenia LCD,na płytce testowej Config Lcd = 16 * 2 Config Timer1 = Counter , Edge = Falling , Noise Cancel = 1 , Prescale = 1 Config...
Trochę przerobiłem ten kod, nie wiem czy dobrze? A teraz jak podłączyć odbiornik , jedna nóżka do int0 a druga do plusa? $regfile = "m8def.dat" $crystal = 8000000 'określenie częstotliwości Config Portd = &B00000011 Portd = &B10000011 Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 ,...
Witam, Mam pewien problem z Rc5 w bascomie, chodzi mi o to, że instrukcje odpowiedzialne za rc5 są wykonywane tylko kilka razy a później, kaplica coś się zapycha:) i pilot nie działa. Cała sytuacja ma charakter nieliniowy tzn. że raz wykryje 3 naciśnięcia przycisku na pilocie a raz np. 5. Po zresetowaniu procka znowu RC5 działa przez parę cykli uP....
Hmm, moim zdaniem gdzieś jest zmienna 8 bitowa (Byte) musisz zmienić ją na większy typ. np. Word, Long. zmienna word Dodano po 1 A czy trzeba konfigurować port Config Pinb.0 = Input Set Portb.0 pod counter0 atmega 32 Dodano po 11 [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 8 $framesize = 24 Config Lcd = 16...
na każdym który napiszę jest tak samo, w nowym temacie powyżej podałem ustawienia fuse bitów, zaraz wkleję kawałek na którym teraz się bawię Dodano po 4 to kod na którym teraz się bawie '***************************************... '-------------------- konfiguracje ----------------------------------------... $regfile...
W takim razie program jest do bani! hmm jakoś nie ogarniam tego programu. Żadnych wcięć ... odstrasza to strasznie ;-) Bascom ma to do siebie, że kompiluje bez zająknięcia (nie zgłasza problemów), a potem się program buntuje bo kompilator syntax error nie wykrył. Ja bym proponował najpierw dać config port... dim a as .... timer... program... tutaj wszystkie...
problem mój polega na nieprawidłowym wyswietlaniu cyfr . o ile w zakresie 0-99 wszystko jest ok., to powyżej 100 ma same zera : wyswietlacz ma 3 cyfry led-7-segmentowe i w założeniach ma liczyć czas od 0 do 999 sek pełny kod: '$sim $regfile = "m8def.dat" 'informuje kompilator o pliku $crystal = 8000000 'informuje kompilator o Config Portd...
Nie jestem za biegły w timerach i się ciut pogubiłem. Proszę zatem o podpowiedzi. Próbuję ustalić ile czasu będzie trwał impuls podawany na INT procesora a jednocześnie zmierzyć czas od początku tego impulsu do początku następnego. Jednym uP podaję impulsy na drugi uP. Do Portc.7 = 0 'stan wysoki Waitms 1 Portc.7 = 1 'stan niski Wait 5 Loop Drugim uP...
Odbiornik RC5 działa. 1 na pilocie wyłącza diodę, 2 włącza $regfile = "attiny2313.dat" $crystal = 1000000 Config Rc5 = Pind.2 Config Pind.2 = Input Config Portb = Output Dim Address As Byte , Command As Byte Enable Interrupts Do Getrc5(address , Command) If Address = 0 Then Command = Command And &B01111111 Select Case Command Case...
Witam Ostatnio złożyłem z książki Marcina Wiązani-"Programowanie_mikrokontrolerow_... dwa układy zegarka i termometru. Próbowałem połączyć te dwa układ i napisałem taki program $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 ,...
Witam. Z definicji liczba instrukcji w obsłudze przerwania powinna być minimalna, by mogło się ono maksymalnie szybko wykonać. Tymczasem w przypadku mojego programu liczba instrukcji w obsłudze przerwania była stosunkowo duża. By wybrnąć z tego problemu zamierzam w przerwaniu ustawić flagę która oznacza, że przerwanie zostało wygenerowane, natomiast...
Witam wszystkich! Pewnie pomyślicie "znowu to samo", no ale zlitujcie się w Wigilię i przeczytajcie te kilka zdań :D Walczę z problemem od kilku dni. Nie potrafię skonfigurować Timera by konwertował dane z 1wire poza główną pętlą. Nie mogę sobie pozwolić na waitms, bo wtedy mam problemy z poruszaniem się w menu. Mam już działający Timer1 odliczający...
Witam, Projektuje sobie urządzenie które w zasadzie będzie zegarem, ale z kilkoma funkcjami. Chodzi mi o to że np. o godzinie 12 w południe chcę aby na jednym z pinów procesora pojawił się stan wysoki do np. godziny 13. Zegar programowo jest ok, odlicza czas, wszystko jest na LCD, nie wiem tylko jak zrealizować te ustawiane godziny. Prosiłbym żeby mnie...
Pin konfigurowany jest na początku, przed konfiguracją SPI. Dodano po 2 I jeszcze tradycyjne pytanie - chciałem mieć więcej wyjść Zrobiłem tak: [syntax=basic4gl] If Mid(tempstring2 , 6 , 6) = "LED1ON" Then Reset Led1 End If If Mid(tempstring2 , 6 , 7) = "LED1OFF" Then Set Led1 End If If Mid(tempstring2 , 6 , 6) = "LED2ON" Then Reset Led2 End If If Mid(tempstring2...
Jak wylaczy sie przerwania to funkcja getkey dziala poprawnie, z przerwaniami nie wprowadza do zmiennej nowej wartosci. WHY? $regfile = "m128def.dat" $crystal = 14745600 $baud = 19200 Config Timer1 = Timer , Prescale = 64 Enable Interrupts Enable Timer1 On Timer1 Sectic 'co 1 sek Config Lcd = 16 * 2 Config Lcdmode = Port Config Lcdbus = 4 Config Lcdpin...
Przede wszystkim start timer powinno być po wszelkich konfiguracjach i deklaracjach, np.: config.... Load Timer1 , 50 On Timer1 Obsluga Enable Timer1 Enable Interrupts Start Timer1 Do . . Loop obsluga: . . Return
Zrobiłem sobie propeller clock na i działa prawie dobrze :) Problem w tym że co jakieś 50 obrotów zegarek przestaje działać na kolejne 50 obrotów. Wiąże się to z funkcją zliczania czasu obrotu i przeliczanie na 60 pozycji na tarczy zegara. Stop Timer1 Timer1 = 0 Start Timer1 Incr Y If Y = 50 Then X = Capture1 X = X / 60 Y = 0 End If Compare1a = X Pozycja...
witam INT0przerwanie zewnętrzne końcówka INT0 INT1przerwanie zewnętrzne końcówka INT1 TIMER0przerwanie przepełnienia licznika TIMER0 TIMER1przerwanie przepełnienia licznika TIMER1 Gdy używane są przerwania INT0 lub INT1, można określić warunek zgłoszenia tego przerwania. Należy w tym celu użyć instrukcji SET / RESET i ustawić odpowiednie bity w rejestrze...
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 Piszę program (bascom) i nadziałem się na problem z którym nie mogę sobie poradzić. Timer 1 pracuje jako zegar i po spełnieniu warunku , ma załączyć przekaźnik który ma być załączony na czas_pracy i po odliczeniu czasu pracy ma wyłączyć się na czas przerwy i zablokować włączenia przekaźnika na ten czas. Tak w skrócie: kod : $regfile = "m8def.DAT"...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
Witam W ramach dalszego eksperymentowania z AVR i Bascom popełniłem połączenie odczytu z DS18B20 z sterowaniem wyjściem uC ( przez tranzystor FET ) + dodatkową atrakcję - buzer, który sygnalizuje wł/wył tranzystora/wyjścia. Chciałem dodać możliwość zmiany temp max i min, przez proste menu. Menu zrobiłem w oparciu inny mój kod obsługujący ustawianie...
[syntax=basic4gl] $regfile = "M32def.dat" $crystal = 16000000 '************************* WYSWIETLANIE-porty ********************************** Lcd_port_ddr0 Alias Ddrb Lcd_port1 Alias Portb Lcd_port_ddr1 Alias Ddrb Lcd_rs Alias Portb.lcd_rs_number Lcd_reset Alias Portb.lcd_reset_number Lcd_cs Alias Portb.lcd_cs_number Lcd_sck Alias Portb.lcd_sck_number...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
Witam. 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. Napisałem coś takiego (oczywiście to część z większego projektu) '$sim $regfile = "m8def.dat" 'informuje kompilator o...
Witam. Ostatnio zainteresował mnie pomiar natężenia światła, potrzebuję go do wykonania projektu. Pomiar dokonuje czujnikiem TSL235R, który podaje mi odpowiedź w formie częstotliwości. Chciałbym aby ktoś przyjrzał się temu co narazie wklepałem do kompilatora, bo nie jestem pewien, czy wszystko będzie grało? Może zacznę od kodu, wtedy zadam pytania itp....
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...
Po całym dniu walki słabo opisałem mój problem bo już po prostu nie miałem siły :D Wyjaśniam... Zrobiłem sobie mikro serwerek LANowy na Atmedze32 i układzie ENC28J60. Z doświadczenia z tym układem i Atmegą wiem że znacznie stabilniej wszystko pracuje gdy mikroporocesor (Atmega) jest taktowana zegarem 25MHz z gotowego modułu ENC a nie własnym kwarcem....
Po kilku dniach pracy urządzania stwierdziłem że jednak przydało by się żeby serwerek dodatkowo wysyłał dane do "" chociaż z termometru domowego. Próbowałem na rożne sposoby ale nie mam pojęcia jak to zrobić. Może ktoś z Was jest w stanie zmodyfikować kod ? Może kolega (at)bart-projects czyta ten temat? ;) (to ten sam kod co w załączniku) [syntax=vbnet]...
Nie do końca wiem dlaczego tak się dzieje ale jeśli bardzo zależy Ci na równych odstępach czasowych między krokami silnika to na czas wykonywania przerwania Timer0 powinieneś wyłączać system przerwań: na początku Disable, zaś na końcu przerwania od Timer'a0: Enable Timer1. Rano posiedzę nad Tym... pozdrawiam
Jeśli pomiędzy przerwaniem od timera a wpisaniem do niego nowej wartości upływa zbyt "długi" czas to może się okazać, że timer zgłosił przerwanie w międzyczasie, które zostanie uwzględnione jeśli zapiszemy Timer1 = Timer1+wartość, a utracone jeśli zastosujemy Timer1 = wartość.
No ZbeeGin na pewno wiesz że też można. Kolega chce bez dodatków, zatem nie mozna. Przy taktowaniu 8MHz i preskalerze 1024 licznik zliczy max 32,7680ms. A to o wiele za mało by mieć 1000ms. Nawet z domyślnym taktowaniem 1MHz, czas 1s jest nieosiągalny dla licznika Timer0. zastanawia mnie czemu Timer1 = Timer1 + 3044, a nie Timer1 = 3044? Bo zanim przerwanie...
Dobry będzie taki program? Można coś jeszcze poprawić? Może lepiej byłoby ustawić jakieś wyższe prescale w timerze np.8, żeby mniej tych impulsów zliczał (można by wtedy operować na mniejszych liczbach, program działałby na pewno szybciej - ale czy mierzyłby równie dokładnie?) Na pewno na elektrodzie był już poruszany temat obrotomierzy, ale szukajka...
Witam W jaki sposób mogę skonfigurowac atmegę 8 aby odbiór rc5 zrealizować na timerze1.Ta timerze 0 mam odliczanie sekund oczywiście wprzerwaniu.Mam skonfigurowane tak: Config Int1 = Low Level , [timer = 1] Config Rc5 = Pind.3 [timer = 1] Enable Int1 Enable Interrupts On Int1 Rc5 Config Timer0 = Timer , Prescale = 1024 Enable Interrupts...
Napisałem coś takiego. Czy to ma sens? Po pojawieniu się pierwszego zbocza opadającego na Int1 powinno uruchomić Timer1 i po podaniu drugiego zbocza opadającego na wyświetlaczu powinno pokazać wartość Timer1. W symulacji pokazuje na lcd cały czas zero. Gdzie jest problem? Na razie chcę mierzyć tylko czas między przerwaniami $regfile = "m8def.dat"...
Witam ! Obliczenia źle oraz pewnie źle ustawione fusebity (pewnie default - 1Mhz internal rc). Instrukcja Load jako parametr ma po ilu impulsach ma wystąpić przerwanie, więc powinno być 625, ale że pojedyńcza połówka przebiegu sieci trwa nie 20ms a tylko 10ms więc powinno być 312,5 :D. Więc lepiej chyba prescale = 64 i load timer1, 1250. Pozdrawiam...
Rezystory są już dane na płytce, zresztą zegar na PCF działa bez zarzutu ( no może trochę śpieszy, ale to kwestia kondensatora przy kwarcu ) sprawdziłem połączenia - nóżki 5 czyli SDA ( 24C02 i PCF8583 ) są podłączone do 23 nogi uC, czyli PC1-SDA. Podobnie z SCL. Teraz zrobiłem tak, że odczyt jest po włączeniu/resecie ( przed pętlą główna ), a zapis...
Witam napisałem prosty kalkulator w c++, obliczający przerwania dla zaokrąglonych czasów, Mi się przydał do zegarka i stopera może i Wam się przyda Program napisany pod Linux, skompilowana wersja na Windowsie nie działa Pozdrawiam Brak zdjęć, proszę to poprawić, regulamin wewnętrzny pkt. 2 (joy_pl)
O co mi dokładnie chodzi: W helpie Bascom jest napisane, że w przypadku kości 8535 mam do dyspozycji preskalery 1, 8, 32, 64, 128, 256, 1024, a dla kości M103 1, 8, 32, 64, 256, 1024. Ja zaś posiadam kość M32 i w PDF, który dotyczy tego mikrokontrolera jest tabelka na 127 stronie, która zawiera w sobie jakby wykaz dostepnych częstotliwości, ktorymi...
1. Mam podciągnięte porty wejściowe do masy 2. JTAG jest wyłączony, przy włączonym JTAG dioda świeciła ciągle 3. Bo taką mam płytkę, wcześniejszy błąd przy projektowaniu 4. Myślałem że bezpośrednio nie mogę Poprawiłem wszystko o czym pisałeś i nadal jest ten sam błąd Dodano po 22 Podłączyłem diodę pod PIND.5 i poprawiłem program i nadal to samo. Wydaje...
Dorzucam wspomnianą konfiguracje timera1. [syntax=basic4gl] Config Timer1 = Timer , Prescale = 64 On Timer1 Odmierzanie_czasu 'na rezonatorze 11059200 Hz Timer1 = 48256 'przerwanie wywolywane co 100 ms 10razy na sekunde Start Timer1 Enable Timer1 On Urxc Odbieranie_rs: 'odbieranie znakow z UARTA Enable Urxc On Utxc Wysylanie_rs: 'wysylanie znakow z...
Witam. Mam panowie taki problem. Coś mi nie pasowało z czasem odliczanym przez atmege w przerwaniu timer1 [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Timer1 = Timer , Prescale = 1024 On Timer1 Czas1us Enable Interrupts Load Timer1 = 15625 Enable Timer1 Dim Zmienna As Double Do Loop End Czas1us: Print "###" Load Timer1...
Trochę Ci tu posprzątałem :P Zobacz, że wysyłka do MAX`a to teraz tylko 7 linijek :P TIMER1 = TIMER1 + 1999 Nie pasuje mi to nijak do 2ms W kalkulatorze, owszem, dla wartości czasu 2ms, przy 8MHz i preskalerze 8 występuje wartość 1999, ale tyczy się ona CTC W największym uproszczeniu wartości takie (obliczone dla CTC) Timer musi od zera odliczyć i kiedy...
Witam Chciałem nauczyć się regulacji fazowej i popełniłem taki układ na podstawie tego co wyczytałem w internecie 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 portu COM $baud = 38400 Dim X As Word Config Portd.5 = Output...
Witam, pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328. Najpierw konfiguruję go tak: [syntax=vbnet]Config Timer1 = Timer , Prescale = 64 'Kwarc 18.43MHz, 1/18430000 * 64 = 3.473us Enable Timer1 On Timer1 Impulsuj 'ISR[/syntax] a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny: [syntax=vbnet]'---------------------ISR....
Witam, może i temat wyczerpany ale może coś dorzuce od siebie. Ostatnio tez tobiełem ot taki zegarek i napotkalem na te same problemy z BASCOM'em dokładność udało mi się zwiększyć zastepując komende "LOAD TIMERx" asemblerowymi "mov" Przykład zamieszczam poniżej może się komus przyda. (kwarc 12MHz) Dim Sekundy As Byte , Minuty As Byte , Godziny As Byte...
Witam, steruję triakiem silnik jednofazowy. Zastanawiam się czy można sterować triakiem od timera1, ale sprzętowo go przeładowując detektorem zera. Chodzi mi o to aby nie realizować przerwania od przejścia przez zero w programie i programowo przeładować timer, ale potrafić go puścić w trybie automatycznego reloadu od detektora, a tylko uaktualniać wartość...
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...
Zmieniłem na PORTB.0 ale to nic nie pomogło nawet zmieniałem na timer1 ale również porażka może ktoś ma jakieś inne propozycje a co jest ciekawe kumpel przesłał mi kod w C i tam działało przerwanie od timer0 i było ok na moim uP
Korzystając z książki Pana Wiązani i Help-a po polsku dla Basc-oma składnia obsługi jest taka sama jak wyżej. Zresztą operowałem przerwaniem, ale od Timer1 i to właśnie tak działało. . . Czytałem w internecie o kłopocie z tymi przerwaniami, ale nijak nie doczytałem się rozwiązania... kto tutaj z kolegów zna ten problem i posiada rozwiązanie..?. Czy...
Przyłącze się do pytania Wykożystuję Timer1 i przerwanie występuje co 0,2s i program wykonywany podczas tego przerwania trwa ok 0,12s. Jeśli w programie zawieram, że po przyciśnięciu klawisza ma być dźwięk (Sound Portb.0 , 200 , 1000 ), to przerywany jest dźwięk Timerem1. Jak powinienem to zrobić , ale proszę o wytłumaczenie laikowi, bo wiedzę mam naprawdę...
Witam Zauważyłem, że w momencie wyłączania komputera z podpięty zestawem EVB następuje reset pracującego układu. Używam do zasilania i komunikowania wbudowanego na płycie EVB konwertera RS232/USB na FT232RL. Czy jest może wina zastosowania tego układu jako konwertera ? Może braku układu typu MAX232 ( FT232 jest na stałe podpięty bezpośrednio do pinów...
Rozumiem. A teraz mam małą zagwozdkę: 1. Wysyłam żądanie konwersji. 2. Startuje timer1 generując przerwanie co ok. 2 sekundy. 3. Skok do obsługi przerwania, a w niej żadanie odczytu 1wire i pobranie dwóch bajtów danych. 4. Powrót do programu głównego. 5. W programie dokonuję niezbędnych przeliczeń i operacji na zmiennych. Dobrze kombinuję, czy nie bardzo?...
Potem calosc zestroilbym dodajac nopy i ewentualnie korygujac minimalnie timer Jak czas odmierza timer, to nop nie nadadzą się jako coś do korekcji częstotliwości.[/quote] Nie chodzi mi o korygowanie chwili wystapienia przerwania,lecz o dokladny moment zmiany stanu portu w procedurze obslugi przerwania.
... i tej wersji będę się trzymał wysoki sądzie ;-) I bardzo dobrze :-P Zadeklarowałeś przerwanie od porównania, a włączyłeś od przepełnienia więc Ci nie działa. Włącz właściwe przerwanie i będzie git. Rozumiem, że zmieniam etykietę przy "ON cośtam skocz_do_obsługi", więc ostatecznie na pałę sprawdziłem wszystkie etykiety z helpa : OC2 , OVF2, ICP1,...
Procesor Ci nie zwalnia na pewno - chodzi tak jak chodził. Masz pewnie zle napisaną procedurę przerwania, w której jest cos blokującego, lub jakies delaye np. ponieważ nic nie pokazałes - wiecej nic Ci nikt nie pomoze bez kodu
1. pokaż schemat i ewentualnie kod. 2. zobacz czy nie masz podłączonych pinów gdzieś, gdzie możesz mieć załączone timer0 lub timer1 (PWM) ,przerwania. miałem podobny problem ze sterownikiem KSO108. piny OC1A, OC1B, INT... (mimo ich zadeklarowania jako wyjścia dla LCD mogą robić zupełnie coś innego) zamień chwilowo na inne. 3. bez schematu dalsze zgadywanie...
Tak wiem, tylko nie wiem jak to napisać w kodzie:) Na razie używam timer1 jako przerwanie do programowego pwm, to dziala, teraz pracuje nad ulepszeniem kodu bez wait, jeżeli możesz pomóc to skróciło by to moje męki w pisaniu nieprawidłowych komend. Żeby dobrze sie zrozumieć, chciałbym napisać coś w stylu Set port(zmienna)=L1,L2,L3.... nie if(zmiennna=100)...
Witam. Potrzebuję odczytać kod RC5 z wyprowadzenia INT1 (PD3) Atmega8. Tymczasem w znanym Bardzo ważna uwaga: polecenie GETRC5 jest "fabrycznie" przypisane do wejścia INT0 procesora i NIE MOŻE współpracować z jakimkolwiek innym wejściem, nawet jeżeli jest to wejście przerwania sprzętowego. Dekoder podczerwieni TFMS lub SFH MUSI być dołączony do nóżki...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Witam ponownie. Do generacji przerwania, w czasie którego obliczana jest liczba pseudolosowa, wykorzystałem tym razem Timer1 - przerwanie wywoływane jest co około 0,5s. $regfile = "8535def.dat" $crystal = 8000000 $baud = 9600 Config Timer1 = Timer , Prescale = 64 Dim Losowa_waga As Integer On Timer1 Przerwanie_wagi Enable Interrupts : Enable Timer1...
Mam taki problem, że zrobiłem projekt Odbiornika Morsa na ATmedze8. W oryginalnym projekcie jest kwarc 10 MHz, a ja użyłem 10.240 MHz gdyż taki miałem w domu, a sklepu elektronicznego w mojej okolicy nie ma. Jak podłącze ten odbiornik do komputera i z programu morsik coś wysyłam to np. "adrian" dekoduje poprawnie, a "jarek" już nie, tylko na LCD pojawia...
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
Dzięki za zainteresowanie tematem. Rzeczywiście mogłem lepiej opisać problem na samym początku. Już naprawiam błąd. System wygląda w ten sposób, że Atmega128 taktowana sygnałem o częstotliwości 14.745600 MHz (F_CPU = 14745600) podłączona jest bezpośrednio do 3 osiowego drivera silników krokowych TB6560. Konkretnie mówiąc pin 3 portu D podłączony jest...
tak, można mierzyć długości półbitów ale zauważ że wtedy wstrzymuję główny program na czas odbioru całej ramki. Ale jest rozwiązanie, pobieram dane co pół bitu a nie co cały. Wtedy gdy otrzymam np 01 to mam 1, 10 to mam 0, a gdy dostanę 11 lub 00 to znaczy że bit jest błędny. Przerwanie Timer0 muszę więc wykonać 2x częściej, ale mam dokładniejszy odbiór...
Rozumiem Twoją ideę, ale nie za bardzo wiem jak ją zaimplementować w Bascomie. Na razie mam coś takiego: Nie wiem czy coś takiego się sprawdzi przy większej prędkości pracy i transmisji radiowej, czy tam nie będzie zbyt dużych rozbieżności w czasie trwania? Co do Twojego pomysłu spróbuje coś jutro, ale chciałbym, żebyś rozważył mój pomysł, i napisał...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
smalski->O priorytecie przerwań w AVR-ach , można powiedziec tak , że im niższy(mniejszy) adres wektora , tym wyższy priorytet posiada dane przerwanie. Celetron-> Żeby zablokować wszystkie przerwania na czas wykonywania przerwania od np.T1 trzeba postąpić jak poniżej: On Timer1 EtykietaT1 , NOSAVE ... EtykietaT1: Disable Interrupts 'co kompilator...
Witam , mam kawalek kodu i zauwazylem , ze w symulatorze programu nie wykonuje mi przerwania na timer1 , timer0 dziala bardzo dobrze i symulator go symuluje . Oto programik $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output Config Portd = &B1111000 Dim Adres As Word , Adh As Byte , Adl As Byte , T1pom As Byte Dim I As Byte , T As Byte...
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...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Witam. W pewnym sofcie dla Atmega16 wykorzystałem już: - Timer1 (16 bit) do odliczania 0,0001s odcinków czasu - Timer2 (8 bit) jest wykorzystywany przez odbiornik podczerwieni (instrukcja getrc5) Timer 0 niby jest wolny, ale nie wiem / nie jestem pewien czy nie jest on wykorzystywany przez jakieś używane przeze mnie instrukcje (np. print dla sprzętowego...
Problem w pewien sposob rozwiazany, moze komus sie przyda Dodano linie: $initmicro ........ _init_micro: Config Watchdog = 1024 Start Watchdog Return W tej postaci watchdog poprawnie resetuje uP: $crystal = 7372800 $regfile = "m168def.dat" $initmicro Config Aci = Off Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3...
A ja dzisiaj nie byłem w pracy. Wziąłem zaległy urlop z 2007r. I oto co zrobiłem 'program do pomiaru czasu wciśnięcia przycisku podpiętego do PD.2(INT0) i PD.3(INT1) przez układ RC tłumiący drgania przycisku. 'Przy tych ustawieniach Timer1 zwiększa się co 128us a licznik przepełnia się co 8.389s 'Program sprawdzony i działa. 'W celu...
Witam. Nadmieniam, że czytałem już kilka wątków i stosowałem metody rozwiązania problemu, jednak nie pomogło mi to;/ Do rzeczy - buduję samochodzik zabawkę, sterowany pilotem w kodzie RC5. NIestety bezskutecznie. Odbiornik podczerwieni - tsop1736, zasilanie podpięte przez szeregowy rezystor 220omów i kondensator 100u. W pierwotnej wersji, wyjście odbiornika...
Walczę i walczę z tym programem ale nie daje rady.... :cry: Wrzucam cały kod, jest on zrobiony na bazie jak wspomniałem wcześniej: Projekt powiadomienia o alarmie by Xury wersja 2.0 [syntax=basic4gl] '***************************************... 'Projekt powiadomienia o alarmie by Xury wersja 2.0 'Działanie na przerwaniach...
witam Nie znam sie dobrze na programowaniu w bascom a chcialem zbudowac sterownik do pieca co, w EDW byl taki projekt i zbudowalem uklad ale temperature pokazuje z 3 czujnikow a jest mozliwosc podlaczenia 4 Mozecie mi pomoc i powiedziec co trzeba zmienic w programie aby sterownik pokazywal temp. z 4 czujnikow? Zalaczam listing. 'czerwiec 2002 'sterownik...
"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.
Chciałem zrobiś prosty porogramik na procku attiny2313 który przy uruchomionym timerze tc/1 co sekunde przechodziłby do innej etykiety. napisałem następujący program : Config Portd = Output Config Portb = Output Portd = 0 Portb = 0 Config Timer1 = Timer , Prescale = 64 Enable Interrupts Enable Timer1 On Timer1 Nxtd Nosave Dim A As Bit Dim B As Integer...
Witam mam przed sobą kod w Bascomie, komputera samochodowego, liczacego spalanie itd...Nie rozumiem jednego fragmentu: Poczatek: Timer1 = 0 Start Timer1 Do If Pind.5 = 0 Then Incr Impw ' PinD.5 = nóżka T1(11) Loop Until Timer1 = 15067 Stop Timer1 Impw - impulsy wtryskiwacza Jak sie domyslam kod ten ma liczyc czas trwania kiedy wlaczony jest...
Mam pewien problem, mianowicie zrobiłem sobie komputer do samochodu, liczy mi spalanie, predkosc, przejechany dystans, na ile starczy jeszcze paliwa, spalanie chwilowe temp i jeszcze pare innych rzeczy. I mam 2 problemy: 1 - kiedy włącze światła wszystko sie zawiesza....(musze odpalac auto z włączonymi swiatłami wtedy komp się uruchamia bez problemu)...
Spróbuj tak: Założenia: 1. Obroty silnika 1500/min. czyli 25/s. czyli jeden obrót=40ms 2. Wyświetlanie trwa na 90° wycinku koła czyli 10ms 3. Obszar wyświetlania podzielony na 10 stref, każda 1ms 4. Kwarc 16MHz Wtedy konfigurujesz Config Timer1 = Timer , Prescale = 1 i natychmiast go zatrzymujesz: Stop Timer1 W przerwaniu od Int0 tylko go uruchamiasz...
Naucz się przerwań. Wykorzystaj Timer0 do generowania przerwania co np. 1s- jeśli ten czas Ci wystarczy. Czyli ustaw Timer0 jako timer. Ustaw Timer1 jako counter i zliczaj impulsy co 1s. W przerwaniu co 1s od Timer0 niech Timer1 zaczyna zliczać impulsy. I co 1s wyświetl liczbę impulsów i wyzeruj Timer1. I od początku. Całą koncepcję powinieneś zmienić.
Witam. Próbuję napisać program odpowiedzialny za pomiar odcinków czasowych pomiędzy impulsami sygnału S1 i S2 (zgodnie z załącznikiem). Proszę o prześledzenie kodu, wszelkie uwagi i sugestie mile widziane. Nie mam pewności co do poprawności pobierania wartości licznika TIMER1 za pomocą TCNT1. 'program do pomiaru okresu sygnałów podpiętych do PD.2(INT0)...
Kod znajomy, prawda :) ad.1. zrobiłem bez podprogramu ale i tak nie do końca działa jak chcę. Jak zrobiłem podprogram to sypało mi się przy Do bo program wracał do jednej nadrzędnej pętli i się zapętlał. Chciałbym to zrobić jakoś poprawnie składniowo. [syntax=basic4gl] '---------------------------------------... ' 20...
Witam, męczę się z tym drugi dzień i dalej nic - może któryś z bardziej doświadczonych Kolegów będzie w stanie pomóc. Program ma mierzyć czas przelotu pocisku między 2 bramkami (z fototranzystorami), a następnie wyliczyć z tego prędkość (znana odległość 10 cm między nimi). Korzystam z przerwań INT0 (start) i INT1 (stop) oraz licznika Timer1. Uc jak...
Okay. Przeniosłem to usypianie do głównej pętli. Nic by to jednak nie dało gdybym nie napisał o co w tym chodzi. Te GOTO to przemilczę bo to inny temat. Miałeś tam też poplątane zakończenia Subów. To znaczy, że w jednym Sub miałeś jeszcze kilka innych i każdy z nich miał Return a pod uwagę brany jest pierwszy return --eh :D Żeby się nie zakręcić więc...
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...
Nie piszesz nic o pozostałych parametrach układu więc zakaładam, że uC chodzi na wewnętrznym RC=8MHz... Wygodnie jest wykorzystać timer1 (16-bit)... Mode 14 - fast pwm, wartość top (ICR1=10000), prescal=1... Przy takiej konfiguracji częstotliwość pwm wynosi ~800Hz, co dla żarówki jest aż nadto... Wyjście pwm PB1(OC1A)... Wypełnienie zwiększane o 1 co...
Witam Piszę na atmedze8 w bascomie program do odczytywania danych z odbiornika GPS. GPS jest podłączony RSem do Atmegi, obsługuje go sprzętowy UART. Transmisja jest realizowana z prędkością 4800, megę taktuje zewnętrzny kwarc 7,3728 Mhz (ale na wewnętrzym 4 Mhz też próbowałem). Oto kod obcięty o parę chwilowo nieistotnych rzeczy (definicje zmiennych,...
Wykonalne i niespacjalnie wymagajce ;) Ja bym do tego wykorzsytal timer1, poczytaj w datasheecie tam o timerach i sprzetowych pwmach. Wykorzystujac dwa kanaly jednego timera mozesz ustawic przesuniecie w fazie, tylko jak przesuniecie bedziesz mial polowe okresu to wypelnienie bedzie moglo byc maks 50%. Ale to tak na szybko co mi do glowy przychodzi....
Co do odświeżania masz gotowy kawałek w moim drugim poście. Po co sprawdzanie stanu przycisku co 4 ms? Jak chcesz pomiar temperatury co 1s, to dorzucasz odpowiednio skonfigurowane przerwanie z timer1. Zczytywanie co 100ms masz przecież zrobione flagą chyba że nie działa. co do przyciska masz w moim pierwszym poście. Jeżeli coś jest nie zrozumiałe to...
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem polecenia (za długie przerwania?) 2) Aktywowanie...
Nie lepiej wykorzystać przerwanie ICP1 timer1. Tam przepisywać zapamiętaną wartość timer1 (timer1 w konfiguracji timera zmienna = capture1), i przeliczać na prędkość, znamy przecież drogę (odległość między magnesami) a potrzebujemy tylko czas pomiędzy kolejnymi przerwaniami wywołanymi tymi magnesami. Po co zliczać ilość impulsów (drogi) w danym czasie...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz 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 '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Należy "podpisać" przesyłane zmienne tak by mikrokontroler jednoznacznie wiedział z którą ze swoich zmiennych skojarzyć ma przesłaną wartość i w niej ją zapisać. Wiele urządzeń ma swoje własne sekwencje bajtów po których własnie mikrokontroler jest w stanie określić co nadeszło. Takie sekwencje nazywają się "ramką". Na przykład System NMEA 0183 z odbiorników...
Podmień jeszcze procedurę obsługi przerwania. Tak jak na filmie dopisz "Nosave" po "Timer1_isr" w linii konfiguracji Timera i podmień te procedurę na taką: Na wszelki wypadek poniżej cały kod z filmu. [syntax=vbnet]$regfile = "m128def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 Disable Jtag 'timer Config Timer1 = Timer , Prescale...
Witam Proszę o pomoc/wskazówkę co z tym programem jest nie tak? Na co dzień nie zajmuję się programowaniem, lecz czasem (4 programy przez 6lat :-) ) potrzebuje stworzyć jakieś ustrojstwo działające na moich warunkach. Bascoma uczę się po trochę w miarę potrzeb. Wydawało mi się że na DSy mam już "regułkę" . Teraz już wiem że mam, ale tylko na 8szt. Dlaczego...
W twoim programie wg BASCOM-AVR są błędy: Error : 254 Line : 17 Variable expected Przepraszam za pomyłkę. W BASCOM-AVR, do przerwań od timera, powinniśmy użyć 'TIMER1_OVF' zamiast 'TIMER1 OVERFLOW'. Podobna sytuacja jest z przerwaniem od INT0, powinniśmy użyć 'INT0_ISR'. Najpierw musimy skonfigurować Timer1 i INT0, następnie włączyć przerwania. Kiedy...
Witam, Wiem, sprawa nie jest skomplikowana...ale już się "zamotałem" - jak to jest z tym stosem w Bascomie - dla Atmegi8 te pokazywane wartości wydają mi się dość dziwne. Ustawienia kompilatora: $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize...
Wgrałem to do siebie i jak dioda nie świeciła tak nie świeci. Tak jakby nie było przerwania od compare1a. Ale obeszłem się inaczej. Compare1a pracuje mi normalnie razem z icp1 gdy timer1 = timer, i tak to zostawie. A cała idea jest taka: Timer1 dostaje przerwanie od icp1 i zaczyna liczyc czas do nastepnego przerwania. I tak co 50 obrotów.I to jest czas...
Witam chcę zrobić lampke rgb sterowaną na pilota rc5, jednak napotykam pewien problem: kod programu $regfile = "m16def.dat" $crystal = 8000000 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Down , Prescale = 1 Pwm1a = 0 Pwm1b...
Schemat podłączenia. A ten żółty przewód to zwiera do masy? Kręcisz wentylatorami ręka czy normalnie podłączasz je do zasilania? Dodano po 5 Acha. Przerwanie jest wywoływane za często. U mnie to działa. Ale wymaga wielu kHz na wejściach. Zmień Prescale na 1024 a jeszcze lepiej Timer na Timer1.
Witam! Musisz wykorzystać wewnętrzny timer. W momencie gdy ulegnie przepełnieniu to zostanie wygenerowany sygnał przerwania i wtedy..... ....i wtedy zaczac naliczac te przerwania (przepelniena) do dodatkowej zmiennej, a po osiagnieciu wartosci tej zmiennej rachunkowo rownowaznej 5 min wtedy... ..... i wtedy uruchomiony zostanie podprogram do zmiany...
Witam! Zaczynam własnie przygodę z praktyczną elektroniką. Mam za zadanie zrobić obrotomierz (do silnika emax-a ; 10 000 rpm). W programie stosuje timer1=timer (zrobiłem też jako counter, ale musze też sprawdzić jak będzie sprawował się układ z timerem1 jako zegar). Chodzi o to, że układ ma pracować na modelu samolotu i mierzyć dynamiczne zmiany prędkości...
To co piszesz jest słuszne i mądre, widzisz, jest tylko jeden problem - soft jest skomplikowany bardziej niż by się wydawało, atmega8 ma tylko 8kb flash a wszystkie przerwania Atmega8 są zajęte (w tym timer1 do zliczania pojedynczych sekund, int1 i timer2 wykorzystywany przez getrc5). Oczywiście zawsze można skonfigurować bufor wejściowy, np. gdy spodziewamy...
Nie używałem "Noise Cancel" więc nie wiem czy ma wpływ - ale usuń Timer1 = 54477 W bascomie single może płatać figle zamień na typ LONG ( profilaktycznie ) Częstotliwość = 1000000/Licznik Dla 1 Hz powinieneś otrzymać wynik 1000 Wprowadź zmienną Policzone typu bit. w pętli głównej Do policzone = 0 wait 2 f= 1000000 / f lcd f loop w przerwaniu Licz: if...
Wziąłem sobie Wasze uwagi do serca, choć nie wiem, czy dobrze je zrozumiałem. Kod wygląda teraz tak: Xury , do mnie trochę jak do dziecka, ale zapewne chodzi Ci o błąd w postaci zapętlenia podprogramów? Po dokonaniu w/w zmian, objętość kodu wzrosła o około 30%, rozumiem już, co miałeś na myśli pod pojęciem "redukcji kodu wynikowego". Teraz już nie wiem,...
Naskrobałem coś taskiego, po przeczytaniu bloga Mirekk36: Dodano po 3 Zapomniałem dodać, że to nie jest pełen program, bo on dopiero powstaje. Dodano po 3 w komentarzu programu jest bład: ddra = &B00001111 ' ma być input!
Witam. Chciałbym sobie wykonać zegar z tego tematu [url=]LINK ale chciałbym dodać do tego zegar RTC. Myślałem żeby użyć DS1307 lub PCF8583, do obsługi tego drugiego znalazłem taki oto fragment kodu: [syntax=basic4gl]Config Sda = P3.5 'konfiguracja linii SDA magistrali I2C Config Scl = P3.7 'konfiguracja linii SCL magistrali I2C Dim M As Byte 'deklaracja...
Witam, Odebrałem ostatnio silnik krokowy i sterownik takie jak w poniższych linkach. Do poprawnego sterowania potrzebna jest wiedza o ilości kroków na obrót oraz czas co jaki podawany ma być sygnał na złącze PUL. Kiedy pisałem program w bascomie i podawałem sygnał toggle na dowolny pin z określonym czasem dla 1 obr/min 0.03s a dla 500 obr/min 0.00006....
Działanie Timerów jest opisane na forum. W pdf poniżej są przedstawione dwa przykłady na Timer0 i Timer1. Attiny ma również takie wbudowane. Jak jest w przykładzie możesz zwiększać sobie daną liczbę w przerwaniu, a następnie ją sprawdzać w programie głównym "do...loop". Warunkami "If...then" określić przy jakich wartościach wyjście ma się załączyć,...
To jest proste jak świński ogon :D ahahahaha, ale napisz kawałek kodu. Czy masz tam jakiś LCD czy nie, czy masz tam jakiś Timer ustawiony do odmierzania sekundy czy Wait`ujesz :D Czy w dokumentacji czujnika pisze, że nadaje tez na końcu niewidoczne w terminalu znaki 13 lub 10? EDIT: aaa masz tu taki prosty. Napisałem przy śniadaniu więc błąd mógł się...
Następnym razem napisz jaki mikrokontroler i z jaka prędkością jest taktowany. Problemem może być to że chcesz coś wyświetlać w procedurze obsługi przerwania. Lepiej unikać takich sytuacji. Pewniejszym rozwiązaniem będzie ustawienie tylko flagi w przerwaniu i szybki powrót z niego. Potem w programie zająć się wyświetlaniem kiedy napotkamy flagę. Druga...
[Bascom]Witam. Natrafiłem na pewien problem. Chciałem by po otrzymaniu ramki 10 01 0A 01 otrzymał zwrot w postaci "dana 1" a wysyłając ramkę 10 01 0A 02 odpowiedz "dana 2" Problem wygląda następująco: - nie za każdym wysłaniem jest reakcja - odpowiedz na wysłane dane - odpowiedz nie przychodzi raz tylko w koło i nie można tego przerwać Dodatkowo powiedzmy...
coś takiego: Przerwanie_timer1: 'przerwanie co 0,0015625 sekundy (640Hz) Ie = &B00000000 'wylacz przerwania Th1 = &HFC : Tl1 = &H00 P3.7 = 1 : P1.0 = 1 : P1.1 = 1 : P1.6 = 1 : P1.7 = 1 Incr Wyswietlacz_licznik If Wyswietlacz_licznik = 5 Then Wyswietlacz_licznik = 0 Wyswietlacz_dane = Poczatek_wyswietlacz_cyfra_kopia...
Może spróbuj w ten sposób : $crystal = 4000000 Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1 On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera Timer0 = 145 'wartość początkowa od której timer bedzie zliczł...
Witam. Mając trochę wolnego czasu postanowiłem wrócić do zmagań z PIDem. W sieci znalazłem program PIDa w Bascomie na Atmegę8 (maluszek Attiny2313 okazał się niestety za mały). W programie wyłączyłem różniczkowanie - aby było łatwiej. Program działa dość dobrze tzn. obroty utrzymują się na żądanym poziomie ale troszkę oscylują wokół wartości zadanej....
Witam Też się męczyłem jak zrobić sprzętowo bez żadnych przerwań generator około 36 kHz i 40 kHz. Polecam książkę Pana Piotra Góreckiego "Mikrokontrolery dla początkujących" (oczywiście o Bascomie). To naprawdę jest to jedno z nielicznych źródeł gdzie rzetelnie są rozpisane funkcje Timer1 po polsku. Właśnie testowałem układ Pana Góreckiego na At90S2313...
Wszystko działa dobrze, dokładnie tak jak napisałeś :-) Syfy w programie: 1) A jako integer, powinno być jako byte (pwm 8 bit) lub word (16 bit). Tutaj to nie powoduje błędu ale dobrze by było nie używać zmiennych mogących być ujemnymi, ponieważ PWM może mieć wartości tylko 0 lub dodatnie. 2) Enable Timer 1 - nie jest potrzebne bo nie używasz przerwań,...
Wielkie dzięki za program ale niestety jest on dla mnie bardzo trudny do zrozumienia. Szukałem jakiś wiadomości na temat tych przerwań do uart i znalazłem w helpie bascoma coś takiego: ON źródło_przerwania nazwa_podprogramu Problem w tym że nie wiem jak się wywołuje takie przerwania, a może one się same wywołują, może trzeba je zainicjować w programie...
Mam problem z przerwaniami, a raczej z pewną różnicą w budowie Atmega8 i Atmega32, a mianowicie mam program, który działa prawidłowo na Atmega8 poniżej fragment Jakaś sugestia/pomoc?
Programowanie to nie jest chybił trafił i zgadywanie. Co innego jeśli popełni się błąd nieświadomie. Metoda "a może zadziała" nie wydaje się być dobrą. Pomyśl co się dzieje jeśli na początku granica Compare ustawiona jest na 600. Teraz w pętli głównej która przez to że ma tam jakieś swoje opóźnienia, a timer swój preskaler zmieniasz granicę Compare....
Nikt nie czyta tych not do tego L293 czy jak ;) Można tam wyraźnie przeczytać na początku: This device is suitable for use in switching applications at frequencies up to 5 kHz. 5kHz to 5 tyś Hz a ile myślisz ma ten PWM jeśli prescaler wybierasz na 1? To tylko jeden z błędów. Gdybyś przedstawił schemat można by powiedzieć więcej, a tak to proponuję zmienić...
przeanalizowalem to jeszcze raz i na logike to nie ma co niedziałać. pomimo stałej czestotliwosci impulsów podawanych na int0 i int1, na wyswietlaczu wyswietlane sa naprzemiennie, z losowa czestotliwością "1" i "2". Układ pracuje na wewnętrznym oscylatorze. Czy jest to spowodowane jego niestabilną pracą, i zastosowanie zewnętrznego poprawi sprawę? $crystal...
Witam. Z pewnych przyczyn musiałem przejść z pisania oprogramowania w Bascom na C. I pojawił się problem. Mianowicie chodzi o konfigurację Timera1 tak aby był generatorem, którego częstotliwość zmienia się wpisem do rejestru pwm1a. Pwm1a = 312 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 On Compare1a Impuls Enable Interrupts...
Jeżeli byłby ktoś w stanie wyjaśnić mi dlaczego realizując wyświetlanie multipleksowane w poniższy sposób uzyskuję wyświetlanie czterech zer ? ................ Config Timer0 = Timer , Prescale = 32 Enable Timer0 On Timer0 Wyswietlanie Timer0 oraz Timer1 nie maja prescalera=32 Zatem ta Dyrectywa jest pomijana i twoj prescaler defacto jest =1; - co daje...
zapominasz ładować konkretną wartość do licznika przed jego uruchomieniem. obliczasz ją (w podstawowym trybie) mniej więcej tak: obliczasz czas jednego cyklu 1/fclk np dla 1Mhz 1us bierzesz teraz czas, jaki chcesz odliczyć, i dzielisz go przez czas jednego taktu, dostaniesz wtedy ilość potrzebną do zliczenia.np 0,020s/0,000 001 = 20000 jak wiesz licznik...
Nie. Timer1 jest używany jako podstawa czasu, SECONDTICKS mówi jak często pojawia się przerwanie od timera 1. Użycie któregokolwiek z trybów PWM zmieni np. wyzeruje timer1 i odbieranie DCF nie będzie działało poprawnie. Możesz wykorzystać inny timer z PWM, albo wykorzystać nowy mikrokontroler Atmega168, gdzie timer0 ma też PWM.
Teraz Timer1 powinien mierzyć okres a po przeliczeniu zmienna Liczba powinna podać częstotliwość. Sygnał podaje na INT0 i wyświetlacz zaczyna szybko migać więc nie widać jaki jest wynik. Podaje 84Hz ale wyniku na LCD brak. Sam fakt że wyswietlacz 'miga' oznacza że coś tam jednak się pokazuje. Problem jest, że wynik nie pozostaje na długo bo jest natychmiast...