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)=...
http://obrazki.elektroda.net/7_123635472... Prawie rok temu, zainspirowany konstrukcją pana Kamila Przychodzenia http://obrazki.elektroda.net/18_12363549... http://obrazki.elektroda.net/82_12363551... Płytka sterownika oraz płytka organizacji połączeń http://obrazki.elektroda.net/62_12363543... http://obrazki.elektroda.net/80_12363591...
W Atmelach podczas reset-u a zapewne przy inicjalizacji Bascomowego stuffu, wystawiany jest na porty stan wysoki. Trzeba o tym wiedzieć, jak się projektuje część wykonawczą i przyjąć, że aktywnym stanem w sterowaniu czegoś jest niski, wystawiać zera na porty, jak trzeba coś załączyć. Żeby było widać efekty sterowania, sygnał załączający triaka powinien...
Chciałbym uzyskać możliwość sterowania zmienną Y, ale nie dział mi ten ADC Po czym to stwierdziłeś ? Skoro odczytana wartość z przetwornika jest wyznacznikiem ilości powtórzeń pętli FOR - NEXT , wytłumacz po co ta pętla . Chcesz sterować zmienną Y a gdzie jakikolwiek warunek , zależność aby zmienić jej wartość , po co pomiar napięcia jak praktycznie...
Nie sprawdzałeś wiadomości prywatnych :P Miałes tam link który mógłby się przydać. [url=http://mirley.firlej.org/node/1159]... Ktoś prosił żeby sprawę multipleksowania opisać więc coś tam naskrobałem a nie chce się powtarzać więc link :) Powinieneś mieć obliczone w pętli głównej wartości dla poszczególnych wyświetlaczy. Wtedy możesz mieć tylko jedną...
Obejdzie się bez przesuwania i masek. Jeżeli mamy zmienną Z to wartość bitu b tej zmiennej można zmieniać odczytywać, zapisywać wysyłać do portu lub co komu się podoba poprzez Z.b . To tak jak Portb.1 itp. Odczyt bitu pierwszego to np. Wynik = Z.1 (bit zerowy to Z.0) Zapis to Z.1=1 Warunek If Z.1 = 1 Then ... i tak dalej.... Jeśli dotyczy to zmiennej...
Kolega to potrzebuje do sterowania syntezą Saa1057. Instrukcja Dat = Wpis.x w pętli wpisuje do zmiennej Dat kolejne bity zmiennej dwubajtowej o nazwie Wpis Czyli jeśli Dat = Wpis.0 to w zmiennej Dat powinien znaleźć się najmłodszy bit zmiennej Wpis. Do syntezy potrzebna jest funkcja podająca na końcówkę portu kolejne bity dwubajtowej zmiennej Wpis począwszy...
' D.CH.ELECTRONICS INC ' Program sterownika rolety licznikiem jest port EEDR Config Portb = &B11111100 ' ustawiam pind.7 i 6 jako wejści dla S1 i S2 Portb = &B11111111 ' stan spoczynkowy Dodano po 9 Tak wygląda kod źródłowy do tego układu. Układ steruje pracą silnika DC pracującego na napięciu 12V. Sterowanie odbywa się poprzez zmianę polaryzacji za...
Znalazłem kod tablicy świetlnej, 8x8 sterowanej przez rejestr 74164, niestetypo załadowaniu programu na tablicy świecą się tylko trzy kolumny diód :(. Czy ktoś mi pomorze to rozgryść? 'Program tablicy świetlnej 'Sterowania multipleksowe wyświetlaczem matrycowym 7x5 LED 'Częstotliwość sterowania kolumn wyświetlacza wynosi ok. 333 Hz 'czyli częstotliwość...
Pisze właśnie program obsługujący matrycę LED 126 na 15 mam sobie prototypowy programik który wygląda tak : Config Timer0 = Timer , Prescale = 8 On Timer0 Tim0 Load Timer0 , 200 Enable Timer0 Enable interrupts Do For Da = 0 To 240 Dat(da) = 128 Next Da Loop End Tim0: Nr2 = Nr2 + 1 Nr3 = Nr2 + 15 Nr4 = Nr3 + 15 Nr5 = Nr4 + 15 Nr6 = Nr5 + 15 Nr7 = Nr6...
Witam, Mam problem. Chodzi o listingi z książki Marcin Wiązania - Programowanie mikrokontrolerów AVR w języku Bascom W książce są dwa przykłady sterowania matryca Led 5X7 Pierwszy przykład z książki ma za zadanie wyświetlać znaki po kolei i to działa. Natomiast drugi listing ma za zadanie przesuwać znaki z lewej do prawej. I to już nie działa. Schemat...
Kurcze ale malutki jestem... :D Po skrócie 1. Nie używałem JTAG-a i ta wiedza póki co nie jest mi raczej potrzebna. 2. Wiem jak ustawia się fusebits, ale jak napisałem na AT mam wyłączony JTAG a na AT168 nie. Jednak magistrala na AT168 działa bez problemu i to na porcie C z włączonym JTAG-iem 3. Rezystor podciągający dobrałem metodą prób i błędów staneło...
A ja napisałem program sterownika dwóch silników krokowych na jednym Attiny2313 i powiem że chodzi to pięknie :) . Jest możliwość wybrania 4 prędkości obrotowych , oprócz tego oba koła mogą kręcić się w tą samą stronę (w tył lub w przód) , albo też pojedyncze kółko (też do wyboru kierunek) . Za pomocą 2 + 4 przycisków ' Sterowanie silnikami krokowymi...
Dzięki kolego za kod, widzę że jest to kod obsługi jakiegoś zegarka, bardzo podobny kod znajduje się u M.Wiązania. 'Program multipleksowego sterowania czterema wyświetlaczami '7-segmentowymi LED poprzez dekoder 4543 'cyfra załadowana do A będzie wyświetlana na wyświetlaczu 1 'cyfra załadowana do B będzie wyświetlana na wyświetlaczu 2 'cyfra załadowana...
Witam! Mam problem z przerobieniem kodu tablicy świetlnej z wyświetlaczem matrycowym led. Posiadam kod z książki Marcina Wiązani - Programowanie mikrokontrolerów AVR w języku Bascom przerobiony według instrukcji użytkowników w temacie: 'Program tablicy świetlnej 'Sterowania multipleksowe wyświetlaczem matrycowym 7x5 LED 'Częstotliwość sterowania kolumn...
Witam Chciałem zbudować termometr z 64 czujnikami DS18B20, na układzie Atmega 2560. Konfiguruje sobie każde wyprowadzenie portu po kolei jako 1-wire. Do 44 czujnika temperatury są odczytywane, jeśli wprowadzę 45 czujnik w programie to po przejściu pętli do czujnika T1 otrzymuję wartość 0 stopni na każdym z czujników, jeśli mam 44 czujniki to wszystko...
Witam Mam taki programik troszke posklejany ale wyskakuje błąd co robie nie tak . label not found [_ENDIFO ] $regfile = "m8def.dat" 'Atmega8 $crystal = 8000000 'Kwarc 8MHz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.1 , Db6 = Portc.0 , Db7 = Portb.5 , E = Portc.3 , Rs = Portc.4 '*************************************.....
Najtrudniej analizuje się własny kod, bo zawsze patrzy się przez pryzmat wiedzy o tym co on powinien robić i nie dostrzega się drobnych błędów :) Zgadzam się z tym w 100%. Przy Bascomie rzadko sięgałem do PDF'ów kontrolerów, przy C nie da się bez tego wszystkiego zrobić. Bez tych 500 "przekręceń" licznika nawet w Bascom by nie poszło, jak zwykle zbyt...
W najbardziej prymitywny sposób możesz to zrobić tak jak napisałeś, ale rozdzielając odstępami czasu pomiędzy kolejnymi sekwencjami: Portd=&B10000000 waitms 200 Portd=&B11000000 waitms 200 Portd=&B11100000 waitms 200 Portd=&B11110000 waitms 200 Portd=&B11111000 waitms 200 Portd=&B11111100 waitms 200 Portd=&B11111110 waitms 200 Portd=&B11111111 waitms...
Przepraszam oczywiście Ahcinga masz racje. Zaraz to zmienie. Blad wynika pewnie z oznaczeń portów b.0 i b.1 musiałem potraktować to z rozpędu to jako wartośc. Ja bym zamiast elseif uzył kolejnej pętli warunkowej if...then..., ale to raczej kwestia przyzwyczajenia Pozdrawiam P.S No, no pierwszy raz widzę żeby któraś z "young lady" udzielała sie w dziale...
Co do kwarcu to definiujemy go zawsze, niezależnie od tego czy proc pracuje na zewnętrznym, czy na wewnętrznym, bo to jest informacja dla kompilatora, wg jakiej wartości ma wyliczyć czasy dla różnych instrukcji. Jeżeli to jest "nówka sztuka" to pracuje na wewn. 1MHz. Jak sam zauważyłeś, instrukcja "Loop" powinna znajdować się po ostatnim "Endsub", ale...
to zatrzymanie timera przed załadowaniem wartości jakby pomogło (przynajmniej nie zachowuje się dziwnie) teraz miga w równych odstępach ... Home Lcd "P=" ; P ; "us" Lowerline Lcd "I=" ; I ; "us " ; Licznik If Licznik = P Then Portd.2 = 0 End If If Licznik >= C Then Portd.2 = 1 Licznik = 0 End If ... Dobra odczepiam się od portów :) I już mówię dlaczego...
tak jak piszesz reti używasz tylko do powrotów z przerwań, natomiast samo ret do powrotów z funkcji (podprogramów) aby dosyć jasno pisać kod należałoby się trzymać pewnej zasady, o którą czasem wiadomo ciężko ale... .... otóż po tei inicjalizacji robisz tzw pętlę główną (zamkniętą) - występuje ona w każdym języku wyższego poziomu jak Bascom lub C. czyli...
A spróbuj tak: Odczyt=Temp Dim Jednostki As Byte , Dziesiatki As Byte ' cyfry do wyświetlania temperatury Dim Temp As Byte ' temperatura Dim Pompka As Bit ' sterowanie pompką Dim Odczyt As Byte Dim Cyfrybcd As Byte Dim Ktorywysw As Bit Enable Interrupts ' oblokuj przerwania Enable Timer0 'odblokuj timer0 Enable Timer1 'oblokuj timer1 Config Timer0 =...
Witam. Sekwencja to kilkanaście sekund, odtwarzana w kilkuminutowej pętli. Proponowane wykorzystanie timera daje jedynie odmierzanie owych 1ms impulsów dla liczników i zapewni jedynie większą dokładność pomiaru niż waitms. Z tym nie ma problemu. Komenda ta zapewnia mi to czego potrzebuję i z tym nie mam problemu. Wykorzystanie tablicy to pomysł wart...
Wg opisanej zasady powinien działać poniższy program ‘ Program swiatła samochodowe – opis działania ' ‘ Po włączeniu zasilania, gaszone są swiatła postojowe i mijania ' (gaszenie w sensie wyłączenia przekaźników) ‘ Program czeka na pojawienie się sygnału zapłonu ze stacyjki ‘ Następnie program czeka na znikniecie...
Co to jest to 'disp1'? czy jest to jakas zmienna czy alias jakiegos portu np. portb? Bo jezeli zmienna to sie nie dziw program nie ma szans przepisac jej wartości na port, gdyż nigdy nie wychodzi z pętli.
Porozstawiałem znaczniki tak jak proponowałeś z tego co mi wyszło to program bezproblemowo przechodzi do pętli głównej ale wykonuje ją kilkadziesiąt razy zanim zmieni wyświetlaną wartość. Niestety nie mam już portów na lcd, wszystko multiplexuje na ośmiu 7-segmentowych wyświetlaczach. Znacznik dałem w pętli głównej zaraz po [syntax=basic4gl] If Sekundyj...
Witam. Napisałem program do migania diodami i mam trzy pytania: 1.Czy da się ustawić cały port w stan spoczynku (coś w stylu PORTD = 0)? 2.Czy po każdej komendzie IF trzeba pisać END IF, czy da się to jakoś ominąć? 3.Czy poniższy kod jest poprawny, czy będzie działał? 1. Tak, możesz tak pozostawic. Bascom akceptuje kilka form ustawienia poziomu pinów...
Karol, miałem Ci napisać :P przez komunikator.. :D ale pisze tu.. może się przydać komuś :) pierwsze co to podam Ci pętle na 1us :) przy 16MHz w kodzie ASM $asm ldi R21, 0 delay_1us: inc R21 cpi R21, 4 brlo delay_1us $end asm lub pisany kod z głowy :P ale jeszcze do udoskonalenia... :P całego przerwania na podstawie ostatniego Twojego skrawka kodu......
Ten fragment nie jest najwłaściwszy, bo niewiele z niego wynika. Przeróbkę należy rozpocząć od odnalezienia warunków odpowiedzialnych za porównywanie aktualnego czasu z czasem w którym ma zostać załączony buzzer. Rozumiem, że w oryginale istniała możliwość 'nastawiania' czasu załączania buzzer'a. Dalej odnaleźć fragment odpowiedzialny za sprawdzania...
Comer3 Nic to nie dało po zmianie z portx.y na pinx.y przy sprawdzaniu stanów portu tak jak i cofig portx.y = input tu kod po korekcie $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.4 = Input 'pinb.4 jako wyjście = config Portb = &B00110000 (piny b.3 i b.4 jako output) Config Pinb.3 = Input 'pinb.3 jako wyjscie Config Portb.2...
[syntax] Config Rc5 = Pind.3 Ddrb = &B11111111 Portb = &B00000000 Config Portd = Output [/syntax] Wystawiam na port B kolejno H i L w pętli. Do portów mam podłączone rezystory z zakresu 1.2k - 40k i o ile na porcie jest stan L to rezystancja wynosi 4.3k (nie ma takiej wartości w układzie) i się nie zmienia
Masz w sumie do odczytania następujące sygnały: 4 sterujące włączaniem poszczególnych wyświetlaczy i 7 sterujących włączaniem poszczególnych segmentów na wyświetlaczach. Te sygnały musisz "pociągnąć" bezpośrednio z wyjść procka sterującego wyświetlaniem LED'ow - przed tranzystorami sterującymi. Jeżeli byłby to jakiś układ specjalizowany, gdzie od razu...
Napisz w Visual Basicu (lub innym) program z przyciskami, ptaszkami itd. do wyboru diody, zakoduj to w bajcie i wyślij go przez RS232 do µC. W programie µC wstaw instrukcję input w pętli tak aby reagowała na transmisję z PC. Odebraną wartość zapisz w rejestrze portu, do którego podłączysz diody. Jak nie wiesz jak z poziomu Visual Basica dobrać...
Nie chciał bym za Ciebie pisać tego programu, bo jest to naprawdę proste zadanie i dlatego spróbuj sam napisać go jeszcze raz od początku wg np. takiego algorytmu: Ustaw timer powiedzmy na 10khz aby każde przerwanie wykonywało się co 100 mikrosekund. Możesz też gęściej od tego zależy dokładność - tu 100us czyli 0,1ms Zdefiniuj sobie zmienną licznikową...
Pozmieniałem sporo w programie. Zastosowałem się do sugestii skrócenia głównej pętli teraz praktycznie jest bardzo krótka a na końcu ma instrukcję waitms 400. Zauważyłem że program jest bardzo wrażliwy na długość głównej pętli gdy tylko znalazła się jedna linijka za dużo program odczytywał tylko wartość sekund z PCF8563P. Stosy ustawiłem na 128 a i...
Owszem w konfiguracji Timera głupi błąd, ale ku mojemu zdziwieniu przerwanie działało. W liczeniu czasu chyba się koledze przecinek przestawił. Przerwanie w teorii kompilatora bascom trwa ok 0,16ms. W praktyce: po dodaniu w przerwaniu " toggle portb.0" częstotliwość generowanego przebiegu prostokątnego to 3,289kHz więc przerwanie wykonuje się z częstotliwością...
Witam. Uczę się (staram sie) programowania w BASCOM. Orłem nie jestem. Do nauki używam książkę "Marcina Wiązania - Programowanie mikrokontrolerow AVR w jezyku Bascom". Pierwsza lekcja opisuje prosty kod: $SIM 'dyrektywa opuszczenia instrukcji 'opóźnienia $REGFILE = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $CRYSTAL...
Ludziska. Skoro dodatkowy licznik programowy Wam się nie podoba, to trzeba kopiować wartość licznika sprzętowego do zmiennej i porównywać (mniejsze, większe) z tablicą wypełnień. Cały "PWM" wtedy należy przenieść do pętli głównej. Oczywiście Prescaler = 1 nie jest najlepszym rozwiązaniem w takim wypadku. Jeśli nie jest potrzebna dokładna synchronizacja...
Pobawiłem się dziś chwilkę programowym PWM. Jest to rozwiązanie na 8 kanałów - 25 może być ciężko pociągnąć ale oczywiście możesz próbować rozbudować program i zmienić częstotliwość zegara czy wywołania przerwań. Pierwszy to demonstracja tworzenia w zasadzie dowolnie biegnącego światła - dane umieszczamy w liniach Data (wartości od 0 zgaszone do 8 max...
O taką odpowiedź własnie mi chodziło. Rodzi sie kolejne pytanie: Skoro timer0 mam już zajęty generowaniem impulsu służącego do naliczania sekund... Mam zaprząc do obsługi wyświetlacza kolejne przerwanie, czy wpakować przełączanie anod, i szukanie odpowiedniej wartości dla portu, na których wiszą katody w tym samym miejscu, co inkrementacja zmiennej...
Jak nie ma migać, jak w pętli do-loop masz toogle. Ogólnie to twój program jest do kitu. W pętli do-loop sprawdź czy coś się zmieniło, jeśli tak, to skocz do podprogramu. Tam toogle, zapamiętanie nowych wartości, mała przerwa, aby nie migać i powrót. Napisałem w notatniku, ale chyba złapiesz o co chodzi. Spróbuj tak: $regfile = "m32def.dat"...
no właśnie przez ten program padły mi 3 Atmegi8 To jaki program wgrywasz do procka nie ma nic wspólnego z tym co namieszałeś w fusach. Podaj więcej informacji o tym jak doprowadziłeś do ich blokady. Ja, pomimo że już atmeg dzieeeeesiątki zaprogramowałem, ZAWSZE najpierw odczytuję wartość fusów, potem ją edytuję i zapisuję z powrotem (chyba, że np....
Witam, osobiście bym zrobił to w ten sposób: 1)Jak masz "normal" i procesor wykona wszystkie zawarte w nim funkcje(procedury), wtedy dajesz Do...Loop...End i tam umieszczasz funkcję np. z if`ów która po naciśnięciu danego przycisku przenosi cię do następnego podprogramu(Sub`y), i tak w kółko. a/b) Tutaj możesz zrobić to na zasadzie, że w/w pętli dać...
Parę lat temu w liceum nauczyciel pokazywał mi metodę przekazywania tego typu zmiennych poprzez liczby binarne, np ostatni stan wyświetlacza z przykładu byłby interpretowany jako 00100, tylko nie pamiętam co i jak... ;) B100=4 ;) Ja bym to napisał tak (przyciski między pin a masę): Cls : Cursor Off Dim Stan As Byte , X As Byte , Blokada As Bit...
Cześć Chciałem prosić kogoś o wskazówkę jak poradzić sobie z problemem wyświetlania wartości "Wartosc2" poniższego kodu. Mój problem polega na tym że w momencie naciśnięcia przycisku ( w programie to Up, Dwn ) gdy na wyświetlaczach jest np 1.1 wyświetlacze "resetują" się i wskazują wartość 00 po zwolnieniu przycisku wyświetlona zostaje poprawnie kolejna...
Obawiam się, że bez "sił zewnętrznych" typu przycisk może być ciężko... Można próbować poczynając od wystartowania timera połączonego z odczytywaniem wiszącego (nie podciągniętego) pinu albo lepiej odczyt stanu portu analogowego (z podłączonym czujnikiem temperatury, światła czy co tam kto jeszcze wymyślił) i w zależności od jego stanu przemielenie...
no z tym twoim 100Hz to nie mam pojęcia co się dzieje - ale ja już czasem różne dziwne rzeczy miałem w Bascomie kiedyś przy korzystaniu z Wait'ów w jakichś specyficznych sytuacjach. Oczywiście nie zwalam tu żadnej winy na Bascoma - bo zwykle czas gonił i nigdy nie miałem go na tyle aby dogłębnie przeanalizować co było nie tak - więc nie wiem - ale wymyślałem...
Witam mam problem z programem do trawiarki mianowicie znalazłem na necie program do sterowania trawiarką chciałem do tego dopisać wybór menu żeby było jeszcze był drugi tryb sterowania trawiarką. Wgrałem program do uC i działało poprawnie potem chciałem wgrać ten sam program bez żadnych zmian na inna ATmege8 i okazuje się że teraz program działa trochę...
bascom pętli bascom odczyt portu bascom czytanie portu
500gb seagate barracuda magnum wtrysk karta pamięci goodram
renault master usterka elektr samsung ue32d6500
Brother DCP-115C Windows 10 – drukarka przerywa wydruk, brak skanera lub odwrotnie na dwóch komputerach Zamiennik układu 70966FB - analiza i porady