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 .
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ś...
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...
Co jest źle napisane? CLS!!! Nie kasuj wyświetlacza tylko nadpisuj. Użyj Locate y, x lub podobnych instrukcji.
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
Optymalizacja kodu wynikowego i Bascom? Nie rozumiem zasady działania Twojego programu. Czy ten kod sam się nadpisuje, zmieniając zajętość?
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]
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...
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ć
Niestety ten kod powyżej nadpisuje freq_0 zawsze jest ostatnia zapisana
Użyj tej dyrektywy. Ona nadpisuje ustawienia w konfiguracji kompilatora.
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,...
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?
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...
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...
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ć...
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
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...
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...
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 ...
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...
No wlasnie mi tez przyszedl w miedzyczasie taki pomysl do glowy zeby nadpisywac obszar instrukcja locate. Narazie wlasnie z tym kombinuje
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...
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.
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.
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.
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?
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...
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...
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...
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ć...
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ą...
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"
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...
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
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...
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ą...
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ę...
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...
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...
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,...
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 :)
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...
R,G i B się zmieniają i czasem mają mniej niż trzy znaki. Czyli jeśli poprzednio R miało 255 a za chwilę ma 30 to zobaczysz 305 :D Żeby się tego pozbyć musisz napisać [syntax=vbnet]Locate 2,1 : Lcd R; " " 'to wmontuje dwie spacje kóre będa czyścić po poprzednich wpisach[/syntax] Na dodatek te wyświetlenia nie są zależne od tego X czyli następują trzy...
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...
nadpisywanie dodawanie nadpisywanie dysku nadpisywanie telefon
soundbar wyjście słuchawkowy zimne nawiew zestawy samodzielnego montażu sklep
ESP8266 Arduino – zliczanie impulsów zewnętrznych TIMER0 i przerwaniami GPIO Spin-off w elektronice i AGD – definicja, przykłady, Creotech, XTPL, inwertery, wirowanie