Po mojemu to mogło by być tak. '*********************** Podprogram ustawiania godzin ,minut, dni i miesięcy Sub Menu: Start_menu = 0 Do If Menu_ustaw = 0 Then Waitms 25 If Menu_ustaw = 0 Then Incr Start_menu If Start_menu >= 6 Then Start_menu = 0 End If End If End If Select Case Start_menu Case 0 : Case 1 : Locate 1 , 1 Lcd "Ustaw...
Dzieki Panowie za podpowiedzi ,mam problem z ustawieniem konkretnej godziny bo do pcfka musi byc godzina zapisana w formacie BCD,i jak zastosuje cos takiego Zwiększaj/zmniejszaj binarną , a dopiero po tym rób z tego BCD. H = 21 'dwudziesta pierwsza if pinc.2=0 then incr h end if H=Makebcd(h) 'w H znajdzie sie wartość &H22(binarnie 34)...
Może ktoś podpowie albo ma jakiś prosty kod do ustawiania czasu.
Masz zaznaczoną opcję Auto Flash w opcjach programatora? Jak programujesz procesor to wybierasz Program czy Manual Program z górnej belki?
Dedykowany do tego układ to ATtiny26 i nowsze. Ma on sprzętowo ustawiany dead time.
Standardowy błąd początkującego. Nie włączone wewnętrzne podciąganie (pull-up) na wejściach na których są switche.
Zastawia mnie po co ciągle robisz warunek w warunku jak np. tu If Pinb.4 = 0 Then Waitms 1 Incr Setki If Setki = 10 Then Setki = 0 Incr Tys If Tys = 7 Then Tys = 0 End If End If End If Jak już mówiłem wcześniej, jeżeli zaprzęgnąłeś timer to wykorzystaj go do odliczania sekundy wtedy pętla główna zostaje do twojej dyspozycji i bez problemu tam umieścisz...
Dla AT90S8535 nie ma potrzeby ustawiania fusebitów. Dopiero w AVR nowszej generacji sprawa się może komplikować (np. ATmega8535 - w prostej linii nastepca w/w układu)... ;)
Dane odbieraj w przerwaniu. Jak natrafisz na znaki "AT" to rozpoczynaj zliczanie 154 bajtów po czym ustawiaj flagę "Data_ready" czy jakąś taką i znowu czekaj na znaki "AT". A jak chcesz odbierać dane o rożnych długościach to czekaj na znaki "AT" i ustawiaj flagę po ich odebraniu. Tyle że odebranie poprzedniej ramki będzie wymagało pojawienia się początku...
To procesor steruje tym układem, a nie odwrotnie. Stąd też szybkość procka nie ma znaczenia - chcesz coś odczytasz to ustawiasz odpowiedni sygnał i w dogodnym czasie odczytujesz stan magistrali danych. Wszystko masz w nocie układu.
bo później w programie gdzieś tam zmieniasz znowu stan na odwrotny, nie ma innej możliwości
Może zanim zapomnę o czym chciałem napisać a nie jest najważniejsze, ale dla Ciebie ważne. Tak w telegraficznym skrócie -> USART w AVR ma możliwość włączenia jakby podwójnej prędkości/próbkowania (to samo SPI). Bit ma skrótowa nazwę U2X. Przy taktowaniu 16MHz, jak prawie każda płyta Ardu, to bez U2X predkość 115200 miałaby za duzy błąd który niby maksem...
Nigdy nie używałem funkcji. Więc nie mam pojęcia jak to zrobić. Czas sie dokształcić, do Bascom jest polska pomoc z przykładami. Jaki problem? Ponadto zamiast funkcji można użyc podprogramu, choć funkcje są wygodniejsze. Ta funkcja musi być solidnie rozbudowane aby przesłać jeden znak. Bzdura, wysłanie znaku, to wysłanie bajtu do sterownika. Wyświetlacz...
Nie wiem jaki masz programator (piszesz tylko że usb), ale jeśli to USBASP to Bascom w wersji 1.11.9.5 nie obsługuje go bezpośrednio. Trzeba korzystać z pośrednictwa AvrDude. W tym przypadku okno Manual Program jest niedostępne. Napisz jaki to programator i jak go ustawiasz w opcjach.
Bez tego nie odmierzysz dokładnie 10Hz, co najwyżej przybliżone, ale w BASCOMIE nigdy nie wiadomo co i ile trwa... Później tylko w przerwaniu : Set PORT Czekasz krótki odstępik czasu Clear PORT Czekasz taki sam odstęp czasu Suma odstępów nie może być większa niż 0.1s z wiadomych przyczyn
Jak masz pełną wersje Bascoma, to w katalogu Lib są źródła bibliotek w asemblerze. Tak po szybkim przeglądnięciu przypuszczam że zmienna Err jest ustawiany przy braku potwierdzania i zbyt długim czasie oczekiwania. W Bascomie są dwie biblioteki obsługujące I2C, domyślna biblioteka jest softwarowa i nie wykorzystuje interfejsu TWI. Jeżeli chce się wykorzystać...
Delay- to się czasem ustawia w Bascomie dla wolnych zegarów procesora. No to jak dla Atmega8 chodziło i nic nie było zmieniane to nie wiem. Zrób undo- zaprogramuj Atmega8. Czymkolwiek. ATmega16 jest prawie taka sama.
delay w przerwaniu?! Nie przesadzasz? Dlaczego 2 razy ustawiasz TOIE2? Po co zerujesz TCNT2? Po co ustawiasz TOV2? Spróbuj najpierw sprawdzić ten kod z taktowaniem timera z podstawowego zegara, nie z kwarcu zegarkowego. Wtedy będziesz wiedział, czy problem leży w oprogramowaniu, czy w braku oscylacji.
To tak prosto sie pisze w dwóch linijkch wyjasnień, tylko ja bym wolał kod w bascomie :cry:
Wystarczyło dodać I2Cinit i układ działa poprawnie. wyświetla się czas. Teraz tylko ustawianie czasu dorzucić i zegarek gotowy. Temat uważam za zamknięty.
Powinno działać. Nie mam tego zegarka na stanie więc nie sprawdzę ale wygląda ok. No poza ustawianiem czasu, bo to totalnie klapa...
To sobie zmień const Rc_id = 5 na const Rc_id = 0. Ta stała to takie zabezpieczenie aby układ nie reagował na inne piloty.Powinno zadziałać. Program narazie tylko odbiera dane, ale ich nie interpretuje. jak wszystko zadziała to daj znać. Powinno w dolnej lini wyświetlacza wyświetlać numery odebranych przycisków, adres będzie stały. Czasu też narazie...
Samo się nic nie blokuje. Najwyraźniej źle ustawiasz fusebity.
staraj się nigdy nie używać Goto - dla programu to samobójstwo. Wiem - to pozornie upraszcza pisanie programu, ale przy większym projekcie prowadzi w maliny. Trudno w takim programie dokonywać zmian i śledzić jego działanie. Jedyne miejsce gdzie może wystąpić Goto to pętla główna programu . Reszta programu powinna być podzielona funkcjonalnie za pomocą...
Kolego marek19951 Opisz jak ma działać to Twoje menu i jak widzisz ustawianie temperatury .
Czytam to http://www.elektroda.pl/rtvforum/topic13... i linki zamieszczone w temacie, poniekąd rozumiem, ale nigdzie niema wzmianki (jakieś liczby, przykłady) o tym kiedy i jakie wartości ustawiać. Bazuję na tym co ustawia mi BASCOM [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 [/syntax]...
Panowie, przecież BASCOM podczas symulacji podaje czas i ilość cykli maszynowych. Wystarczy posprawdzać i zpisać sobie. Na przykład, standardowy startup (bez LCD) dla Mega8 trwa 6149 cykli maszynowych (zerowanie pamięci, ustawianie stosów, reset zmiennych BASCOM). Z drugiej strony nie po to BASCOM budowano tak jak jest, by wnikać aż tak bardzo w kod....
Mimitron widzę, że nawet nie sprawdziłeś co robi config clock w bascomie, na wyświetlaczu nie będziesz miał cały czas jednej godziny bo bascom tym poleceniem ustawia timer2 do pracy anachronicznej, ustawia odpowiedni preskaler, konfiguruje przerwanie od przepełnienia i tworzy funkcje obsługi przerwania w której automatyczne zwiększa te zmienne. Wystarczyło...
Przykładowo z innego kodu ;) [syntax=vbnet]TCCR1B = Bits(WGM13 , WGM12 , CS10)[/syntax] Miłego dnia
A fusebity ustawiasz poprawne?
Wrzuć wszystko do programu głównego tzn. przyciski ( ustawianie czasu załączania/wyłączania pompy), sprawdzanie Adc (poziom wody) przeliczanie wartości dla wyświetlacza , a samo wyświetlanie w podprogramie odświezanym co jedną sekundę za pomocą Timer0 . Timer0 dalej dla wyznaczania 1 sekundy. Buzer zrealizuj za pomocą zwykłej zmiennej licznikowej zwiększanej...
No właśnie. teoretycznie ustawia, a praktycznie na DIR+ jest cały czas 0, a więc kierunek pozostaje bez zmian.
Hej! Nic nie zapomniałem :) , tylko poprostu zawsze korzystając z przycisków podciągam wejscie pod plus 5V (Rezystor 10k). Z praktyki przekonałem się że jest to o wiele pewniejsze rozwiązanie niż ustawianie programowo stanu wysokiego. Pozdrawiam
No, całego na zaliczenie nie zrobisz chyba. To Lcd to będzie trudne do przetłumaczenia. Na poczatek- w drugiej linijce masz 7bit- a nie wiadomo jaki to procesor. A reszta- ustawianie rejestrów.
Polecenie $crystal = 8000000 informuje tylko kompilator z jaka prędkością ma pracować program, kompilator nie ma żadnego wpływu na wartość fusów- zawsze musisz je ustawiać ręcznie.
On Timer1 - tak myślałem ... ale ... W swoim programie już wykorzystuję On timer ale 0 - jako licznik czasu. Czy przed załączeniem PWM mam używać enable time1 i po wyłączeniu disable timer1 Z tego co wyczytałem w necie to przy takiej konfiguracji pwm jak u mnie to standardowo jest ustawiany Phase Correct
Właściwie bym chciał sie dowiedzieć od doświadczonych w tym temcie - jak to właściwe sie odbywa w połączeniu z 74HC164 lub CD4028. Liczby binarne kodowanie-dekodowanie, jak to ustawiać w bascom'ie. itd....
ok, wyliczone jest dobrze ale za czesto odpalasz timer, ustaw wiekszy prescaler i wylicz jeszcze raz, po drugie to przerzuć wyświetlanie na lcd'ka do głównego programu przez ustawianie jakiejs flagi w przerwaniu, po trzecie wez poprawke na czas przeladowania timera i inne podobne (preferuje metode prób i błędów)
Napisałem że teoretycznie 1023 , w rzeczywistości testowałem z dobrym skutkiem do 100 przycisków a używam max 20 . Rezystory nie muszą być dobrane dokładnie takie jak wychodzą z wyliczeń . Różnicę ustawiam programowo.
W samplu z Bascomem miałem ustawianie czasu, w rtcch.bas jest zerowaniu bitu CH. Zapewne się nie ustawił skoro Err przyjmuje wartość 1 po próbie zapisu. Poza tym wydaje mi się, że nieustawiony układ powinien zwrócić jakieś inne dane zamiast "165".
Dzisiaj miałem trochę czasu i znalazłem problem z U2X0. Wersja Bascoma którą posiadam ma błąd. Jeśli bit U2X0 ma być zerowy to Bascom nie ustawia go na zero. Trzeba to niestety zrobić ręcznie. Bit ten mam zmieniany bootloaderem. Pozostał tylko problem pomiaru temperatury który opisałem w poprzednim poście.
Zgadza się czas 8,2ms to czas samego wystąpienia przepełnienia timer0, czas orientacyjnie obliczyłem w przybliżeniu ale to nie istotne, na zasilaniu +4,5V nie mam kondensatorów co by one miały zmienić
Witam Jeśli używasz bascoma to masz symulator i możesz sobie to sprawdzić. Taki protokół transmisji czy zrobisz w asemblerze czy bascomie będzie wyglądał podobnie. Tu i tu będziesz właściwie ustawiał bit po bicie. -- pozdrawiam
1. Eclipse odradzam - już lepiej Atmel Studio. 2. BASCOM ma czasem opcję ustawiania fusebitów automatycznie z wgrywaniem pliku HEX. 3. Na schemacie nie widzę złącza programatora 4. Czy na pewno masz USBasp, a nie np. stk500 czy coś takiego? 5. AVRDude powinno wykrywać programator, skoro działa, więc może jakieś problemy z programatorem?
Jak używasz jakiejś bardzo starej wersji spolszczonej to możliwe, ale Demo2075 już nawet to potrafi. Możesz użyć Twojej poprzedniej konfiguracji z Load Timer, ale dodaj ustawianie tej flagi 5ms w przerwaniu.
Wpisujesz wartosc jaka ma odnierzac do rejestru OCRnx. W kalkulatorze wpisujesz ile ma ci odmierzyc ms, us albo podajesz czestotliwosc w Hz, wpisujesz prscaller i ci pokazuje ile masz wpisac do tego rejestru OCR. Z tymze w bascomie nie bawisz sie rejestrami tylko w poleceniu config timer to ustawiasz. W helpie do bascoma jest wszystko opisane ;)
Czas zawsze zmienia się w ostatnią Niedzielę. Najpierw, na tymczasowych zmiennych, data ustawiana jest na ostatni dzień miesiąca a to nie musi być akurat Niedziela. Wbudowaną bascomową funkcją Dayofweek() dowiadujemy się który to dzień z przedziału 0-6 gdzie 0 to Niedziela. Jeśli "wyjdzie", że Dayofweek to np. 1 (Poniedziałek) to znaczy, że w danym...
Ok doszedlem jak przestawic fusebita.Tylko,ze ustawilem chyba nie ten.CZy fusbita ustawia sie tylko raz?CZy mozna ponownie go przestawic? Bo teraz bascom nie moze zidentyfikowac procka.
A nie myślałeś, żeby samodzielnie coś napisać ? Satysfakcja gwarantowana ! Oczywiście zaczynając od małych kroków - najpierw procedura obsługi RTC, później ustawianie czasu, później sterowanie ręczne itd itd. Wrzucasz tu kawał programu i... czego właściwie oczekujesz ?
A ustawiałeś?
Jeszcze taka jedna rzecz, Wydaje się, że najbardziej krytyczny jest sam impuls (1 - 2 ms) który ustawia pozycję. Odstępy pomiedzy nimi nie są takie ważne, a okres ~20ms wynika chyba z tego, że z założenia w tym czasie powinna się zmieścić aparatura RC i przesłać ustawienia wszystkich kanałów. To też można by sprawdzić, jak dalece można zmniejszyć (ewentualnie...
Zauważyłem, zauważyłem, ale o tym że to teraz nieużywane już nie wspomniałeś Ty. Tak samo jak nie piszesz w kodzie jakie są rozmiary stosów i ramki. Dlatego czasem szkoda czasu na rozpatrywanie takich pytań jak o tyle rzeczy jeszcze trzeba dopytać... Napisz uczciwie ile miałeś poustawiane w IDE na te stosy ;) a najlepiej umieszczaj deklaracje w kodzie....
Zamiast Bitwait Pinc.3 , Set wpisz: Blad=0 Do If Timer0 > 200 Then Blad=1 Exit Do End If Loop Until Pinc.3=1 Wyskok z petli nastepuje kiedy warunek Pinc.3=1 albo kiedy Timer0 > 200. Wartosc 200 to oczywiscie przyklad :-) Drugie pytanie. Mozna dokladniej zmierzyc, choc to jest Timer0 8-bitowy. Robisz nastepujacy prosty trick: 1. deklarujesz zmienna...
Układy nie różnią się niczym znaczącym dla programu prędzej gubisz jakiś tat zegara , lub masz uszkodzony jeden z rejestrów 74164 albo go źle ustawiasz ..
Jeśli nie wykorzystujesz tych samych pinów co kwarc zegarkowy to nic się nie będzie gryzło... O ile dobrze pamiętam wystarczy podpiąć kwarc 32,768kHz bez kondensatorów pod TOSC1 i TOSC2... Raz po uruchomieniu uC odpalasz timer2 w trybie asynchronicznym i tylko włączasz albo wyłączasz przerwanie od przepełnienia... Ustawiasz preskaler tak żeby przepełnienie...
Co do tej nóżki nr. 3 to właśnie steruje kontrastem. Ustawiam pętle która ustawia sygnał PWM od 0-100% i w tym czasie powinno się wyświetlić COŚ ... i nic :(
Witam ponownie. Wysiliłem mózg i według sugestii dodałem zmienną,a nawet 2,nie w sugerowanym miejscu bo nijak nie potrafiłem sobie tego wyobrazić.Kod poprawiony działa,ale żeby nie było zbyt łatwo to po przekroczeniu 10 sek. dla zmiennej a lub b program nie ustawia jej znowu na 1 ale idzie w maliny.
Ja podpiąłem LCD zgodnie z rysunkiem http://www.artronic.pl/pic/UC1601-interf... i wyświetlacz nie daje znaku życia.Na kondensatorach 0 V, pobór prądu 250 uA, kontrast niewidoczny. Jak to draństwo ruszyć ?Gdzie tu się kontrast ustawia ?
Przede wszystkim wstawiaj to tak: Od jakiegoś czasu, kod umieszczamy w tagach Poza tym to wypadało by poprawić ten program, by nie używał tak długich WAIT. Sterowanie 2 przyciskami, czasem oczekiwania było by łatwiejsze w realizacji. Oczywiście można to zrobić za pomocą potencjometru, zaleta jest taka, że przy każdym włączeniu zasilania startuje od...
Nigdy nie musiałem ustawiać w bascom żadnego procka , nie jest to wymagane . Z tymi spadkami napięcia to dziwne , na czym robisz projekt (plytka stykowa ? zestaw uruchomieniowy ? czy juz zmontowałeś na pcb? ) . Komunikat "Could not identify with ID-000000" może oznaczać wiele problemów np: brak zasilania,brak połączenia z programatorem , źle dobrany...
Dołączasz do procesra kwarc 32767 Hz do odpowiednich końcówek - TOSC1 i TOSC2. Nie są to te od taktowania procesora. W Bascomie masz gotowe polecenia, do ustawiania i odczytu czasu itd. A co będzie jak prądu braknie ? Dlatego dobrze ktoś wcześnieł radził. PCF i bateria. PL
Ustawiałeś Fusebits, aby zaprząc kwarc do pracy ? Fabryka Atmela domyślnie dała mu wolne... ;) Light-I
Witam wszystkich.Zacząłem naukę programowania (Bascom),więc proszę o wyrozumiałość. Napisałem taki program zegara RTC z kwarcem 32768Hz i nie wiem jak dopisać mam guziki do ustawiania budzika.Siedzę dwa dni i nic mi nie wychodzi.Polski help i książka Marcina Wiązani w tym przypadku jakoś mi nie pomaga.Oto kod źródłowy: $regfile = "m8def.dat"...
W załączeniu pdf z opisem pcf-a po polsku. Masz tam opisane jakie rejestry należy ustawiać.
...czy wogóle jest to możliwe żeby na ATMEGA8 uzyskać na wyjściach OC1A,OC1B i OC2 trzy regulowane niezależne przebiegi ... Jak najbardziej. PWM1a i PWM1b są ustawiane komendami Bascom'a. OC2 wymaga ustawienia rejestru "ręcznie" i ma aż cztery różne tryby pracy zależnie od taktowania i "przeładunku".
Może to ja zrobiłem błąd, który kompilator zignorował i przepisał po swojemu... no nie wiem Nigdy nie było oficjalnie takiej konstrukcji polecenia CONFIG TIMER2 z takim parametrem jak klauzula PWM A = 8. Aczkolwiek czasem polecenia CONFIG przyjmują różne klauzule, ale ich działanie odbiega od założeń. Np. do niedawna można było w CONFIG ADC napisać...
A co to znaczy nie działa? Może BASCOM ten bit ustawia automatycznie dla większych prędkości UARTa. Zobacz w podglądzie rejestrów w symulacji.
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...
Szukam kogoś kto pomoże napisać program na procesor Atmega8 przy wykorzystaniu pakietu Bascom. Chodzi mi procedury do wyłącznika czasowego z ustawianym czasem przerwy i czasem pracy wykorzystującym do ustawienia 3 przyciski (góra,dół,ok),prezentacja na wyświetlaczu 2x16 znaków....Deklaracje portów,wyświetlacza,przycisków dam radę napisać sam.
Witam. Jak w temacie, potrzebuje ustawić stan 10 portów mikroprocesora na stan wysoki lub stan niski w określonym interwale czasowym ( zmienna) Np. mam aliasy do 10 portów L1,L2,L3.....L10 które mają się ustawić na stan wysoki ale nie wszystkie naraz tylko jeden po drugim, i tu chciałbym wstawić zmienną, czyli po ustawieniu L1=1 program odlicza zmienną...
TO ja może jeszcze raz za to atwiej: Niektore procedury w BASCOM - ie, np jak ustawianie BOUNDRATE, czy procedury slużące do zatrzymania ukladu na pewien czas, albo obslugi LCD itp. sa duzo łatwiejsze anizeli w ASM. Chodzi o to czy skąpilowany program w tego BASCOM - a(czyli pliki typu HEX i BIN) mozna wgrac za pomoca zupelnie innego programatora, i...
Mega! Dzięki! Wstępnie miałem plan użyć przycisku do wyłączenia alarmu, zatrzymania i wznowienia odliczania, a obroty prawo, lewo jako ustawianie całego czasu w górę i w dół, ale wyjdzie w trakcie użytkowania jak będzie wygodniej :)
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
No widzisz tak tego nie ustawiałem (pisze w bascom-avr). Jak pisałem w bascom 8051 to ustawiał i zerował to co trzeba i przyjmuje ze w avr również tak będzie. Sprawdzę to i jutro sie odezwę czy pomogło. pozdrawiam
Witam !!! Chyba coś źle zrozumiałeś. Jeżeli weźmiesz np: 30 sekumd i zamienisz to na BCD to dostaniesz 3 i 0 czyli 0011 0000 Jeżeli teraz z-andujesz to z 01111111 to dostaniesz dokładnie to samo. Z mojego doświadczenie a tym RTC wynika, że aby wystartował, wystarczy zapisać cokolwiek do rejestru sekund i już chodzi. Sprawdź tylko procedure zapisu do...
Zauważ tylko, że teraz nie konwertujesz odczytanych wartości z RTC i są ciągle w formacie BCD. Przy wyświetlaniu są one konwertowane tylko na string dla wyświetlacza, a same nie ulegają zmianie. Tak na dobrą sprawę musiał byś je konwertować PO wyświetleniu... ale po co.... Przy ustawianiu operujesz na zmiennych Ustaw_h itd, jeśli zegar pochodzi kilka...
Poza tym ja mam świerzo zainstalowany program i prawede powiedziawszy nic tam nie ustawiałem więc morze..............?
Hmmm, szczerze mówiąc nie bardzo mi się chce analizować program bo troszkę go zamieszałeś i właściwie to już nie bardzo wiem jakie zrobiłeś założenia działania tego progsa. W każdym razie widzę tu badanie krótki/długi przycisk i pomieszanie bezpośredniego czytania pinu z Debounce... jak dla mnie trochę to demotywujące. Rzuć jeszcze raz okiem na moje...
Wziąłem się w końcu za ten obrotomierz lecz mam pewien problem. Nie mogę użyć Timer0 bo używam go do przerwań w menu i obsługi przycisków. Pozostaje mi timer1 który jest 16bitowy i liczy do 65536. I teraz wystarczy preskaler na 256? Pamięć mi się kończy - mam zegar z ustawianiem czasu, 3 temp., woltomierz, a to wszystko w przełączalnym menu na 4 ekrany...
powinno to wyglądać jakoś tak: home: do if pin..... =1 then goto przod elseif pin ...=1 goto tyl end if loop przod: Do Waitms 1 Incr Pwm1a End If end if loop tyl: set port.... 'przekaźnik zmiany biegunów silnika Do if pin..... = then reset port.... pwm1a=0 goto home: end if . . Waitms 1 Incr Pwm1a End If end if loop tyl: Do if pin........
asembler- wydaje mi się że mój pomysł był odwrotny- wyłączamy przerwania na czas ustawiania/odebrania sygnałów z DS na jakimś pinie. Ale może Twój pomysł jest lepszy.
http://obrazki.elektroda.pl/9328566700_1... Dawno temu kolega namówił mnie do zrobienia komputerka. Nie jestem elektronikiem ale umiem pisać programy. Poczytałem trochę i zrobiłem prosty komputer wyświetlający podstawowe funkcje. Płytkę zrobiłem Positivem a soft napisałem w Bascomie. Potem była wersja kolejna, trochę rozbudowana na...
Co to za procesor ? Podaj przyporządkowanie linii portów (co która robi) ? W którym momencie masz ten błąd (przy ustawianiu, której cyfry) ?
hmmm takie kombinacje.... przacierz można rejestr odpowiadający za przerwanie ustawaiać w czasie wykonywania programu... raz ustawiasz go na zbocze narastające, a potem w obsłudze przerwania na zbocze opadające.
Pisząc 8MHz (wewnętrzny kwarc) miałeś chyba na myśli wewnętrzny oscylator ? tak? i że przy takiej konfiguracji szwankuje ci ATmega16 ???? Jeśli tak to mogę się podzielić moimi spostrzeżeniami. Otóż nie wiedzieć czemu też często a w zasadzie zawsze gdy biorę Atmega16 na wewn oscylatorze 8MHz to na 9600 nie chce mi działać zbyt dobrze podczas gdy ATmega8...
Te impulsy wejściowe i wyjście ma być na tym samym pinie ? PD.0? Jeśli nie to ustawiamy przerwanie na INT0 i w obsłudze przerwania zwiększamy zmienną. Jeśli zmienna osiągnie dziesięć ustawiamy wyjscie na stan wysoki. Jednocześnie timer zlicza czas pomiędzy impulsami i jeśeli jest większy niż 60 sekund ustawia wyjście na stan niski. Podumowując: Przerwanie...
SRAM-u raczej nie zapełniało, bo mam zadeklarowane sporo więcej jak standardowo Bascom ustawia. Śmieci też raczej nie zapełniały bufora, bo na printscreenie widać, że podczas jednoczesnego nadawania rzadko kiedy dochodziło do bufora i na linie pełne 7 i więcej bajtów. Na razie nie jest to tak istotne, ale ważne, że udało się rozwiązać problem. Jak będzie...
Problem leży po stronie bascoma bo jak skompiluje pierwotna wersje i wgram przez burn-o-mat to działa wiec czas na update bascoma. Dzięki za pomoc jeszcze raz i chyba się przypatrzę twojemu programowi tylko muszę rozkminić jak ustawiać sekwencje zapalania bo jeszcze nie bardzo kumam :)
Ustawiasz CTC na bardzo szybki, czas pomiędzy przerwaniami to będzie rozdzielczość regulacji. Reszta to wartości w pamięci(zmienne) odliczające programową syntezę częstotliwości.
Witam. Przedstawiam w załączniku kodu w Bascomie obsługujący zegar na ATmega 16/32, PCF 8583, DS18B20 i MAX7219 (osiem cyfr) obsługiwany wyświetlacz po SPI. Zegar, budzik, temperatura, data, utawienie jasności. Może komuś przydadzą procedury bascomowe we własnych opracowaniach. Pracuję nad ustawianiem za pomocą pilota. Jak przetestuję - dokleję do postu....
Czytasz wartość z GetADC, ustawiasz pin na stan wysoki i włączasz timer na określony czas, który przy przepełnieniu znowu przełączy w stan niski. Poczytaj sobie o timerach w Bascom.
Ach Chorwat.....cały czas jest tak samo... próbowałem ręcznie podciągać i ustawiać wartość pin'u przerwania na 1 i na 0, nawet zmieniłem przerwanie na Int0... myślę, że po prostu Bascom albo Attiny tu wysiada :cry:; chyba czas sie przesiąść na C albo Asm'a...oj będzie ciężko. Pomimo tego wciąż liczę na cud :D, że ktoś wymyśli coś co mi pomoże.
Czyli nic nie zrozumiałeś z linkowanego programu. A szkoda... Zasada działania (podobnie jak dla wielu innych programów), to wykonywanie krytycznych sekcji w przerwaniach. Pętla główna może być zupełnie pusta. W programie głównym: 1. Zdefiniuj sobie 8 zmiennych (Parametr_x), które będą odpowiadały wartościom włączenia każdego z kanałów. Np. 100,47,198......
W Twoim wypadku jest to portb. A w moim portb jest zajęty to sprawdziłem na portd. Deklaracja $crystal jest do niczego nie potrzebna dopóki nie korzystasz z bibliotek czy podprogramów wykorzystujących zależności czasowe. A tych w Bascomie jest mnóstwo. UART, LCD, SPI itd. Tak że lepiej jest ustawiać $crystal taki jaki jest naprawdę.
Uzywam pełnej wersji- normalnie się kompiluje. Wyjście po I2Cinit do gosub Blad- gdzie masz dwukrotne ustawianie LCD-dużo czasu to pochłania- to nie jest pomysł na debugowanie. Spróbuj zrobić to na jakiejś diodzie z toggle albo coś równie szybkiego.
po $crystal podawana jest częstotliwość w Hz, więc 1000000 jest ok dla domyślnie skonfigurowanej atmegi8. Z resztą to lepiej ustawiać w opcjach kompilatora. Aha i zamiast pisać: Do Waitms 250 Portb.0 = 0 Waitms 250 Portb.0 = 1 Loop wystarczy Do Waitms 250 Toggle Portb.0 Loop a to, że pierwszy listing działał wynika chyba z tego, że za każdym razem sprawdzane...
(at)MOL: port ustawiam zeby rezystory podciagajace sie wlaczyly... (at)Light jaka to roznica zeby zmiejszac? Powinno teoretycznie dzialac w obu przypadkach... Ale moge sprobowac....
Jeżeli już tak to ustaw przerwanie na każdą zmianę i sprawdzaj stan pinu int0. będzie szybsze bo nie będzie procedur ustawiania falling/rising: config int0=change ... przerwanie_int0: if pind.2=0 then 'opadajace zbocze else 'narastajace end if ... return Z analizy kodu asm bascoma wynika ze szybciej zadziała oddzielny warunek: if pind.2=0 end if...
Witam Potrzebuję w ATMEGA8 + PCF8583 ustawić w Bascomie trzy przerwy o dowolnie ustawianej "H" i "M".(czas wyłączenia i czas załączenia) Pierwsza wartość ma spowodować włączenie, druga wyłączenie i tak trzy razy na dobę. Problem polega na tym że jak się uda raz wyłączyć to się nie załącza.
hmmm no ja to robiłem wtedy w Bascomie mniej więcej tak: ustawiałem sobie tak któryś Timer, żeby przerwanie wykonywało się powiedzmy 64 albo 128 czy ze 200 razy w ciągu czasu trwania jednej połówki czyli w trakcie ok 10ms tak? Gdy pojawiło się przerwanie INTx to odpalałem ten Timer, który zaczynał tykać i wykonywać przerwanie tyle razy ile ustalonych...
zgemma ustawianie czasu hd44780 ustawianie czasu ustawianie czasu pcf8583
produkcja pralka miele fiata punto kontrolka poduszki silnik pralka predom
poduszka elektryczna plany buggy
Hato – brama nie domyka się i otwiera ponownie, cofka podczas zamykania, fotokomórki, siła napędu Blaupunkt Becker Mini ISO AUX VW – funkcja czerwonego przewodu w adapterze Jack