Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
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...
Czyli pilot działa, OK. Dobra mamy błąd w programie. wywaliłem wszystko co zbędne, sprubuj teraz, z tym kodem. $regfile = "m8def.dat" $crystal = 8000000 'Instrukcje konfiguracji peryferiów oraz urządzeń zewnętrznych Config Int0 = Low Level Config Rc5 = Pind.2 Config Lcd = 16*2 Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinb.2...
hunterhouse W AVR-ach sprzętowo można zatrzasnąć zawartość timera , ale uruchomić zliczanie trzeba programowo.Natomiast w 51-ce można uruchomić i zatrzymać timer sprzętowo.Jeśli na P3.3 jest stan wysoki i flaga GATE timera1 jest ustawiona , to timer zlicza doputy , dopuki stan na P3.3 nie zmieni się na niski.Problem jest tylko z tym , że Charly chce...
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...
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
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...
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...
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...
Nie,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
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...
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 =...
http://obrazki.elektroda.pl/9838687700_1... Trochę z obawą prezentuję kolejny już na elektrodzie sterownik oświetlenia, no bo ileż tego już tutaj było? A jednak nie znalazłem rozwiązania mnie zadowalającego, dlatego też powstał niżej prezentowany układ, powstał ponieważ klasyczne lampy z czujnikami ruchu mają pewną zasadniczą wadę:...
Pierwsze stosuję procki które maja oporniki . Stosuję zasadę minimalnego połączenia , żeby była zachowana . Zasilanie musi pochodzić ze wspólnego źródła ale zawsze procesor musi mieć oddzielny stabilizator . Napięcie referencyjne robię tak jak zaleca to producent procka (chyba wie co produkuje) Zawsze stosuję 7805 bo wiem że jest OK i mam zawsze 5.02V(byle...
Połowa mostka H : https://obrazki.elektroda.pl/9842884200_... Obecnie są takie napięcia zasilania. Jutro wrzucę kod w Bascomie. [syntax=vbnet] Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.3 = Output Portd.0 = 0 Portd.1 = 1 Portd.2 = 0 Portd.3 = 1 Dim X1 As Byte Config Timer1 = Timer , Prescale...
Witam czy ktos moze mnie oswiecic w jaki sposob zapisac wartosc do rejestru Counter1 pod bascomem ? Mam taki prosty program i za nic w siecie bascom nie che go lyknac $regfile = "Attiny26.dat" $crystal = 1000000 Config Timer1 = Timer , Prescale = 64 On Ovf1 Czas Enable Interrupts Enable Timer1 Counter1 = 120 Do nop Loop Czas: nop Return...
Zmieniłem realizacje zegarka na timer1. Oto część programu: [syntax=basic4gl] Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Timer1 Counter1 = 34286 do loop end odmierz_1s: Counter1 = Counter1 + 34286 Incr Sek If Sek = 60 Then Sek = 0 Incr Minuta If Minuta = 60 Then Minuta = 0 Incr Godzina 'Godziny If Godzina = 24 Then Godzina =...
Witam. Napisałem program do sterowania pompą i na Atmedze8 działa bez problemu a gdy go przerobiłem pod ATtiny25 to nawet nie moge go skompilowac bo wywala jakieś błędy nie wiem jak to uruchomić prosze o pomoc. przy próbie kompilacji wywala Error 46, Error 31, Error 350 Program dla Atmegi8 $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.2...
robisz tak $regfile = "m8def.dat" $crystal = 8000000 Config Timer2 = Timer , Prescale = 256 , Async = On On Timer2 Odmierz_1s Enable Interrupts Enable Timer2 Counter1 = 128 Do Loop End Sub Wysw End Sub Wart_bcd = Makebcd(godziny) Wartosc = Bcd(wart_bcd) Wart_bcd = Makebcd(minuty) Wartosc = Bcd(wart_bcd) Wart_bcd...
...A tak po za tematem jak ustawić timer żeby generował przerwanie co 1s bo nie za bardzo wiem bardzo małe wartości potrafię policzyć a to mi nie wychodzi? Przeanalizuj poniższy program. Ustawienia są banalne :) [syntax=basic4gl]$regfile "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Prescale = 256 On Timer1 1sek Counter1 = 34286 '8000000/256/31250=1s...
Zastosuję się do rady. Mam jeszcze problem z zaprogramowaniem tego procesorka tzn. nie wiem jak napisać toto :( EDIT Stworzyłem coś takiego. Nada się w jakimś stopniu, czy ogólnie do wyrzucenia ten kod? [syntax=basic4gl] $regfile = "m8def.DAT" $crystal = 8000000 Config Pind.1 = Input ' wyprowadzenie PD1 jako wejście Config Pinb.1 = Output ' wyprowadzenie...
Może coś takiego $crystal = 11059200 Dim Czestotliwosc As Long 'w twoim przypadku może być Byte Const Licznik = 22336 ' aby Timer1 przepelniał sie co sekundę Config Timer1 = Timer , Prescale = 256 Config Timer0 = Counter , Edge = Falling On Timer1 Czas 'On Timer0 Zlicz Enable Interrupts Enable Timer1 'Enable Timer0 'Pomiar czasu Counter1 = Licznik Cls...
Witam Enable Interrupts Enable Int0 Przycisk Przycisk: Incr Counter0 Incr Counter1 If Counter0 = 100 Then Portd.3 = 1 Else Counter0 = 0 If Counter1 = 500 Then Portd.6 = 1 End If End If Counter1 = 0 Return Procedure po etykiecie przycisk umieszczasz gdzieś w pętli glównej. Nie wiem czy to będzie działać bo niesprawdzałem tego. Wartości do jakich muszą...
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...
kupielm Attiny2313 ale po wgraniu programu nie mierzy 1 sekundy tylko dużo wiecej prosze o jakąś porade dlaczego tak sie dzieje $regfile = "attiny2313.dat" $crystal = 8000000 Config Pinb.2 = Output ' dioda pompy Config Pind.4 = Output ' pompa Config Pinb.0 = Output ' dioda sekundy Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Dim...
Witam Mój problem to brak kompilacji przy konfiguracji Timer2 w tryb Counter Unknown CONFIG parameter Porblem polega na tym że w helpie BASCOM-AVR można konfigurować Timer 2 w tryb Counter. Wrzucam cały kod :[syntax=basic4gl] $regfile = "m16def.dat" $crystal = 16000000 Dim Freq As Long Const Licznik = 2789 Config Timer1 = Timer , Prescale = 256 Config...
Dim Licznik As Byte Enable Interrupts 'Przerwania odblokowane '---------------------------------KONFIG... TIMER 0---------------------------------------... Config Timer1 = Timer , Prescale = 1 Counter1 = 59536 'Wywołąnie co 1ms Enable Timer1 'Odblokowane przerwanie TIMER 1 On Timer1 Procedura_w_przerwaniu_timer1 Procedura_w_przerwaniu_timer1:...
Moze lepiej uzyc przerwania od przepelnienia Timera. Ustawic tam taka wartosc poczatkową, żeby przepelnial sie co 5 sekund, a jak sie nie da tak duzo, to co 1 sekunde i zwiekszać jakiś licznik. Jak licznik osiagnie wartość 5 to wywołać podpogram Dim Licznik As Integer On Timer1 Co_sekunde Enable Interrupts ' Wlaczenie przerwan Enable Timer1 ' Aktywowanie...
Witam. Mam taki problem. Chce zrobić układ który po stwierdzeniu zbocza opadającego i odliczeniu opóźnienia ( 1-1000ms ) zmieni stan 2 portów na przeciwny. Czas zwłoki jest zmienny ale w tym nie problem. Więc po uruchomieniu jest porx=1 porty=0 po podaniu zbocza ( zwarcie do masy) układ zamienia diody w nieskończoność sam. Co robię nie tak?? w C działa...
Zaczynam dopiero programować i mam problem z TIMER = COUNTER . Chce by o zliczeniu ilości impulsów procesor wykonał np: zmianę stanu portu lub coś innego . To jest program : [syntax=bascom] $regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1...
Witam serdecznie a czy nie dało by sie przerobić tego programu i schematu na Atmegę 8. Mam zamiar zrobić taki wykrywacz ale na Atmedze 8. Niewidziałem żednego projektu w oparciu o ten uC $regfile = "m8def.DAT" Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5...
Przespałem się z tym i już wymyśliłem. Wykorzystałem przerwanie wewnętrznego timera oraz instrukcje warunkowe IF. Oto wycinek listingu: [syntax=basic4gl] 'konfiguracja procesora ,portów , LCD, itp. Dim Impulsy As Byte 'zmienna impulsy Config Timer1 = Timer , Prescale = 256 On Timer1 1sekunda Enable Interrupts Enable Timer1 Start Timer1 Counter1 = 56000...
nie daje glowy ze kod dziala. Mozliwe ze jest duzo bledow. Nigdy nie bawilem sie z star i stop timer1 wiec to moze byc zle. Poza tym nie wiemcz czy obliczenia nie beda sprawialy problemow i dekleracja zmiennych. $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Input Config Pinb.2 = Input Config Pinb.3 = Input Set Portb.1 Set Portb.2...
$regfile = "m16def.dat" $crystal = 8000000 Config Pinb.0 = Input Config Pinb.2 = Input P1 Alias Pinb.0 P2 Alias Pinb.2 Set Portb.0 Set Portb.2 Config Timer1 = Timer , Prescale = 256 On Timer1 1_sekunda Enable Timer1 Enable Interrupts Counter1 = 34286 Declare Sub Alarm Declare Sub Sys_off Dim Sekundy As Byte Dim Flaga1 As Bit Dim Flaga2 As...
Już działa!!! ;) ,a przynajmniej osiągnąłem zamierzony efekt. [syntax=basic4gl]$regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu czasu nop Buzzer Alias Pinb.1 Dim Sekundy As Byte Dim Minuty As Byte Sekundy = 0 Minuty = 0 Buzzer = 1 Config Timer1 = Timer , Prescale...
Dla czego zegar odlicza czas niedokładnie? co jest źle w tym kodzie? Którą wartość należy poprawić aby zegar liczył dokładnie $regfile = "m32def.dat" $crystal = 16000000 Config Pinb.1 = Input Config Pinb.2 = Input 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...
Kolego bykham w ten sposób nie uda Ci się osiągnąć stałej czasowej np. te 100ms. W zależności ile uP wykona przerwań ten czas raz będzie krótszy, raz dłuższy. Raczej spróbuj to wykonać według poniższego programu. Kod: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 Dim F As Word , Pomocnicza As Byte Config Portd.5 = Input 'T1 (Counter1)...
Witam Problem następujący... Program ma liczyć imulsy, a dokładnie mierzy częstotliwość. Wszystko chodzi jeśli wybiorę zamiast TIMERA2 - TIMER1, ale ja musze to zrobić na TIMER2. Pozniżej kod: [syntax=basic4gl] $regfile = "m328pdef.dat" $crystal = 11059200 $hwstack = 256 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu $framesize = 128 Dim...
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...
Cześć! Zbudowałem miernik częstotliwości w oparciu o procesorek Attiny 2313. Oczywiście zrobiłem to w ten nazwijmy "lepszy sposób" czyli dwa timery, jeden oblicza czas równy 1 sekundzie, a drugi liczy impulsy. Kwarc zewnętrzny 11059200MHz, wszystko działa jak należy... ale mam problem z pomiarem czestotliwości w zakresie od 2 do 5 Hz z rozdzielczością...
Ten kod działa PRAWIE dobrze - spóźnia się - pomimo obliczenia timera. $regfile = "m32def.dat" $crystal = 11059200 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Config Lcd = 20 * 4 Config Portc = Output Portc = &B11111111 Config Timer1 = Timer , Prescale = 256 Enable Interrupts...
Posiadam książkę pt. "Programowanie mikrokontrolerów AVR w języku BASCOM" Marcina Wiązania i jest tam przykład zegarka z wykorzystaniem timera. Problem polega na tym że sekunda tak naprawdę trwa "wieki" prawie 8s prawdziwych. Połączyłem układ zgodnie ze schematem w książce i tak samo, odłączyłem rezonator nic się nie zmieniało, zmieniałem taktowanie...
programik należy doszlifować, pisałem go 5 minut działa w przerwaniach od transoptorów jak będę miał więcej czasu to pomyślę i jak elektroda będzie lepiej działała to jest druga moja "ta" odpowiedź bo pierwsza bardziej obszerna( działanie programu) wywaliła mi się po napisaniu pół A4, można się zniechęcić.....do ponoiwnego pisania. Wtajemniczeni napewno...
PWM skonfigurowałem w oparciu datasheet Atmegi32 oraz o kalkulator (http://www.et06.dk/atmega_timers/), który mi wyliczył takie wartości : http://obrazki.elektroda.pl/1205671500_1... PWM zostało więc ustawione następująco : Deklaracja buforów Przerwanie Funckja do zmiany flag buforow Czytanie danych Liczba próbek wprowadzona na stałe...
Cześć Mam pewien problem do rozwiązania potrzebuje zrobić licznik który będzie mi zliczał do 10000 co 1 sek zrobiłem sobie liczniki T0 i T1 zliczają do 255 bo mają 8bit ale T2 ma 16bit nie mogę tego przeskoczyć[syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 Config Porta = &B11111111 : Porta = &B11111111 Config Portb = &B00000000 : Portb...
Witam,. Mam następujący problem: Przetwornik analogowy na ADC pin 1 Przetwornik częstotliwość na Timer0 max232 1uF Kwarc 8Mhz i atmega16L Na kablu ze złączkami BNC mam połączenie atmega -> przetwornik czestotliwosci (2 kolumna). Wydaje mi się, że wszystko dobrze zlutowane oraz nie ma przerw w kablu BNC. Kabel mam 50 Ohm. Podczas wysyłania danych na...
zmontowalem uklad, podpiołem do maluszka i pokazuje dwukrotnie wiecej. Przyjołem ze 1 impuls to 1 obrót silnika. Dodano po 1 Tak wyglada moj program, w sumie nie zadelarowalem na jakie zbocze ma reagowac licznik moze to byc przyczyną ??? $regfile = "89s8252.dat" $crystal = 16000000 $large Config Lcdpin = Pin , Db4 = P0.4 , Db5 = P0.5 , Db6...
Długi czas już siedzę nad tym programem, analizując inne programy i próbując różnych sposobów ale nie mogę zmusić tego do działania... Byłby ktoś skłonny wytknąć mi błędy ? Dodam, że jak pominąć całą sprawę z timerem to na lcd poprawnie liczy mi wartości (tzn prawie poprawnie bo 28 / 10 wychodzi 2.7999995 ale temu już zaradziłem) $regfile = "m32def.dat"...
OK pytanie poprawiam :) nie miałem na myśli żle działającego procesora tylko mój program oczywiście. jesli w bascomie to będzie działać to nie będę kombinował dalej zmostkowałem wejścia INT0 i T1 bo to jest ten sam impuls z wyjścia A enkodera, enkoder chodzi dobrze, ale obroty są liczone źle, dobrze są liczone jeśli obraca sie bardzo powoli. Przerwania...
counter1 counter1 34286 counter1 bascom atmega counter1
wymiana pasek wspomaga gaśnie samochód jazdy bateria łazienkowa
egzamin zawodowy technik mechtronik
Sterowanie ramieniem dysku HDD (VCM) za pomocą Arduino Instrukcja sterownika Mattei Maestro, Concerto, Quartetto – pobieranie i obsługa