Witam ATMega8 ma Timer1 16-Bitowy i do odczytu lub wpisu służą dwie dane: "TCNT1L" - odczyt lub zapis "dolnej" 8-Bitowej części i "TCNT1H" - odczyt lub zapis "gónej" 8-Bitowej części n.p. stan licznika "21456" odpowiada : TCNT1H =83 ; TCNT1L=208 bo 21456:256(pojemność TCNT1L=256)=83+208 Aby wszystko było OK to obie wartości (TCNT1H i TCNT1L) muszą być...
W fuse-bitach powinieneś mieć opcję eesave zaznaczenie opcji powoduje nie kasowanie eeproma przy kasowaniu układu .
bascom nadpisuje na wyświetlaczu i pozostają Ci poprzednie napisy musisz przed wyświetlaniem wyczyścić ekran komendą CLS
szczerze mówiąc to nigdy się jeszcze nie bawiłem z avr studio ponieważ nie programuje w C tylko w bascomie Nie musisz programować w C aby użyc AVR Studio do programowania. Tak jak wspomniałem poprzednio, analogicznie do Bascom, nadpisujesz odczytaną wartość aktualnych fuse bytes nowymi wartościami i naciskasz w dolnej części okna 'Program'. Podobnie,...
tak faktycznie to była pomyłka ale gadałem z kolegą darkomen na gg i okazało się ze miał kwarc 11,xxxMhz i tylko 9600b i bascom nadpisywał dane przed zakonczaniem wysyłania okazało się że PRINTBIN dane(1),1500 działa poprawnie
Co jest źle napisane? CLS!!! Nie kasuj wyświetlacza tylko nadpisuj. Użyj Locate y, x lub podobnych instrukcji.
Optymalizacja kodu wynikowego i Bascom? Nie rozumiem zasady działania Twojego programu. Czy ten kod sam się nadpisuje, zmieniając zajętość?
Nie wiem czy o to Ci chodzi ale jeśli piszesz zmienną "const hasło = 1234" to nie zapomnij że to jest stała i nie można jej nadpisywać
Nie znam bascoma, ale po tym co piszesz problem masz natury błędnego podejścia. Jak zabierzesz jeden czujnik to oczywiste jest, że urządzenie przy 1wire search zwróci czujniki w innej kolej kolejności. Np jak zabrałeś czujnik zwracany jako pierwszy (z "najmniejszym" numer seryjnym) to drugi czujnik stanie się pierwszym. Masz 2 wyjścia: - zapmiętać numery...
czyli zmieniając wartość idx jak napisałeś np. na 5 zmienia się również adres zapisu freq w pamięci eeprom i nie nastąpi nadpisanie jej w eepromie ? A tak ogólnie to układ syntezy do sterowania radia mam , ale właśnie brakuje mi zapisu częstotliwości tak aby nie nadpisywać poprzedniej
Użyj tej dyrektywy. Ona nadpisuje ustawienia w konfiguracji kompilatora.
Witam, Jak można zapisać pewny ciąg danych w kolejnym wierszu w plik CSV ? [syntax=basic4gl] Print "Zapisuje do pliku csv" Ff = Freefile() Open "plik.csv" For Output As #ff 'zapisujemy zmienne Dim B As Integer , C As Word A = 10 B = 25 C = 1234 Write #ff , A , B , C Close #ff [/syntax] Jeżeli tak zapiszę to każdy następny jest nadpisywany
A problemem nie jest przypadkiem nie tyle pamięć flash (bo tu BASCOM nie powinien dopuścić do nadpisania jakichś sektorów FLASH'a) co pamięć RAM? Czy przypadkiem stos i inne funkcje nie kolidują ze zmiennymi globalnymi i dlatego wszystko się sypie, bo nadpisuje się RAM?
No właśnie jeśli w programie przed pętlą główną nadam wartości zmiennym w eeprom np. zm_eeprom = "jakis tekst" to po resecie program wystartuje od nowa i zapisze z powrotem wartości początkowe w programie do eeprom ? W takim przypadku, po każdym resecie zmienna będzie nadpisywać nową ( taką samą ) zawartością. Jeżeli przewidujesz 1 reset co kilka dni,...
I chyba po POPALL przydałby się jeszcze dwa POP-y dla zdjecia zbędnego już adresu powrotu, którego POPALL nie zdejmie. Tak może być?? dokładnie - jak tego nie zrobisz, to z każdym przerwaniem będzie Ci rósł stos o 2 bajty, aż zacznie Ci nadpisywać jakieś dane - wtedy program się "wysypie". Aha.. w sumie na cholerę mi adres powrotu jak i tak skakać...
W symulatorze możesz sprawdzić czy program nie nadpisuje stosu. Komunikat pokazuje się w dolnej części okna symulatora "Frame or software stack overlap", można też sprawdzić w zakładce "uP". Jeżeli nadpisało stos ustawiasz wartości dla stosów na początku programu np.: [syntax=basic4gl]$hwstack = 32 $swstack = 16 $framesize = 32 [/syntax]
Aby ci nie mrygał wyświetlacz nie robisz cls tylko możesz nadpisywać teksty np. [syntax=vb] lcd "Slowo1" lcd "slowo "[/syntax] zamiast [syntax=vb]cls lcd "Slowo1" cls lcd "Slowo"[/syntax] a tu masz fragment z trybami menu [syntax=vb]If Trybprzycisk = 0 And Trybpomocnicza1 = 1 Then Incr Tryb Trybpomocnicza1 = 0 End If If Trybprzycisk = 1 Then Trybpomocnicza1...
Nie inicjalizujesz wartości Start_h_1 i Start_m_1. Po prostu wartości minut nadpisują godziny i czytasz dwa razy tą samą komórkę zawierającą minuty.
Sytuacja wywołana jest wadliwie napisanym programem. Zlikwiduj wszelkie GOTO bo uC skacze pomiędzy podprogramami jak szalony więc MUSI pójść w maliny. Zasada jest jedna - jeśli program wyskakuje z pętli głównej to musi do niej wrócić (może z podprogramu wyskoczyć do innego podprogramu ale ważne jest by wrócił tą samą drogą). Podprogramy muszą się kończyć...
Witam. Poradziłem sobie z tym problemem... była to głupota :) mianowicie wystarczyło ustawić odpowiednio w fusach BODa. Jestem początkującymi nie wiedziałem o tym... ale dzięki za pomoc Do kolegi Jarka: takich rzeczy nie robiłem, że wczytywałem a zaraz wyłączałem, domyśliłem się, że gdy spada na procku napięcie poniżej 2,5V to się dzieją dziwne rzeczy...
Dzięki za wszelkie pomysły. Immo udało się wyłączyć i zaprogramować tak by się nie nadpisywało, więc układ z drugim procesorem okazał się bez sensu. Temat zamykam. Dziękuję za pomoc.
Program to komputer pokładowy w samochodzie. Wszystko wyświetlane na LCD od siemensa, program do wyświetlania napisany przez Ciebie :) I teraz tak: program do wyświetlania wyświetla to, co ma w zmiennej Text (as string * 13). W kilku podprogramach obliczam przejechaną drogę, spalanie, itd. Jak obliczam spalanie, to mam np. wynik 115 (co oznacza 11,5...
zera zostaja bo ich nie kasujesz wcesniej tylko nadpisujesz. powyzej 99 liczba zajmuje 3 pozycje ponizej 100 juz tylko 2. jezeli nie usuniesz 3 to bedzie sie wyswietlac az nie nadpiszesz lub nie wyczyscisz wyswietlacza. For I = Licz To 0 Step -1 Locate 1 , 4 lcd " " Locate 1 , 4 Lcd I Waitms 5 Next I wyswietla 3 spacje, dziala szybciej niz cls bo nie...
A jak to ma działać na ciąg ? jak zmienna Uart jest nadpisywana za każdym razem nowym znakiem ? Musisz budować ciąg dodając znak po znaku do zmiennej tekstowej.
To akurat nie wina BASCOMa. Masz zmienne na 3 znaki podczas gdy potrzebujesz na 4: Volt = Fusing(v , "#.$$") Czyli znak, kropka (czyli też znak) i dwa znaki. Razem 4 znaki. Winą BASCOMa mogło być dopiero to że zmienne String wpływały na działanie przycisków. Ale jednak tak nie było. Teraz to przeanalizowałem i to jednak nie to. Przyciski...
Pewnie niewiele pomogę ale zrób to na zasadzie nadpisywania ekranu. 1. Zrób ekran z opisami 2. wykryj przyciski pilota i przypisz flagi, np. góra, dol, lewo, prawo - zakładając, że przycisk włączony to 1 a wyłączony to 0 3. sprawdź flagi i gdy np. góra=1 to; powtórz punkt 1 ale już z innymi opisami. 4. Nie zerujesz zmiennej góra, zerowana jest dopiero...
Ja nie znam BASCOM'a... Zapisujesz górną linię... Zapisujesz dolną linię... Przesuwasz okno w jakąś stronę... Zapisujesz dolną linię...(jak trzeba obie naraz to górną nadpisujesz przesuniętą, czyli spacja z przodu lub tyłu). Ja tego lepiej nie zobrazuje ...
W wyświetlaczu LCD można zdefiniować do 8 znaków i nie zależy to od uC. Nie znaczy to jednak, że nie można w trakcie wykonywania programu zmieniać tych znaków tuż przed ich wyświetleniem. W tym przypadku należy najczęściej używane zdefiniować na stałe a kilka przygotowywać bezpośrednio przed ich użyciem, po czym definicję nadpisywać inną. Nie jest to...
Witam Tak na szybko przyszło mi do głowy aby dodać jakiś znacznik w programie i jeśli będzie on włączony to określony obszar nadpisywać pustymi znakami. Może nie jest to rozwiązanie bardzo eleganckie ale chyba będzie działać jak się wszystko dobrze napisze. -- pozdrawiam
dzięki - jakoś przegapiłem i już miałem zapytać jak to jeszcze zapisać do EEPROM'a. jeszcze tylko jedno pytanie - w pdf-ie pisze , ze nie wolno nadpisywać bitów od 0 do 4 i 7. czy one są blokowane automatycznie, czy trzeba wpisać jedynki ( i 0 dla7.) do Configuration Register
Co do samego stylu ja dodam od siebie. 1. Odświeżanie danych na LCD - nie rób ciągle Cls, Cursor Off Noblink. Ta druga instrukcja tylko na początku programu, a zamiast kasować danych i wyświetlać od nowa, zrób to za pomocą funkcji Locate i nadpisywania odpowiednich miejsc. 2. Konfiguracja pinu sterującego przekaźnikiem na początek programu. 3. Waitms...
Widzę że na początku miałeś sprawdzenie pinb.4 i pinb.7 a teraz napisałeś pinb.5. Sprawdź jeszcze czy jak nic nie wciskasz to napięcie na pinb.4 i pinb.7 jest równe zasilaniu. Może zostaw tylko obsługę przycisków i dokładaj kod po kawałku i sprawdzał po czym przestanie działać. Rozumiem że odczyt godziny działa prawidłowo tylko klawisze nie przynoszą...
wygląda to tak jakby nadpisywał dane na wierzchu stosu i po zakończeniu procedury wykonywał skok w niewłaściwe miejsce. Jak to można sprawdzić w praktyce?
Jeśli już ustalisz gdzie ten plik ma trafić , na jaki dysk to będziesz zapisywał tylko jedną daną w jednym miejscu. Przydało by się nadpisywać dane - czyli polecenie Append a nie Output. No i oczywiście pętelka do zapisu kolejnego rekordu. Ale najpierw trzeba wskazać miejsce gdzie ten plik ma trafiać.
Program będzie źle działał. Gdy przycisk będzie przyciśnięty dłużej niż 200 ms. Taki scenariusz: 1. Włączamy zasilanie. 2. Przyciskamy przycisk i trzymamy go. 3. Wyświetli się SUPER 4. A za około 200 ms EXTRA. 5. I trzymając dalej przycisk, będzie nadpisywany tekst EXTRA. 6. Po puszczeniu przycisku program nadal będzie w podprogramie "Dalej"
Nie znam się na bascomie, ale widze, że wartości odczytane z zegarka są przypisywane do zmiennych, które są argumentami funkcji. Jeśli argumenty przekazywane są przez wartość, to wtedy dane z zegarka zostaną wpisane do lokalnych kopii tych zmiennych, przy kończeniu funkcji zostaną utracone. Jak wygląda przekazywanie zmiennych przez referencję? Jest...
DS-ów już działa, ale nie wiem jak dodać trzeciego. Przy sprawdzaniu ID 3 czujnika jest ono takie same jak ID 2, tak to próbowałem odczytać: Dsid1(1) = 1wsearchfirst() Do Dsid2(1) = 1wsearchnext() 'nadpisuje ID2 , ID3 Loop Until Err = 1 Do Dsid3(1) = 1wsearchnext() Loop Until Err = 1 Ja zaryzykuję stwierdzenie...
Dane na RS wysyła komenda print (program napisany jest w BASCOMIE). W przypadku terminala wszystko dziala ok i dane nie nadpisują się. Jak rozumiem każdy ze znaków składający się na string jest wysyłany na RS osobno. Czyli odbiór powinien wyglądać tak że`czekam na sześć znaków po wystąpieniu zdarzenia i dopiero zapisuję wszystko do RevS. Jeżeli to możliwe...
Po co jest Waitms 200 przy nadawaniu? Nie masz odpowiedniej zwłoki przed zmianą wartości Nadawanie po wysłaniu ostatniego bajtu (Print nie czeka na zakończenie wysyłania). Zmienna do której odbierasz komendę jest też za krótka (brakuje miejsca na enter). Pewnie nadpisuje jakieś zmienne ale na tyle mało ważne że to jako tako jeszcze działa. Ale po 3...
Nie wiem czy to jest powód, ale masz błędy w programie: Składnia: [syntax=basic4gl]Portb = &B00000010 Portb = &B00010000 [/syntax] Jest bez sensu, bo momentalnie nadpisujesz port nową wartością. Albo wywal pierwsze polecenie, albo daj: [syntax=basic4gl]Portb = &B00010010[/syntax] I tak samo w pozostałych miejscach, gdzie nie są rozdzielone instrukcją...
Są dwie możliwości : 1 - skasować zawartość , wyświetlić , odczekać około 0,5...2 sekund i ponowić cykl 2 -tak sformatować dane do wyświetlania aby miały zawsze tą samą długość , nie musisz kasować starych danych a tylko nadpisywać nowe
Podpowiedz: zmienna mozemy przekazac do procedury / funkcji dwojako: byval i byref. W pierwszym przypadku tworzona jest zmienna tymczasowa - kopia przekazanej zmiennej i jej wartosc jest STALA przez caly czas wykonywania procedury/funkcji (chyba ze ta swiadomie ja zmieni). W drugim natomiast do procedury/funkcji przekazywany jest ADRES zmiennej w pamieci,...
Kamyczek w tym kraju się już nikomu nic nie opłaca :D Wiem że można kupić gotowe, ale ... Po pierwsze, primo - wypełniam sobie wolne chwile Po drugie, primo - mogę poćwiczyć programowanie i ile się przy tym nauczę to moje Po trzecie, primo - satysfakcja że zrobiło się to praktycznie samemu ( z drobną pomocą kolegów z elektrody ) jest bezcenna ... i...
Witam serdecznie Problem polega na tym iż potrzebuje tworzyć dynamiczny znak tekstowy. Niestety polecenie Deflcdchar w swoich argumentach przyjmuje tylko elementy statyczne więc generowanie znaku w oparciu o tą funkcje odpada Wiem jednak że można te 8 znaków w wyświetlaczu nadpisywać w czasie pracy. Czy ktoś ma jakiś patent...? albo jakąś instrukcje...
Nadpisujesz gdzieś w pamięci ram procesora dane i dlatego program leci w krzaki z LCD, informacja "Source string could be too big to fit into target string" świadczy że do stringa wpakowujesz więcej niż 6 znaków które zdefiniowałeś, bascom nie ma zabezpieczeń i jak zniszczysz (wpiszesz więcej znaków niż zdefiniowałeś) to właśnie dzieją sie takie cuda...
Twój problem polega na tym że źle używasz instrukcji Spiin , zaglądnij do helpa. Drugi argument instrukcji to ilość bajtów do odczytu, zmienna Ls_byte przy twoich obliczeniach może przyjąć wartość większą niż 2 i podczas odczytu nadpisujesz inne zmienne. Zamień: [syntax=basic4gl]Spiin Ms_byte , Ls_byte 'odczyt 2 bajtów[/syntax] na: [syntax=basic4gl]Spiin...
zapytam z czystej ciekawości. Na jakim interfejsie Miałeś podłączony wyświetlacz ? EBI w trybie 3 portowym + zatrzaski dla LSB i MSB. Dzięki temu przez DMA przesyłane były słowa, które nie wymagały modyfikacji. Nie polecam. W tym przypadku założyciel posta otrzyma jedynie przesuwający się punkt, a nie pełny wykres na wyświetlaczu. Mylisz się, a Kolega...
Funkcja ma taki format: Ilość_skopiowanych_bajtów = Memcopy (źródło, cel, ilość_bajtów) . W moim przykładzie dane są prawidłowo kopiowane, tylko informacja o ilości skopiowanych bajtów jest błędnie zapisywana do zmiennej lokalnej (nadpisuje inną zmienną). Jeżeli wartość ma być zwrócona do zmiennej globalnej, jest wszystko ok. Sprawdzałem już na dwóch...
O Boski... wiesz to naprawde sprawia mi wielką trudność, a na dodatek w helpie też jest to tylko skrutowo opisane. 1. Jak zainicjować zmienną "i" ? 2. Myślałem że podam adres komórki 10 i że od tego momentu zacznie sie zpis przez kolejne komórki, aż zapisze 8 bajtów 3. Chciałem odczytać 8 kolejnych bajtów a nie jeden i go nadpisywać 4. Fakt przyznaję...
Spoko... wiem że można przed nawias wyciągnąć, ale wydawało mi się że nic nie uzyskam... późno było :). W pierwszej linijce nadpisujesz jednak zmienną D co w zależności od tego co autor ma zamiar z nią robić może mieć znaczenie.... Trzeba poczekać na wpis od autora pytania :)
Można tylko strzelać. Obstawiam, że problemem jest niedostateczna ilość pamięci SRAM i nakładanie się zmiennych, które są nadpisywane. Śmieci na magistrali zapełniały ci cały bufor, normalna transmisja nie i dlatego nie obserwowałeś wtedy problemu. To tylko hipoteza, nie znam Bascoma więc ci nie poradzę jak ją sprawdzić, jeśli przejdziesz na C to będę...
Ok. (doczytałem (str 99.), że po inicjacji bootloader (zdaje się, że chodzi o ten, konkretny bootloader) oczekuje na wartość 123 (programowanie flash) lub 124 (programowanie EEPROM). Oczekuje na wartość 123, czyli zapewne na przesłanie po sobie kolejno znaków "1", "2", "3" oraz kodu entera i powrotu karetki, tak przynajmniej zakładam. Chyba, że powinienem...
Acula ma rację. Nie można w pętli programu kasować wyświetlacza bo efekt będzie właśnie taki, a jeszcze jakbyś włączył mrugający kursor, to byś dopiuero się zastanawiał dlaczego nie dzała jak powinien. Najlepiej nadpisywać nowe znaki na stare (całą linie od razu), tylko musisz pamiętać o ustawieniu kursora na odpowiedniej pozycji - używając BASCOMa...
Zastosuj dwa bufory. Jeden do odbierania danych w przerwaniu, a drugi do pobierania znaków do wyświetlenia na LCD. Teraz po odebraniu jednego ciągu LCD zaczyna wyświetlać co trwa z 50ms. Jeżeli podczas wyświetlania zacznie przychodzić nowy text to zacznie on nadpisywać bufor i na LCD będziesz miał krzaki. Więc zastosuj dwa bufory. Odbieraj do jednego....
No cóż, wszystko się resetuje. Jednakże na dzień dzisiejszy jest napisany nowy soft. W języku C. Jest całkowicie nowe menu, temp wyświetlana jest jako duże cyfry (1 duża cyfra 6 kratek wyświetlacza (2x3 kratki)). Wywaliłem zegarek, bo był kompletnie niepotrzebny. Dodatkowo w sofcie pisanym w bascomie wyświetlacz migał (LCD był cały czyszczony, następnie...
następnie przy wyłączaniu programu (przejściu do standby) porówbywał te wartości z istniejącymi w eeprom i jeśli będą inne to wtedy nadpisywał, nie wiem jeszcze jak to zrobić Neutral Zrób tak: Jeśli spadek napięcia(przechodzenie w tryb standby) odczytaj wartości ze zmiennych w eeprom i w tym momencie masz je w SRAM. Zrób warunek typu: if zmienna_sram...
Ta sekwencja rozkazowa nie ma sensu. MOVC A, (at)A+DPTR do akumulatora zapisujesz wartość spod adresu w dptr, i zaraz potem do akumulatora pobierasz wartosc na porcie P1, a więc to co pobrałeś DPTR-em znika pod tym co pobierasz niżej. MOV A, P1 nadpisujesz wartość pobraną wcześniej. I po co jest ret jako ostatni rozkaz? Zresztą dzisiaj będę dłużej siedział...
Ato jest proste czytaj co pisze kompilator : Source string could be too big to fit into target string in line 375 (....) Masz zbyt długie stringi ;) fajnie brzmi to pierwsze a możliwe ze program mimo kompilacji będzie ci nadpisywał stosem zmienne , Ramu jest tyle ile jest i trzeba nim dobrze dysponować jeśli przy każdym przerwaniu odkladasz na stos...
Poprawiłem warunek Po co zmieniasz wartość "petla" ? Jeśli chodzi o śmieci, to miałem na myśli nadpisywanie się tekstu na siebie. pierwsze jak wyświetlić ten parametr ? komendą LCDAT, pamiętając o offsecie w przypadku scrolowania menu. i drugie jak ten parametr powiązać z kodem odpowiedzialnym za zmianę należy napisać program do zmiany wartości jakiegoś...
Powiem tak, może nie przez USART ale inaczej robiłem testy a mianowicie do programu w różnych miejscach wklejałem komendę zapisu z powrotem do kart SD i bezpośrednio po odczycie było ok, po przejściu na string*3 było ok, po przejściu ze string*3 na byte tez było ok. Mam wrażenie ze sie ram nadpisuje i mi niszczy zmienne, ale dla czego tylko wtedy gdy...
Wygląda na to że któraś zmienna String jest za krótka i nadpisuje String Pwej. Uruchom w symulatorze ten programik to zrozumiesz o co mi chodzi :). [syntax=basic4gl]$regfile = "m88pdef.dat" $crystal = 20000000 $baud = 19200 $hwstack = 32 $swstack = 32 $framesize = 32 Dim Wynik As Single , S As String * 2 , D As String * 5 Wynik = 10.123456 S = Fusing(wynik...
Podstawowy błąd w programie odbierającym dane to za mały bufor, dane mogą być nadpisywane. Bufor powinien mieć minimum 14 bajtów, zmienne są wysyłane w postaci łańcucha np. "-32768,-32768",$0D. Do prawidłowej pracy bufora wymagane jest globalne włączenie przerwań (Enable Interrupts). [syntax=basic4gl]Config Serialin = Buffered , Size = 28 , Bytematch...
Cześć. Tak oczywiście tylko zajmuje to trochę czasu i nie do końca się sprawdza. Takie oto pytanie dla przykładu: Co zrobić jeżeli procedurę wywołujemy z procedury np. w wielostopniowym menu, które jest też procedurą. Mamy ograniczyć użytkownikowi ilość wywołań, trochę nie ładnie. Lepszym chyba rozwiązaniem jest rezygnacja z takiej sytuacji na rzecz...
Witam wszystkich. Koledzy mam pewien problem. Posiadam napisany kod w Bascom, wykorzystuje w nim funkcję zapisu do eepromu Avr. Urządzenia działa jak powinno, zmienne zapisują się w eeprom. Po każdej modyfikacji kodu i wgraniu do AVR, zmienne które są odczytywane z wewnętrznej pamięci, są wcześniej nadpisywane liczbą 255. Oczywiście jest to normalna...
zeby nie zaciemniac to jest wlasciwy wycinek z procedurki dim j as byte dim aa as byte dim k as byte dim licznik_poziomy as LONG dim licznik_pionowy as LONG Sub Odczyt_startowy J = 0 For K = 0 To 3 I2cstart I2cwbyte 160 ' I2cwbyte 0 I2cwbyte K I2cstart I2cwbyte 161 I2crbyte Aa , Nack . I2cstop ' Cls ' Lcd Aa ' tu bylo sprawdzenie czy poprawnie zczytuje...
Tak wiem doskonale że ładowanie próbek w określonym czasie przez wait ileś tam da złe efekty, (ale generalnie to działa) ale myślałem o spowolnieniach albo przyśpieszeniu, a nie o pierdzeniu i "cyfrowych schodkach" nałożonym na zupełnie dobrze odtwarzaną muzykę. Pokombinuję teraz z wyzwalaniem timerem. Nie wiem jednak też jak to dokładnie zrobić. Otóż...
1. Co minute zapis do eeprom, nie wiem czy to dobry pomysl. Wiesz, ze eeprom posiada mala ograniczona ilosc zapisow? Lepiej dodaj jeszcze warunek, ze jak naprawde minute pozniej ta temperatura sie zmieni wtedy dopiero zapisuje. AD1 wiem ze eeprom ma ograniczona ilosc zapisow, tylko gdzie zrobilem cos nie tak ze zapisuje co minute wartosc do eepromu...
na końcu nie musisz na nic czekać ! , tak się składa że też piszę prog. do zasilacza i też z pomiarem temp. , ja zrobiłem tak Temperaturka: 1wreset 1wwrite &HCC 1wwrite &H44 Do Incr Opozniacz_przerwania Gosub Przyciski Gosub Pomiar Gosub Wyswietlacz1 If Opozniacz_przerwania = 50 Then Opozniacz_przerwania = 0 Exit Do End If Loop 1wreset 1wwrite &HCC...
Oczywiście że "krzaki" na wyświetlaczu mogą być spowodowane plątaniną kabelków, nie do końca dobrym stykiem itp... Nawet zakłócenia EMC mogą je wywoływać. Nie analizowałem Twojego kodu, bo Bascomem nie zajmuję się już od lat, ale może po prostu powinieneś odświeżać częściej LCD nadpisując całe jego pole spacjami...
pozwolę sobie odświeżyć temat, bo nie osiągnąłem stabilnego efektu, sprawdzając różne koncepcje. usunąłem na razie Serialin0, dodałem [syntax=basic4gl] Ilosc_znakow = Len(uart_ciag) [/syntax] wysyłam SMS o treści Karta Efekt na terminalu jest taki: caly ciag: +CMT: "+48796123456","","14/01/18,19:04:59+04" caly ciag: Karta czyli rozumiem, że po dojściu...
Witam Mam problem z odbiornikiem RC5 na attiny2313 otóż gdy wgram ten program: Czemu zatem na atmega8 działają te kody a na attiny2313 nie?? Nie wiem czy czytasz dokumentację obu procesorów, zauważ że tiny ma 128bajtów pamięci Ram a Mega8 ma 1024bajty Ram. Przypuszczam że jest go za mało na obsługę Bascomowego Gert c5, pewnie stos, i zmienne są nadpisywane....
Jest kilka możliwości. Po pierwsze procesor nie powinien się grzać, jeśli się grzeje to znaczy, że przekraczasz jego parametry, gdzieś masz zwarcie, albo czymś niepoprawnie sterujesz. Druga możliwość - BASCOM kiepsko obsługuje AVRy z tak dużą ilością pamięci FLASH, ale ten problem powinien pojawić się po przekroczeniu 128kB zajętości, co ciebie chyba...
hmm masz racje cos pokręciłem, ale myślę że tak było by lepiej: If Temperatura(1) < G Then Portb.0 = 1 Locate 2 , 15 Lcd "G " Elseif Temperatura(1) >= G+1 Then Portb.0 = 0 Locate 2 , 15 Lcd " " End If hmm przyszło mi coś do głowy, ten kod powinien działać więc... to tylko moje przypuszczenia, być może masz gdzieś...
A jeśli chodzi o "Błędne operacje matematyczne" , to: Czy rozumiesz dlaczego zmienną Pokaz , zadeklarowałeś jako Integer , a nie np. Byte,String czy Double :?: Sprawdź jakiego typu zmienne oferuje Bascom Basic , postaraj się zrozumieć czym one się miedzy sobą różnią , a wtedy 1-szy problem masz z głowy ;) Piotrek Nie mam, po napisaniu postu wpoadlem...
Witam . Chciałem zrobic tester pomp opryskiwaczy . Chodzi o mierzenie wydajności pompy w litrach na minute a moje pytanie czy nie bedzie gubił impulsów podczas wykonywania przerwania . Pomiar co 1 sekundę a wydajność pomp od 40l do 260l / min Nie musisz obawiac się o gubienie impulsów z powodu wykonywania przerwań. Impulsy są zliczane przez Counter1,...
Dziękuję super podpowiedź dzięki niej udało się ustalić optymalne wartości dla ramki hw i sw. Dyrektywa $DBG faktycznie bardzo przydatna można nią wyliczyć wartości stosów dla całego programu, albo dla jakiejś jednej funkcji/procedury. Po utworzeniu pliku .log można użyć stack analizera , no i super :) Niestety nie sprawdza się dla rozbudowanych programów...
Witam. Robię mini komputer pokładowy. Funkcje to pomiar poziomu paliwa, temperatury w i na zewnątrz, i napięcia aku. Na razie mam paliwo i jedną temperaturę. Poziom paliwa symuluje na razie potencjometrem. Do pewnego poziomu fajnie wypełnia mi kolejne kwadraty, jednak gdy zapełnię pierwszą linię, i przekręcę jeszcze trochę potencjometr, to wypełnia...
Nawiązując do wcześniejszej wypowiedzi chce zbudować generator regulowany za pomocą 2 potencjometrów. Jednym chcę regulować czas trwania logicznej 1 a drugim potencjometrem czas trwania logicznego 0. Przy tych założeniach dyskusja na temat ustalania częstotliwości nie ma żadnego sensu. Praktycznie, jeden z potencjometrów zmienia wypełnienie, a suma...
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Witam. Od końca: Kwarce najlepiej użyć takie, by odchyłka prędkości transmisji była jak najmniejsza (poniżej 5% powinno być ok.). Bascom ułatwia ich dobór. Wybierz z głównego menu Options => Compiler => Communication. W okienku które się otworzy wpisz/wybierz pożądaną prędkość transmisji, oraz częstotliwość rezonatora, a poniżej możesz odczytać jaka...
overlay - po prostu nadpisywanie zadeklarowanego miejsca w pamięci dla zmiennej masz powiedzmy: dim temp1 as word at &H60 dim temp2 as byte at &h61 overlay 1) word temp1 ma 2 bajty 2) bajt LSB temp1 będzie pod adresem &h60 3) bajt MSB temp1 będzie pod adresem &h61 4) temp2 ma tylko 1 bajt 5) adres &h60 i &H61 jest już zarezerwowany dla temp1 6) ZMUSZAM...
1. Acha... bo ty w programie liczysz ilość kliknięć? Tak? Myślałem że chcesz liczyć czas. 2. Jak używa zmiennych Bascom, nikt nie wie poza twórcą Ale można sobie co nie co poczytać. Może zły konfig dla ramu? https://avrhelp.mcselec.com/index.html?m... I trzeba zwiększyć wartości: $hwstack = 40 $swstack = 16 $framesize = 32 Dla dzielenia...
Z tego co mi wiadomo podczas ustawienia flagi przerwania procesor sam zapisuje adres powrotu do stosu następnie przeskakuje do etykiety przerwania . Na symulatorze również nadpisywany jest adres stosu (+2) a po reti (-2) mimo iż sam nic na stos nie zapisuję . Program również powraca do właściwego adresu . Z książki Mikrokontrolery AVR w praktyce : "Skok...
ehh.... Za bardzo to skomplikowane. Nie, żebym nie dał rady tego zrobić, ale mam już jeden duży programator (EzoFlasher) i ma wszystko... Z wyjątkiem AVRów :( Chyba zmontuję coś prostego, na USB, albo dodam tylko do mojego programatora jakieś diody zennera na wszystkie wyjścia ISP :) Nie będzie wtedy możliwości uwalić AVRa poprzez przepięcie z portu...
Cześć! Chciałem się z Wami podzielić opisem konstrukcji, do której wykonania zmusiło mnie życie. Miałem jakieś okresowe problemy z sercem i za każdym razem, jak dostawałem Holter'a, wszystko się uspokajało ;) Jeśli ktoś z Was próbował kiedyś zapisać się na Holtera to wie, że nie jest łatwo. Czeka się i czeka. Postanowiłem wziąć sprawy w swoje ręce i...
Teraz Timer1 powinien mierzyć okres a po przeliczeniu zmienna Liczba powinna podać częstotliwość. Sygnał podaje na INT0 i wyświetlacz zaczyna szybko migać więc nie widać jaki jest wynik. Podaje 84Hz ale wyniku na LCD brak. Sam fakt że wyswietlacz 'miga' oznacza że coś tam jednak się pokazuje. Problem jest, że wynik nie pozostaje na długo bo jest natychmiast...
Jeśli chodzi o punkt drugi to zmieniłem i teraz na wyświetlaczu przynajmniej napis nie mruga, ale nadal zero reakcji na przyciski. I jak sterować tym kursorem? I jeśli tam jest zmienna program 1 i program 2 do przechowywania wartości do wyświetlania to jak wybrać program 2 bo teraz mam cały czas program 1, w ogóle nie rozumiem tego programu. Wizualny...
Zamieszczam program w bascomie, który jest dosyć niezoptymalizowany więc proszę się nie czepiać tylko ewentualnie udzielać wskazówek... Proszę bardzo :D Staraj się jak najmniej korzystać z funkcji cls, która jest nie przyjemna dla oka. Tekst statyczny umieszczaj przed pętlą, natomiast zmienne wartości przez nadpisywanie wspierając się spacjami, gdy...
Heh wierz mi, czy nie... napisałem to... i byłoby wszystko ok, gdyby nie to, że nadpisywałem przykład z "Samples" w program files... i już było napisane klikam save i co...? Bascom zdechł a wraz z nim plik zniknął... (Zapomniałem, że vista nie pozwala szarakom na dotykanie P.Files...)... Także sorry nie mam siły drugi raz tego pisać... Dodano po 8 No...
Witam wszystkich Wygląda to tak, że wchodzę w podprogram zmiany czasu i wszystko się zatrzymuje. Nie ma możliwości zmiany czasu ani powrotu do podstawowego trybu pracy czyli wyświetlania czasu i temperatur. W załączeniu przesyłam kod mojego programu: Code $regfile = "m8def.dat" $crystal = 1000000 $hwstack = ? $swstack = ? $framesize =? ...................
Witam. Posiedziałem troszkę nad tym i sprawa wygląda teraz tak. Jeśli wyśle ramkę o długości 8 np. 50 55 0c 0d 11 00 00 90 -czyli prawidłową dostaje potwierdzenie "dobra ramka" Po wysłaniu innej lecz o długości 8 : xx xx xx xx xx xx xx xx -czyli zła dostaje potwierdzenie "zła ramka" Jeśli wyśle znów dobrą to jest ok czyli rozpoznaje i działa powiedzmy...
Status SOLVED. Dla potomnych wyjaśniam co było nie tak. Otóż wszystko wynikało z różnicy w "prędkości działania" niektórych funkcji - konkretnie w Bascom w funkcji: [syntax=basic4gl] Sub Rf12_ready Reset Spi_cs While Spi_sdo = 0 Wend End Sub [/syntax] Czas między zresetowaniem pinu CS a początkiem oczekiwania w pętli na stan wysoki na pinie MISO jest...
ERR jest zmienną systemową i zapisywać ją mogą funkcje które mają jej obsługę. ERR sprawdza się zatem zaraz po tym jak wykonała się instrukcja ponieważ następna instrukcja na przykład 1Wreset też zwraca ERR i nadpisze ją 0 znaczy że wszystko przebiegło pomyślnie. ERR się tylko sprawdza.
Musisz przepisać cały plik modyfikując 'w locie' co trzeba. Nie ma możliwości dopisania literki w środku pliku. Można jedynie nadpisać coś bajt w bajt. Gdyby twoj plik posiadał 'wolne miejsce' w każdej linijce - najlepiej tak by wielkość linijki była stała to by wielce pomogło.
Nie znam Bascoma, nie używam go i nie planuję. Ja bym użył wskaźnika na początek pliku i zapisał dane z offsetem po zakończeniu akwizycji. Tworzyłbym też plik samodzielnie zamiast kombinacji z pustym plikiem na PC. Proponuję szukać w helpie do Bascoma jak zdefiniować wskaźnik na początek pliku albo bufor dla danych z pliku i jak je później nadpisać.
Moze ktos mi dokladnie powie co robi bascom jak reaguje na przerwanie. Dokładnie to robi tak: - Bez opcji NoSave : +00000082: 920F PUSH R0 Push register on stack +00000083: 921F PUSH R1 Push register on stack +00000084: 922F PUSH R2 Push register on stack +00000085: 923F PUSH R3 Push register on stack +00000086: 924F PUSH R4 Push...
W przypadku taktowania, odpowiednie ustawienie fuse bitów powoduje nadpisanie funkcji pinu, np. ustawienie źródła zegara systemowego na zewnętrzny rezonator kwarcowy powoduje wyłączenie pinów XTAL z użycia jako IO, więc cokolwiek na nich ustawisz i tak nie zadziała. Co do innych interfejsów, w większości przypadków mikrokontroler sam przejmuje władzę...
Niestety, to nie pomogło, usunąłem wszystkie wait'y które tam były i dalej jest to samo. Może macie jakieś inne pomysły? Wszystkich nie usnąłeś - zostało 25ms z debounce. Poza tym konfiguracja przerwania jako Low level powoduje, że jest ono generowane raz za razem dopóki jest stan niski na pinie. Przerwanie nie zdąży się obsłużyć, bo debounce potrzebuje...
Jak wyżej. Poprostu nadpisz tą linię, lub wręcz tekst od odpowiedniego miejsca. Każdy znak ma swój adres w LCD, zatem każdy znak z osobna lub tekst można modyfikować bez czyszczenia całości. W Bascomie używa się instrukcji Locate y, x do ustawiena adresu pierwszego wpisywanego znaku. W C potrzebna jest funkcja. Np. taka: void locate(char y, char...
Wszystkie Sub`y powinny być poza pętla Do Loop a tymczasem u Ciebie etykieta Silnik jest w pętli. Gosub czyli "go sub" oznacza odłożenie na stos aktualnego adresu gdzie program jest wykonywany, skok pod adres procedury Sub i powrót w to samo miejsce (a dokładniej do następnego po odłożonym adresie miejsca) poprzez Return Return zdejmuje ze stosu odłożony...
nadpisywać zmienna bascom nadpisywać rejestrator excel nadpisywać
wstawianie filmu dzielić uzwoić transformator gaźnik zasysać
elektryzator pastuch elektryzator pastuch
Panel fotowoltaiczny 260W – parametry, zastosowanie, opinie, używane moduły 60 ogniw Ford Focus 2019 P2000 – błąd NOx, AdBlue, SCR, czujnik NOx, EcoBlue Diesel