Nastepnym razem napisz jaki masz blad, na moje to zapis powinien byc i=i+1 oraz i=i-1
Nie do końca tak jak myślisz . Jeżeli liczba ma mieć postać xx,x to zamiast np. 12,5 * 3 = 37,5 do obliczeń biorę liczby 125 i 3 . Wynik 125*3 = 375 Jeżeli w programie mam ten wynik porównać z liczbą 35,0 to porównuje z 350 ( napisz program operujący na liczbach zmiennoprzecinkowych a potem na całkowitych i porównaj rozmiar i szybkość działania , wykonując...
Incr - inkrementacja czyli Z=Z +1 Decr - dekrementacja czyli Z=Z - 1 Home - ustawienie kursora na pozycji 0,0. Polecam polskojęzyczny help do Bascoma tam wszystko pięknie pisze :)
Czytam i sam się pogubiłem hehe . Czy tu chodzi o względne przesunięcie (tmf) czy bezwzględne (satanistik). Parę miesięcy temu robiłem sterowanie PID dla servo Xmega w bascom . [youtube]https://www.youtube.com/watch?v... Nie obyło się bez problemu , który polegał na zliczaniu bezwzględnym więcej niż 65535 impulsów . Mój wpis z innego...
Nie ma potrzeby ustawiać adresów zmiennych "na sztywno". Ponieważ Bascom dla zmiennych wielobajtowych , stosuje zapis typu Little Endian to kod może wyglądać tak: Dim Zmienna As Word Dim Zmienna_lo As Byte At Zmienna Overlay Dim Zmienna_hi As Byte At Zmienna+1 Overlay I nie obchodzi nas pod jakim adresem znajduje się Zmienna , bo kompilator zadba o...
Niestety to nie działa, gdy inkrementacja zmiennych "przesunięcie1 i 2" się zeruje po osiągnięciu len(x) w warunku if...then w głównej pętli, cały napis z Bufor_text zanika i tworzy się na nowo. BASCOM domyślnie indeksuje od 1, dlatego z zerem źle działało. Zmienić 0 na 1 , >= na > i powinno być ok. Dodatkowo można poprawić warunek dla Left , bo teraz...
i co z tego ze pije, za swoje pije!. Z mamą i bratem mamy rente na spółe :P fakt faktem że zapomniałem o wyświetlaniu od końca (po siarce z Machowa są takie efekty), nie mnie idea postępowania chyba jest oczywista. co do mnożenia przez -1. Negacja i inkrementacja to raczej robiona jest sprzetowo. Ciekaw jestem ile bascom potrzebuje cykli na taki zabieg
Co zrobić żeby ustawić czas np 300s ? Różnego rodzaju działania matematyczne nie wchodzą w grę, ma być prosto i płynnie. skoro przeszkadza ci wprowadzenie dodatkowej zmiennej typu byte i jej inkrementacja - bo to przecież już jakby nie patrzeć działania matematyczne (choć może się nie orientujesz ale samo polecenie wait także wykorzytuje operacje matematyczne)...
W kilku kolejnych odcinkach kursu będzie opisane jak podłączyć DMA i zrobimy prostu generator DDS. Panie inżynierze, nie każdy choćby na oczy widział wydział elektroniki. W tym DMA mi sprawiło trudność chyba to że w adresie docelowym też jest inkrementacja, a ja zmieniałem na Fixed, bo DAC ma przecież stały adres. A to działa z ustawionym INCrement....
Sądzę po wszystkich wypowiedziach, że problem tkwi nie w nieprawidłowym, czy źle działajacym programie, a w jego organizacji logicznej. Dla wyświetlaczy led Bascom prawdopodobnie nie dodaje sam z siebie żadnych opóźnień, natomiast dla lcd to i owszem. Inkrementacja zmiennej może w programie przebiegać z szybkościa "wolnego elektronu na wysokości lamperii",...
Ten timer 0 jest raczej nie potrzebny. Za bardzo komplikujesz sprawę. Zrób tak: $crystal = 12000000 Config Timer1 = Timer Gate = Internal Mode = 2 Config Timer0 = Tiemr Gate = Internal Mode = 2 Enable Timer1 Enable Timer0 Enable Interrupts Dim P1 As Byte Dim P2 As Byte pwm: // to sie robi jak przerwanie z timera przychodzi inc P1 // inkrementacja...
Adres jest ustawiany na 2 sposoby: bezpośredni wpis do pamięci instrukcją 'SET DDRAM ADDRESS' lub pośrednio - używając rozkazu przesunięć kursora. Przykładowo instrukcja 'CURSOR HOME' powoduje przesunięcie kursora na początek (0,0) - oznacza to ustawienie adresu 0x00. Inkrementcja kursora powoduje zmiane adresu DDRAM. Jeżeli wyświetlacz ma adres 1 linii...
Witam, Zacząłem pisać program na atmege8 w bascomie, do sterowania preampem tda8425 przez enkoder, wyświetlając to wszystko na LCD póki co 8x2. Program jest w fazie powstawania, ale mam kilka pytań co sądzicie o moich rozwiązaniach i czy tak w ogóle może być? Enkoder obsługuję przez INT0 i INT1, zbocze opadające. Jeśli wejdzie w procedurę przerwania...
przycisk progresywny? te materiały sam musisz chyba sobie wykombinować. robisz to za pomocą pętli , wciskasz przycisk , tworzysz sobie zmienną x = ileś tam milisekund która określa odstęp czasowy , w pętli zmieniasz sobie jakąś tam swoją inną zmienną, zmniejszasz x i czekasz x czasu, jeśli przycisk puściłeś to wychodzisz z pętli i the end.
Powtórna inicjalizacja (sygnał START) wymagany jest tylko w momencie w którym Master zapisuje do układu adres rejestru z którego następnie chce odczytać wartość (FIG. 17 z dokumentacji). W przykładzie z pierwszego postu powtórna inicjalizacja podyktowana była "cechą" układów na I2C - automatyczna inkrementacja licznika rejestru. Jeśli wpisujesz wartość...
Wybudzaj przerwaniem watchdoga nie resetem. Ja bym to zrobił tak (w C, w bascomie pewnie też tak się da): W głównej pętli: - konfiguracja watchdoga z przerwaniem na jak najdłuższy czas- - wejście w power down - pętla nieskończona z ciągłym przechodzeniem do idle. W przerwaniu watchdoga: - wyzerowanie watchdoga - inkrementacja zmiennej odliczającej od...
Zawsze może też użyć w eepromie zmienną która będzie mówiła o tym ile resetów zostało już wykonanych i jeżeli będzie już zbyt dużo to inkrementacja adresu zapisu :p
Inicjacja timera w trybie normalnym, z odpowiednim prescalerem. Zezwolenie na przerwania od OVF + załadowanie timera wartością (0xffff-wyliczona wartość). Tak będzie działać z 10Mhz. W każdym przerwaniu przeładowanie timera + (de)inkrementacja zmiennej globalnej :) i to tyle folks;-)
No właśnie- przerwanie od Timera co 16.384 ms a w przerwaniu tylko inkrementacja jakiejś zmiennej. No ale to Bascom- odkładanie na stos i zdejmowanie zajmie jeszcze kilkadziesiąt instrukcji po 0.0625us przy zegarze 16MHz. Ale nawet wtedy to będzie poniżej 6us. Wystarczy aby obsługa przerwania INT0 była krótsza od 16ms. Zwłaszcza że przerwanie zewnętrzne...
wprowadź w programie flagę statusu połączenia ,przy odbieraniu danych flaga przyjmowała by wartość 1 ,w przerwaniach od timer wprowadź warunek jesli flaga jest rózna od 0 następuje inkrementacja jej , przy istnieniu transmisi flaga przyjmuje wartość 1 jesli jednak brak transmisji ,w przerwaniach od timera wartość flagi bedzie rosła ,do ilu ? zależy...
(...) // Włącza lub wyłącza migotanie LED } else if (reading == HIGH) { buttonPressed = false; } } toggleLED(); // Wywołuje funkcję odpowiedzialną za migotanie LED lastSwitchState = reading; } Proszę zmień go tak aby po 2, 4, 6....10, 12 zwarciu SW do GND, LED się wyłączył. Zrozumiałem, wróćmy zatem do podanego przez Ciebie kodu i wprowadźmy potrzebne...
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...
Tak słyszałem. Ale jak to polecenie rozwiązuje mój problem? Ono tylko podaje kolejne liczby które wydają się losowe - w dodatku za każdym razem podaje takie same wyniki ,po resecie więc musiałbym zapisywać seed w EEPROMIE. Znacznie lepiej ustawić w programie ,że gdy użytkownik naciska przycisk to następuje inkrementacja zmiennej pomocniczej a w chwili...
Właśnie wrzuciłem do avr studio prostą, pustą pętlę for i rzeczywiście instrukcje które tam kompilator bascoma nawstawiał to przyprawiają o zawrót głowy. Nie ma co się dziwić, że później taki wielki kod powstaje. I rzeczywiście pętla się nie kończy, ani taka z dekrementacją ani taka z inkrementacją, czyli spokojnie można sobie odpuścić te iram'y. Bascom...
->rpal Nope :] Uzycie DMA i szybkiego (np. z STM32 :):) ) SPI daje dobry transfer na poziomie 36Mbit. Przy 8 bitach przetwornika najoptymistyczniejsza wersja to 4.5MSps ktore da sie przepchnac... W oscyloskopach stosuje sie FIFO, nie "pamiec". Wyobraz sobie budowe maszyny stanu obslugujaca pamiec (linie WR,CS,adres i jego inkrementacja...) na prostych...
A przerwania chociarz umiesz?, jedno wyjscie z impulsatora podłaczasz pod przerwanie, drugie wyjscie do jakiegokolwiek innego pinu. w obsłudze przerwania od impulsatora sprawdzasz stan tego drugiego pinu i jeśli jest on równy 1 to wykonujesz jakąś tam operacje (np inkrementacja), jeśli = 0 to wykonujesz coś innego (np dekrementacje)
Witam, próbuję od wczoraj przerobić wprost w Bascomie, dokładnie w przerwaniu pewne polecenie na asembler: PORTA = Lookup(cyfry(nr_wysw) , Tabela) gdzie: cyfry to --> Dim Cyfry(4) as Byte nr_wysw --> Dim nr_wysw as Byte Tabela - to tabela zdefiniowanych cyfr dla wyświetlacza LED mam zrobione wyświetlanie multipleksowane i wszystko działa...
http://obrazki.elektroda.net/8_127400139... Witam Chciał bym przedstawić sterownik, który poczyniłem kilka miesięcy temu. Sterownik posiada 6 kluczy tranzystorowych na napięcie 200V, prąd do 6A oraz 2 gniazda 230V sterowane przekaźnikiem o obciążalności prądowej do 10A. Zadaniem tegoż urządzenia jest sterowanie poziomem światła zachowującego...
No i o to chodzi- ale jak takie posty zaznaczyć jako rozwiązania problemów? No może nie wszystkich- ale większości. Przyklejone- krótko istnieją. Edit; Jak znajdę ULN w moim bałaganie to sprawdzę kod zumka. A teraz zmieniony kod- zgodnie z sugestiami _Robak_- inkrementacja w przerwaniu. $regfile = "m8def.dat" $crystal = 8000000 '*********...
Analizuję od początku, uwzględniając wcześniej nabyte informację. TestFor123 1. wyłączenie przerwań 2. odczytywanie znaku z UART, pakowanie do zmiennej bstatus 3. wysłanie odebranego kodu znaku po uart (coś w rodzaju echo?) 4. Jeśli 5 razy po UART napłynie znak inny niż 123 lub 124 uP zostanie zresetowany 5. Gdy napłynie znak 123 lub 124 zmienna bkind...
Staram sie zmusci do wspopracy LCD od 3310 na SPI oraz PCF8544 (zegar RTC) na i2c do wspopracy razem z mega8535. Osobno wszystko smiga, razem nie chce. Jak tylko wlacze linijkie odpowiedzailna za skok do procedurki odczytu godziny z PCF'a to wyswietlacz od noki robi sie bialy i nci nie wyswietla. Program wyglada tak (wycialem deklaracje procedur, deklaracje...
przestawiłem wszystko (prawie) oprócz CKOPT-a którego dalej nie ma.. a to jest mój program.. chodzi poprawnie jak ustawię $crystal = 1000000 a jest przecież $crystal = 16000000 $regfile = "m32def.dat" ' specify the used micro $crystal = 16000000 ' used crystal frequency '$crystal = 1000000 '****************************** KONFIGURACJA ******************************'...
Udało mi się trochę odchudzić program. Wykorzystałem tablice + inkrementacja numeru komórki w tablicy. Chciałem wykorzystać FOR - NEXT, ale coś nie działa jak trzeba Do Locate 1 , 1 Lcd A Locate 1 , 7 Lcd B Locate 2 , 1 Lcd C Locate 2 , 7 Lcd D Locate 1 , 13 Lcd E Locate 1 , 19 Lcd F 'If Szukaj = 0 Then Call Przeszukaj_i2c 'End If Loop End '***********************...
Witam Zabrałem się wczoraj za napisanie jednego z pierwszych programów (chyba 3). Ogólnie działanie programu zadowala mnie lecz chciał bym poprosić osoby bardziej doświadczone o wskazówki merytoryczne względem kodu tutaj podanego (bo coś na pewno można poprawić na lepsze). Podany kod ma sterować trawiarką ( wiem ze troszkę gotowych wsadów jest, mimo...
No więc kiedyś kolega drzasiek dumał nad powieszeniem ADC 8 bit na szynie EBI w xmega. Nie wiem czy to zrobił czy nie ale ja tak zrobiłem. I niestety jestem nieco zawiedziony. Przykładowo na wewn ADC da się wyciągnąć ok 6-8MSPS w 8bitowej rozdzielczości przy 48Mhz, nie jest to wcale zły wynik na adc w avr i bascom. Problem jest w tym że DMA w połączeniu...
Witam! Od jakiegoś czasu bawię się AVR Studio 4 po przesiadce z BASCOMA. Jak narazie jest nieźle ;) ale mam mały problem. Mianowicie, chciałbym sobie przy pomocy ADC próbkować sygnał z częstotliwością X (dajmy na to 8kHz) i zapisać go do tablicy. O ile w BASCOMIE napisałem sobie taki programik (przerwanie Timer2 8kHz, w przerwaniu odczyt ADC do tablicy...
tak wyglada teraz pogram 'zegarek v.1.0 Dim Godz1 As Byte , Godz2 As Byte , Minut1 As Byte , Minut2 As Byte Dim Sek1 As Byte , Sek2 As Byte , Wysw As Byte , Kropka As Bit , Po As Byte Dim Sekjed As Byte Config Portb = 255 : Portb = &B255 Config Portd = &B1111100 : Portd = &B1111111 Config Timer0 = Timer , Prescale = 64 Config Timer1 = Timer...
Jak rozumiem chcesz defakto dzielić częstotliwość przebiegu jeżeli tak to nic prostszego: pętla for inkrementowana stanem wysokim np. i po osiągnięciu określonej ilości powtórzeń zmiana jakiegoś pinu "wynikowego" na stan przeciwny. problem się zacznie jak będziesz chciał podzielić przez liczbę inną niż wielokrotność 2 nie mam pomysłu jak takie dzielenie...
Napisz tak: Dim Zmienna As Byte Zmienna = 0 Config Intx = Low Level | Rising | Falling [ | Change ] 'Konfiguracja reakcji na sygnał przerwania 'za x podstaw nr przerwania wybierz jeden ze sposobów pobudzenia kocówki uC Enable Interrupts 'Uruchomienie przerwań globalnych Enable Intx 'Uruchomienie przerwania INTx On Intx Obsluga_przerwania 'wskazanie...
A jak napisać taką inkrementację stałą żeby dodawała jeden co powiedzmy te 100 ms? EDIT: Już sobie poradziłem, dzięki za pomoc.
użyj timera oraz przerwań ,wprowadź do programu zmienną która bedzie ulegać inkrementacji podczas przepełnienia timera
1 Nadal źle napisane Load Timer. 2 Brak inkrementacji zmiennej Sekunda. 3 Sprawdzanie warunków powinno być w pętli lub (gorsze rozwiązanie) w przerwaniu.
Wszystkie zmienne programu są przechowywane w RAM. Kod inkrementacji czasu jest błędny - instrukcje If powinny być skaskadowane - nie ma sensu sprawdzać, czy minuty doliczyły do 60, jeśli wcześniej nie zwiększałeś licznika minut.
Menu można zrobić w następujący sposób, nie znam bascoma więc napisze szkielet w C: while (1) { if klawisz_up numer_opcji++; if klawisz_down numer_opcji--; if klawisz_enter {switch numer_opcji case 0:podmenu1;break; case 1:podmenu2;break; } zmień_napis_na_LCD; } Podmenu są zbudowane bardzo podobnie z tą różnicą że...
Wiązało by się to z koniecznością zapisywania seed'a do EEPROMU. Poza tym nie chcę zaprzątać sobie głowy tym RND bo ja mam tu prawi eprawdziwą losowość (o ile w ogóle prawdziwa losowość istnieje) dzięki inkrementacj tych zmiennych pomocniczych.
Te 68 to zapisana konfiguracja i mozna ja pokazać jako: &b01000100. Ustawia odpowiednia konfiguracje wejść, ustawia auto inkrementację (czyli kolejna dana odczytana będzie pochodziła z innego kanału) i ustawia kanał ch0 do odczytu jako pierwszy. Wszystko w dokumentacji.
Tak, ustaw linie portu jako wejścia. Zapewne przygasa z powodu zbyt dużego prądu wyjściowego uC. może źle się wyraziłem. Ekran przy naciśnięciu przycisku mignie i na 100% nie jest to spowodowanie przez pobieranie zbyt dużego prądu z uC. Ps. ustawienie linii portb jako wejścia, także nie rozwiązuje problemu = ekran dalej miga w takt inkrementacji zmiennej.
mi sie pojawia -20.9...-20.0...-21.0 to w ogóle jest jakos bez sensu znajomy mi mówil że on tylko neguje część po przecinku i ni erobi zadnej inkrementacji... i byż tu mądrym!
Dzielnik przez 8 i 9 możesz zrobić na którymś timerze sprzętowym wbudowanym w procesor. A realizacja dzielnika przez 8,5 musi być programowa: Próbkujesz sygnał wejściowy i każda zmiana stanu sygnału wejściowego powoduje inkrementacje zmiennej co daję dwie inkrementacje na okres sygnału (stan wysoki i stan niski liczone osobno). A dalej pozostaje wykrycie...
Kolega (at)yokoon użył komendy ' Config Lcd = 16 * 2' Czy ta komenda informuje sterownik HD44780 że ma pracować na 4 bity danych. Miałem podobną sytuacje jak pierwszy raz walczyłem z tym sterownikiem. Efekt był podobny. Sterowałem go z szyną 8 bitową. [syntax=cpp]void LCD_Initalize(void) { unsigned char i; LCD_DB4_DIR |= LCD_DB4; // Konfiguracja kierunku...
inkrementacja przerwać inkrementacja przerwaniu przycisk inkrementacja
lekcja pierwsza krzywa grzewczy grzejnik restart instalki
agregat prądotworczy depollution system faulty peugeot
Przenoszenie aplikacji na kartę SD w Xiaomi Błąd E9 w ciągniku Deutz-Fahr 60.0 S - przyczyny