Przetwonnik zlicza napięcia tylko do 2047, pokazując ujemne napięcie nie ma znaku minus i wartość, tylko np 65320. Czyli przetwornik zwraca wyniki w kodzie U2. Tam nie ma znaku minus. Jest za to przesunięcie poziomu. Najprościej mówiąc, zastosowanie takiej funkcji do konwersji: Napiecie = Zmierz1 * 256 Napiecie = Napiecie + Zmierz2 da Ci złe wyniki....
Nie zmienia, bo masz błąd w innym miejscu. Dokładnie to miałem na myśli-że błąd jest gdzieś indziej. Zastanów się, co oznacza nazwa trybu CTC (?) – w ang. jest to ‘Clear Timer on Compare’ (pol. - wyzeruj zawartość licznika/timera, gdy jego zawartość jest równa wyznaczonej z góry i ustalonej, bądź to wyliczonej jakiejś wartości w zmiennej...
Witam. Potrzebuję informacji czy w bascomie można wykonywać operacje typu zmienna1*zmienna2 lub zmienna1=zmienna2 gdy jedna zmienna jest np.typu integer a druga long?, gdy zawierają liczbę która mieści się w zakresie dozwolonym dla obu?. Jeśli ze zmiennej long zrobiłem licznik zliczający w obie strony a później próbuję po pewnym okresie zliczania przypisać...
[quote="zumek"]Drogi kolego Tomotron, oto lekarstwo na Twoją duszę :wink: W menu Options->Compiler->Misc jest sobie takie coś jak Byte End(hex) więc ustaw sobie tam wartość np.50 i po ptokach ,a jak by to było mało, to walnij ze 60 lub lepiej 70 i masz skompilowany program.Żeby nie ustawiać stosu za wysoko, to wartość "Byte End" trzeba tak ustawić żeby...
Widzę że kolega And! nigdy nie programował w Bascomie, otóż ten język nie przyjmuje aż tak skomplikowanych działań. Trzeba prościej. Zważając na to że integer to także liczby ujemne sugeruję taki oto kodzik: Dim A As Integer , C1 As Byte , C2 As Byte , C3 As Byte , C4 As Byte , C5 As Byte Dim Temp As Integer , Znak As Bit A = -31945 If A < 0 Then...
dane(k) - to dane wejsciowe dla DFT i one musza być ze znakiem Sample(k) - to dane z przetwornika ADC (8bitowe) Poziom - średnia z wszystkich próbek czyli poziom masy ja wszysstki obliczenia robiłem na liczbach integer czyli 16 bitowe za znakiem czyli -32768 do 32768 i to starczyło .GCC cos kaszani z ujemnymi. ludzie nazekają na bascoma a on jest naserio...
Jaka jest najmniejsza i największa temperatura jaką mierzy ten czujnik oraz jaka jest najmniejsza i największa temperatura jaką chcesz zmierzyć? Pokarz schemat jak masz wpięty ten czujnik. Jaki schemat? Toż to 2 kabelki, jeden do uc drugi do GND przez 100nf. Zakres jaki chcę uzyskać to 10°C-120°C. temp = 60 + (600 - wartosc)/10 To działa ale...
Witam. Zrobiłem sterownik do swojego obrotowego kolektora słonecznego. Bascom, Atmega8, lcd 4X20 znaków-tryb 4 bit. Problem jest następujący: sterownik za pomocą przekaźników steruje siłownikiem z silnikiem DC lewo - prawo. Miałem problem z zakłóceniami, reset procesora, krzaki na LCD. Działo się to przy rozłączaniu przekaźników. Okazało się że trafko...
Jak dam dword to kompilator wywala mi blad niechce sie skompilowac...dlatego dawalem word i moze przez to niedzialalo. Pozniej sprubuje tylko na zaplonie pobujac i sprawdzic. Ale dziwne bo nawdr gdyby tam raz na jakis czas spadlo do 4L to srednia nie wyszla by 4L. Musialo by byc przez 10 pomiarow okolo 4L. Wrzuce tez pelny kod bo teraz pisze z kom....
Error 10:Wrong type(bit,byte,integer,word,or string)
Podejrzewam, że chodzi o 8 bitów z czujnika interpretowane do tej pory w C jako int8_t. :arrow: wader_669 Reprezentacja binarna - zobacz [url=http://pl.wikipedia.org/wiki/Kod_uz... uzupełnieniowy do 2 Przeliczanie - wpisz te 8 bitów do 16-bitowego integer-a i jeżeli jest więcej niż 127 to odejmij 256.
Lepiej zmień deklarację T As Word na T As Integer - zmieniono zobacz czy bit całkiem po lewej to jedynka. - Jest 1 Zmieniłem na bit 16 i error w tej linijce. Dim Tempw1 As Integer Dim Tempstr As String * 20
Ja bym dał Integer żeby nie działy się cuda jak temperatura zechce być ujemna.
[syntax=vbnet][/syntax]Witam; Małe pytanko odnośnie wyświetlania wyników - dokładniej chodzi o temperaturę ujemną [syntax=vbnet]1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &H55 1wverify Dsid1(1) If Err = 0 Then 1wwrite &HBE T = 1wread(2) T = T * 10 T = T / 16 S = Str(t) S = Format(s , " 0.0") Lcdgoxy 1 , 3 Lcdstr S , 2 , 0 Lcdupdate[/syntax]...
Prosiłabym o wyrozumiałość i pomoc w nakierowaniu mnie na rozwiązanie problemu. Spróbuję nakierować :) Jeśli zapis ID do eeprom ma być jednorazowy, w kodzie programu deklarujesz (wcześniej innym programikiem i LCD odczytane) ID $eeprom Termometr2: 'nr seryjny termometru 1 Data 40 , 25 , 0 , 133 , 2 , 0 , 0 , 196 Termometr1: 'nr seryjny termometru...
Pomyśl trochę nad "sprytem" kodu :D Chodzi mi o to że kiedy widzisz powtarzające się linijki kodu to powinieneś pomyśleć "czym one się różnią" i tylko te różnice napisać osobno a wszystkie powtarzające się sprawy napisać tylko raz. Po co tyle tych Locate 1,1 . Przeciez i tak i tak będziesz tę linijkę rysował od 1,1 zawsze, chyba że inaczej podejdziesz...
Tu masz działający i uproszczony do max kod do obsługi ds18b20 (wyświetla temp na wyświetlaczu) [syntax=basic4gl] I = 1wread(2) S = I / 16 T = Fusing(s , "##.#") Locate 1 , 1 Lcd "Temp:" ; T ; Chr(0) ; "C" [/syntax] tu masz dokładnie objaśnione co i jak: [syntax=basic4gl]Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM...
Czy można przez konwersję BCD wyciągnąć znak (temperatura dodatnia/ ujemna) Wynik zczytywany jest do zmiennej Integer(nie Single, żeby od razu odciąć część ułamkową) dalej poprzez BCD uzyskuję liczbę dziesiątek i jedności. Wszystko działa tylko jeśli temperatura spadnie poniżej 0, zaczyna liczyć od końca. W jaki sposób można oddzielić znak "-" ze zmiennej...
Chwilowo straciłem ten kod postaram się go znaleźć ale opierałem się na projektach z internetu. No bez jaj. Na 99% nic nie masz tylko czekasz na gotowca. Ale dobra, zlituję się na święta :D Pomijając całą beznadziejność kodu do multipleksowania wyświetlacza, takie coś powinno działać: $regfile = "ATTiny2313.dat" $crystal = 8000000 Dim Jednosci...
O kurde zapomniałem :D Jeszcze raz przepraszam. Używam ATTINY 2313 a jako czujnik DS1820 A tu program: Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , Dim T As Integer , Tmin As Integer , Tmax As Integer Deflcdchar 1 , 4 , 14 , 21 , 4 , 4 , 4 , 4 , 32 Deflcdchar 2 , 4 , 4 , 4 , 4 , 21 , 14 , 4 , 32 Do 1wreset : 1wwrite &HCC : 1wwrite...
Mam jakas liczbe WEJ ktora sie zmienia i poszukuje jej wartosci najwiekszej MAXX oraz najmniejszej MINN. Liczba jest typu integer i przyjmuje wartosci dodatnie oraz ujemne- chodzi o temperature i zapamietanie wart min oraz max. Zrobilem cos takiego: If Maxx < wej then Maxx = wej End If If Minn > wej then Minn = wej Else End If Nie dziala poprawnie...
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Wczytaj dane z DS do tablicy dwuelementowej Byte, a później oba bajty wtłocz do zmiennej integer albo word np. przez Makeinit. Dla temperatur tylko dodatnich można użyc zmiennej word , natomiast jeżeli wystąpią temperatury ujemne bezwzględnie trzeba zastosowac tu zmienną interger ; inaczej wystąpią absurdalne interpretacje odczytów temperatury. Dla...
A rodzaj zmiennej ma znaczenie w tym przypadku? Bo kombinuje i z byte i integer. Zdecydowanie ma , a także znak liczby.Jeżeli spodziewasz sie pomiaru temperatur ujemnych, to całe Twoje obliczenia temperatury i podzielenia je na "cyfry" , biorą w łeb :| Radzę poeksperymentować w symulatorze - można nieźle się z(a)dziwić :)
Witam. Naskrobałem coś takiego: Dodano po 33 Aha, jeszcze dwa pytania. Czy DS może być blisko kwarcu? Mam go wlutowany ok. 1cm od kwarcu. Jaka jest żywotność pamięci eeprom w DS? 100000 zapisów jak w przypadku Atmega, czy więcej? Odczytuję temperaturę co pięć sekund i martwi mnie obecność eeprom w DS.
Tzn. wiem, że zmienna typu bajt nie może być większa niż 255, ale zapomniałem, że nie robi się operacji na różnych typach zmiennych razem [syntax=vbnet] Solar_mid_mod_temp = Solar_mid_mod_temp \ 2 ' srednia z dwoch czujnikow = 283 [/syntax] co prawda przekracza 255, ale wynik z dzielenia przez 10 i Modulo 10 już nie, czyli 28 i 3 [syntax=vbnet] Solar_mid_dec...
witam problem raczej standardowy bym powiedział :) zakładam, że wolisz wersję skróconą bez wykładu a dlaczego tak itd :D 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) Tspr = T T = Abs(t) T = T * 10 : T = T / 16 Przecinek = T Mod 10 T = T / 10 1wreset...
Przejrzałem naszą dyskusję i zajrzałem do dokumentacji Bascom i moim zdaniem masz w swoim programie problemy z arytmetyką i typami danych W Twoim programie ma miejsce następujący tok obliczeń: 1. pobierasz z ADC dwie liczby 8-bitowe w zakresie 0..255 każda (bez znaku): Pomiarl i Pomiarh 2. następnie dokonujesz podstawienia: Dodano po 3 I jeszcze jedno:...
1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms 750 'przeczekaj czas konwersji 1wreset 'reset 1wwrite &HCC 'rozkaz adresowy SKIP ROM 1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu DS18x20 Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2)...
Problem leży po stronie scalania danych - wartości tmp_accx(1) i tmp_accx(2) nie mogą być dodane do siebie. Należy pamiętać że są to dwie połówki zmiennej typu integer, wartość tmp_accx(2) należy pomnożyć przez 255 lub przesunąć w lewo o 8 pozycji. Następnie obie połówki łączymy instrukcją OR (+ tu nie zadziała gdyż w przypadku liczb ujemnych będą głupoty)....
procesor maga8 nie wyswietla bledow w bascomie-avr dziala niby poprawnie... wiec problem jest taki: temperatura ok. gdy na port Pc.1 podam stan wysoki 12v przez stabilizator 5v nic sie nie dzieje tak samo jak z reszta ktora jest pod linia ------------- zaczynam dopiero zabawe wiec nie mam pojecia co z tym nie tak na dodatek nie wyswietla bledow:) ale...
Witam Próbuje przerobić kod obsługujący kilka DS18B20 na jednej linii i drugi obsługujący kilka DS18B20 na kilku liniach. Niestety jak na razie efekt jest taki, że działa tylko pierwsza linia, czyli dwa DS18B20. Jeśli chodzi o konfiguracje, to celowo nie ma Config 1wire = Porta.1 gdyż wpisanie tego portu, jako 1WIRE powoduje wyświetlanie 0.0 dla pierwszego...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega16 $crystal = 8000000 'deklaracja cześtotlwiości pracy 'Deklaracja portów od wyświetlacza LCD Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Cursor Off '**** Termometr **** Config 1wire =...
Mam maly problem ze zliczaniem czasu stanu niskiego na pinie INT0. Napisalem programik ale nie chce on liczyc czasu. A zmienna Ilecykli czasem zawiera wartosci ujemne, i ogolnie pokazuje jakies nieprawdziwe wartosci. bede wdzieczny za pomoc $regfile = "m48def.dat" $crystal = 8000000 $baud = 4800 Config Timer1 = Timer , Prescale = 1 On Timer1...
Dzięki za podpowiedzi teraz wiem że double jest liczbą zmiennoprzecinkową i występuje jako liczba dodatnia jak i ujemna. Teraz zostaje tylko przeliczanie na liczbę ........... a to mi się wydaje jak na razie nie tak proste. To znaczy że nie wiem jak się za tą double zabrać. A może na początek bym się musiał nauczyć jak zamienić liczbę Integer (2bajty)...
Tego fragmentu zdania , nie jestem w stanie pojąć I tu się nie dziwię. Za co przepraszam i postaram się wyjaśnić co miałem na myśli W Czasie przeszukiwania forum znalazłem taki kod konwersji T = Makeint(odczyt(1) , Odczyt(2)) 'zrób z dwóch bajtów jednego integer'a Tspr = T 'teraz sprawdzam jaki jest wynik 'interesuje nas tylko...
Witam ponownie Zrobiłem to przez Timer0. Jednak problem z aktualizacją wyświetlania dalej występuje. Jeszcze drugi problem to start, przez okres zdefiniowany zmienną Licznik ( teraz równą 300 ) nic się nie wyświetla - dopiero po czasie = 300. Próbowałem również z Enable/Disable Interrupts na czas pomiaru, ale nie było żadnego efektu. Mam takie pytanie...
Antystatyk - co oznacza że nie działa? Skąd wiesz że nie działa? Testujesz to na procesorze czy w symulatorze bascoma? 1) wywal "Enable Timer2" ponieważ już w TIMSK aktywowałeś przerwanie 2) wstawiasz w przerwanie komendę PRINT (robisz sobie jaja) i twierdzisz że nie działa. A wiesz ile czasu zajmuje wykonanie się tego? 3) jeśli mimo wszystko testujesz...
ok tadzik juz dziala :D Pomogles znaczy doradziles z tymi fusebitami Nalaeza ci sie te pkt ale jak bys jeszcze pomogl mi w polaczeniu tych kodow : $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 8000000 'informuje kompilator 'linia PB2 jako wejściowa Config Lcd = 16 * 1a 'konfiguracja typu wyświetlacza...
Czy sprawdzałeś błędy w swoim programie ? Tak na szybko to: Zmienne otw i zam mają taką samą nazwę jak sub katalogi otw : i zam : Dłaczego typ zmiennych stosujesz jako Integer? Czyżby były też ujemne ? Trochę zmieniłem, sprawdź go. [syntax=basic4gl] $regfile = "m8def.dat" 'korzystamy z AMTEGA8 $crystal = 1000000 Dim Rezl As Integer 'napięcie z rezystora...
If I3 > 0 Then .Nie wiem właśnie, w którym miejscu robię błąd, bo w sumie przepisuje wynik pomiaru do I3 i procedure If, then, else, end if.
Jest program napisany dzieki waszej pomocy. A tu program w razie jakiś błędów piszcie. Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111111 Portd = &B1111111 Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , T As Integer Do 1wreset : 1wwrite &HCC : 1wwrite &HBE 'odczyt z DS1820...
Witam. Mam termometr na Atmedze8, program napisany przez kolegę Ducha. Chciałbym dodać funkcję zapisu do eepromu najniższej zarejestrowanej temperatury przez termometr, lecz nie jest to możliwe ponieważ ostateczny format temperatury zapisywany jest w zmiennej typu string. Program ma porównywać, czy aktualna temperatura jest mniejsza od zapisanej w eepromie,...
Witam! Jako że zaczynam dopiero z bascomem mam mały problem z napisaniem sensownego kodu do termometru. Na tą chwilę z materiałów znalezionych w internecie udało mi się zlepić coś takiego: $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności...
Shift pozwala szybko dzielić lub mnożyć tylko przez kolejne potęgi dwójki czyli, żeby się nie rozpisywać ograniczę się do bajtu :2,4,8,16,32,64,128 i 256 Ten Shift tam nie musi zostać. Umieściłem go tam bo liczba przez którą Ty dzieliłeś była potegą dwójki :D Shift Zmienna, Right, 1 ' podzieli ją przez dwa Sgift Zmienna, Right, 4 ' podzieli ją przez...
Mam problem z komunikacją 1wire i jej kolizją z przerwaniami zewnętrznymi. Próbowałem wyłączać przerwania zewnętrzne na czas obsługi 1wire efekt jest taki, że temperaturę odczytuje bezbłędnie, niestety rozjeżdża mi się przerwanie zewnętrzne. Gdy, nie wyłączam przerwań zewnętrznych na czas obsługi 1wire program po czasie się wysypuje. Przerwania zewnętrzne...
Wszystko działa dobrze, dokładnie tak jak napisałeś :-) Syfy w programie: 1) A jako integer, powinno być jako byte (pwm 8 bit) lub word (16 bit). Tutaj to nie powoduje błędu ale dobrze by było nie używać zmiennych mogących być ujemnymi, ponieważ PWM może mieć wartości tylko 0 lub dodatnie. 2) Enable Timer 1 - nie jest potrzebne bo nie używasz przerwań,...
Witam Mam problem z programem, który został umieszczony w książce (osła łączka). Program został napisany pod attiny2313 lecz niestety podczas kompilacji wyskakuje błąd: Reserved word may not be used Proszę kod umieścić w znacznikach code! Robak
Witam, Na wstepie zaznaczam, ze uklad (przynajmniej na pierwszy rzut oka) dziala poprawnie. Moje pytanie wynika z tego, ze nie mam gdzie sprawdzic czy dobrze odczytuje mi znak kiedy temperatura jest ujemna. Z dokumentacji czujnika wynika ze jezeli bity znaku tj od 15-go do 11-go sa wyzerowane to temeratura jest dodatnia a ujemna w przypadku gdy ustawione...
bascom zmienna integer integer bascom ujemny ds18b20 bascom temperatury ujemne
osłona tarcza hamulcowy syczy prawy kanał paliwo gaźnika skuter coliber
bateria parkside podłączenie przekaznika
Amica WA1S610CLiSH – tryb serwisowy, kombinacje klawiszy, testy, kody błędów Packard Bell ZE7 – wejście do BIOS bez klawiszy funkcyjnych, klawiatura USB, Fast Boot