Poopuszczałeś trochę, a do tego literówki i dlatego wyrzucało błędy. Ten program kompiluje sie poprawnie. $regfile = "attiny2313.dat" $crystal = 11059200 $hwstack = 32 $swstack = 10 $framesize = 20 'DEKLARACJA ZMIENNYCH I PROCEDUR Dim Flaga As Bit , Flaga1 As Bit Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte Dim Znak1...
W załączeniu program. Sterowanie pb1 i pb2. Sterujesz całym portem d(w kodzie- opisy). Wgraj hexa lub bina.
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...
Funkcja Wait nie blokuje Watchdog -a, zrób to co zaproponowałeś - Stop Watchdog - Wait - Start Watchdog Pozdrawiam
CHR(167) https://avrhelp.mcselec.com/index.html?a... Dodano po 2 https://www.martyncurrey.com/arduino-wit... CHR(223)
Czyli jednak typ zmiennej :) Nie sądziłem że Ts będzie musiało być Word. Tak na zdrowy rozum to zakres nigdy nie wyjdzie poza 0-59 :). Dzięki wielkie. Przykład z góry, nie testowany, ale bardzo pomocny zwłaszcza z tym zapisem do pamięci. Jeżeli chodzi o warunki to już go tam sobie odpowiednio okroję :) Dzięki jeszcze raz, testy wieczorem a teraz jadę...
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...
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
tak, przepraszam za literowke, oczywiscie mam w programie napisane tak: config timer1=counter reszta jak wyzej
Wyświetla mi (zaznaczone na czerwno) a nie tak jak chcę (zaznaczone na niebiesko). A widzisz :?: Trzeba było od razu napisać , że widzisz cyfry(bo tak miało być do testu) zamiast napisu.Teraz zamień kod , który ostatnio cytowałeś , poniższym i ... to wszystko z mojej strony. Dim Wyraz As String * 10 B1 = &HFF Wyraz = "" T = 0 Do Call Read_eeprom(t...
No nie bardzo. End wyłącza przerwania. Wtedy trzeba by użyć STOP.
Ten układ tylko odbiera bajty - nie odpowiada niczym. Generalnie adres to 88 , 90, 92, 94 zaleznie od stanu końcówek. Transmisja: start adres układu (88dec) komenda (0-adc0, 1-adc1) dana (0..255dec) stop komenda decyduje o tym gdzie dana trafi - albo do adc0 lub adc1. Oprócz tego w komendzie jest też bit dio resetu (rst) i do usypiania przetwornika...
Config Timer0 = Timer , Prescale = 32 Enable Interrupts Enable Int0 On Int0 Przerwanie1 Nosave Cls 'tutaj wysyłasz impuls pierwszy start timer0 Do : Loop Przerwanie1: stop timer0 'tutaj co ci sie podoba lcd "odleglosc:" ; wynik 'co tam jeszcze chcesz 'wysyłasz impuls start timer0 return End
Mozesz sprobowac za pomoca watchdog'a. Wada jest to ze reset nastapi dopiero po min. 16ms Config Watchdog = 16 Start Watchdog watims 20 'oczekiwanie na reset z watchdoga Masz do dyspozycji jeszcze polecenia: Stop watchdog - zatrzymanie Reset watchdog - kasowanie Zamiast 'waitms 20' mozesz tez dac jakies polecenie "usypiajace" procesor (IDLE, POWERDOWN)
Wystarczy wpisać warunek w dodatku prosty If I = 100 then stop timer1 I=0 timer1= 0 start timer1 end if a tutaj Kasowanie: stop timer1 I=0 Timer1 = 0 start timer1 Return W ogóle nie bierzesz pod uwagę z jaką częstotliwością będzie liczył licznik chyba potrzebujesz jakiś konkretny czas...
wystarczy nieco przejrzeć helpa bascoma: [syntax=basic4gl]Config Adc = Single , Prescaler = Auto 'Now give power to the chip Start Adc 'With STOP ADC, you can remove the power from the chip 'Stop Adc Dim W As Word , Channel As Byte Channel = 0 'now read A/D value from channel 0 Do W = Getadc(channel) Print "Channel " ; Channel ; " value " ; W Incr Channel...
Dokładnie tak też to robię ale silnik staje i ponownie rusza.
1. W jakim celu konfigurujesz liczniki, wpisujesz im wartości początkowe, a potem wywołujesz ich zatrzymanie przez STOP TIMER0/TIMER2 skoro nigdzie indziej ich ponownie nie uruchamiasz? 2. Jakim cudem kompilator nie protestuje gdy w pętli głównej umieszczasz samo ON TIMER0/TIMER2 nie podając trzeciego słowa kluczowego GOTO/GOSUB i ostatniego ich parametru?...
Witam, Polecenie SOUND port , il_impulsów , czas_impulsu To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu... Jeżeli znasz częstotliwość to nie problem określić ilość impulsów i czas trwania, ale ta funkcja jest mało precyzyjna. Lepiej wykożystać do tego Timera: $crystal = 4000000 Pwm1a...
Ja mam taki program zrealizowany na Atmedze8. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 40 $framesize = 40 Config Portb.1 = Output 'wyjscie triak Triac Alias Portb.1 Config Rc5 = Pind.7 'rc5 pin timer0 Dim Level As Word 'poziom sciemniania 1 - 20 Dim Timer_val As Word 'wartosc timer1 dla sciemniania Dim Command...
Ok a jeżeli włacze zasilanie w pomiędzy tymi czasami . Jeżeli czas ustawiony będzie np start 23 stop 3 ?
Stop Timer0 ;)
Na szybko to trzeba dodać i2cstop na zakończenie procedury i dopiero i2cstart bo inaczej drugi układ nie odpowie wcale. Jeszcze to krótkie opóźnienie ale pomiedzy stop i start.
Dawno Bascoma nie używałem ale to będzie coś takiego: On int0 czas 'przerwanie zewnetrze (wejście impulsów) do czestotliwosc=1/czas 'obliczenie czestotliwosci z czasu pomiedzy impulasmi loop czas: stop timer0 'zatrzymaj timer czas=timer0 'odczyt z timera timer0=0 'wyzerowanie timera start timer0 'ponowne uruchomienie timera return Oczywiście...
Błąd kompilatora. Po wykonaniu Config Timer0 nie jest zapamiętywana bieżąca zawartość rejestrów TCCR0x wewnątrz kompilatora. Przy wywołaniu Start Timer0 odtwarzana jest wartość 0 w rejestrze TCCR0B, a powinno być wpisane 5. Zgłosić do działu wsparcia i czekać na poprawienie. A tymczasem zamiast START i STOP: skonfigurować licznik, zapamiętać zawartość...
czyli rozumiem że w pętli głównej wystarczy dodać ??? Stop timer0 gosub ds18b20 start timer0
Przede wszystkim brakuje Ci sekwencji Start i Stop...nie wnikając nawet w inne szczegóły...robiw
Faktycznie nie do czytałem - może za późno się za to zabrałem ;). Akurat nie o Bascom mi chodzi... tylko o C. Opisz proszę dokładnie procedurę robienia nadruku na przyciskach jak to naprasować, żeby nie stopić przycisku,?) :). Najlepszego w 2008 :) :!:
Czyli obraz na tych wyświetlaczach jest odświeżany non-stop i potrzeba pamięci aby z niej przepisywać "obrazek" do LCD tak? Tak to rozumiem. Rzeczywiście jeśli tak jest to "troszkę" atmega się nie nadaje. I tak też chyba w końcu zrobię. Zacznę się uczyć C bo mnie już nerwica łapie. Ale zanim coś skumam to miesiące zapewne miną. Znów zaczynać od migania...
f S1 = 0 Then Stop Timer0 Call L_stop Call P_stop Do Loop End If No i tu program zakończy swoje działanie po spełnieniu warunku S1=0. Nie wyjdzie z pętli Do...Loop do pętli głównej. Aha... i jeszcze Case deklaruje się z dwukropkiem Select Case Stan Case 1: Gosub Pucieczka Case 2: Gosub Tucieczka Case 0: If Namierzony_sharp1 = 1 Then Gosub...
Co ciekawe, błąd TWI pojawia się tylko przy zapisie do AT24c1024, co ciekawsze - po wystąpieniu błędu i zresetowaniu TWI w atmedze pamięć ta dalej trwa w "zawieszeniu", wystarczy jednak odczytać inny układ na magistrali (np. odczytać czas z PCF8583) i pamięć wraca do życia. Prawdopodobnie robi to warunek STOP.
Układ jest zrobiony na 4433 ,programy są w wersji orginalnej ,nic w nich nie zmieniałem,komunikaty w nich są po angielsku ,mam jeszcze gdzieś na dysku wersję z napisami przerobionymi po swojemu ale na razie nie mogę znaleźć :( .Prąd tracony na stabilizacji jest bardzo mały w porównaniu z poborem prądu przez stopień końcowy i nie ma znaczenia w praktyce...
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
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...
Nic nie trzeba informować kompilatora - Bascom ładnie przyjmuje wprost rozkazy asemblera ale w zasadzie atom1477 zrobił to nawet bez asemblera - sorki - po prostu "ręcznie" odwołał się do rejestrów i wpisał do nich odpowiednie wartości tzn poustawiał bity tak żeby coś tam działało w tym przypadku co ja ci podałem trza by to było mniej więcej zrobić...
Nie wiem po co wyłączasz i włączasz ten przetwornik, ale może jakaś oszczędność baterii czy coś.. W każdym bądź razie pierwszy odczyt po włączeniu przetwornika może być zafałszowany. Bascom i tak czyta dwa razy, ale uśrednia te dwa odczyty. Spróbuj wykonac dwa doświadczenia. W pierwszym pod "Nap = Getadc(4)" dopisz dokładnie taką samą druga linijkę....
Troszkę zmieniłem, sprawdź czy działa. Troszkę nie rozumiesz co piszesz dlatego oporni Ci to idzie najpierw zwiększa liczbę a potem sam ją zerujesz, więc siłą rzeczy zawsze będzie równa zero. Druga rzecz to zwiększasz "liczbę" tylko od jakiej wartości zaczynasz? Najlepiej zaczynać od zera. itd [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000...
Po Config Timer0 wpisz dodatkowo TCCR0 = 4 Config Timer0 = Timer , Prescale = 256 Tccr0 = 4 Tylko musisz coś zrobić z START TIMER0 i STOP TIMER0 bo one przywrócą wartość po CONFIGu i program dalej nie będzie działał. Najprościej będzie usunąć te instrukcje. dodano 20 Sie 2008 08:05 Mail z opisem błędu poszedł już do MCS Electronics. Zbaczymy jaka będzie...
Przyjrzyj się temu: I2cstart 'start I2cwbyte Addressw 'adres zapisu 160 I2cwbyte Adres 'adres komórki I2cstart 'powtórz start I2cwbyte Addressr 'adres odczytu 161 I2crbyte Value , Nack 'odczytane dane I2cstop 'stop
W zasadę działania programu nie wnikałem ale błędy jakie znalazłem to: 1. Masz zadeklarowaną Funkcję Sharp_Odczyt natomiast w programie wywołujesz funkcje Sharp_Odczyt1 i Sharp_Odczyt2 które nie są zadeklarowane. Proponuję funkcję Sharp_Odczyt przerobić tak: Function Sharp_odczyt(byval Kanal As Byte) As Word Stop Timer0 Sharp_odczyt = Getadc(kanal)...
Config Timer1 = Timer , Prescale = 8 On Icp1 C1 On Compare1a C2 Enable Compare1a Enable Icp1 Enable Interrupts ......... c1: Stop Timer1 X = Capture1 X = x / 360 campare1a = x timer1 = 0 start timer1 return c2: ----> to przerwanie będzie się wykonywać 360 razy na obrót campare1a = campare1a + x incr "zmienna" return masz podział...
R_gora alias PinX.x `wejscie przycisku góra 0 = naciśnięty R_dol alias PinX.x `wejscie przycisku dół 0 = naciśnięty R_stop alias PinX.x `wejscie przycisku stop 0 = naciśnięty Kran_gora alias pinX.x `wejscie krańcówki góra Kran_dol alias pinX.x `wejscie krańcówki dół Roleta alias PortX.x `wyjście Start / Stop 1=Start 0=Stop Kierunek alias portX.x `wyjście...
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 10000000 Config Timer0 = Timer , Prescale = 128 Load Timer0, 5 On Timer0 czas Enable Interrupts Enable Timer0 Do If Pinc.0 = 1 Then Start Timer0 end if If Pinc.0 = 0 Then reset portd.1 end if Loop czas: set portd.1 stop Timer0 return [/syntax] Tak na szybko,... nie testowany. Zrobić możesz wszystko,...
Witam, A próbowałeś zamiast repeated start zrobić zwykły STOP, START? Zobacz jeszcze (jeśli możesz) co za assemblera bascom generuje... Pozdrawiam, Dr.Vee
Stop timer nie zeruje automatycznie zawartości timera. Nie wiem jak jest z Start timer. A jaki prescale byś proponował ? dla timera 16bit i 8000000Hz, żeby mierzyć dość dokładnie w całym zakresie ? Z moich obliczeń wychodzi 8, wtedy przerwanie będzie co około 65ms. Jeszcze tak się zastanawiam w helpie jest napisane, że "Uwaga! Użycie parametru PRESCALE...
Pozostaje tylko sprawdzić rozwiązania o których pisałem wcześniej. Wysyłając nawet po 10 zyskasz bardzo wiele na szybkości. Nie napisałeś czy używasz przerwania do odbioru danych. Tak myśle że jak obniżysz trochę prędkość, a zaczniesz przesyłać po kilkadziesiąt bajtów naraz to i tak będzie szybciej niż teraz. Chodzi o to że teraz masz tylko 25% danych...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
Lutowanie raczej odpada, funkcja działa w moim urządzeniu bez problemów. Po zapisie do Pointer Register nie ma sygnału Stop tylko master wystawia kolejny sygnał Start.
Można : Stop watchdog Pozdrawiam! to akurat nie dziala.... Bascom wywala nastepujacy blad przy kompilacji... error 102: illegal asm-command
Odkomentuj, czyli zdejmij ten pierwszy apostrof z tej linii : 'Set Tccr0b.0 (W IDE Bascom linia 57) To włącza taktowanie Timera0 z preskalerem 1 czyli z prędkością CPU. Bez tego Timer po prostu stoi w miejscu. Nie wiem tylko czy Timer pozwoli wyłaczyć te LED`y tym poleceniem po "Stop Timer0" bo to tylko zdejmuje taktowanie a konfiguracja do PWM raczej...
stopi zasilacz stopi bezpiecznik stopi cewka
dodge automat philips obudowa wymiana livebox
pomiary elektryczne odbiorowe chińska lampa plazmowa
Schemat bezpieczników Suzuki Grand Vitara - lokalizacja i wartości Adaptacja bojlera z wężownicą do ogrzewania balii ogrodowej