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...
skoro ma to być zegar, to po co używać pętli for? Zastąp ją lepiej pętlą nieskończoną typu do...loop lub jej asemblerowym odpowiednikiem
Możliwe, że któryś skok do funkcji niepoprawnie powraca i przepełnia się stos, czego następstwem jest reset mikro kontrolera, prześledź miejsca gdzie wykonywane są skoki i zobacz czy są takie gdzie np wykonujesz skok i zamiast wrócić return to wykonujesz 2 skok.
No można przestawić fisebity żeby reset wyłączyć i zrobić z tego port, ale uważaj - jak to zrobisz to o programowaniu po SPI możesz zapomnieć. Co do rezonatora to stardardowo wszystkie mają ustawiony wewnętrzny. Wszystko to jest opisane w manualach.
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ć...
Chwile mnie nie było :D Napisałbym to inaczej, ale wracając do pytania z pierwszego postu . Jeśli chcesz by procesor zawsze był tak samo zajęty to każ mu w tych innych Case`ach także nadawać Pulseout tylko na pin Reset. Bascom to przełknie bo ten pin może pracować jako normalny I/O ale jak jest resetem to nic mu się nie stanie jak napiszesz Pulseout...
Schemat wiele tlumaczy. Ale nie jest to chyba tak jak opisujesz. PSEN jest aktywny stanem niskim i ewidentnie w tym ukladzie to jest wykorzystywane (skierowanie diod oraz rezystor podciagajacy). Napewno nie da sie aktywowac PSEN na dluzej jak 190ns dla kwarcu 12MHz. Te milisekundy co obserwujesz to pewnie trwajacy jeszcze stan RESET wynikajacy z ladowania...
Jak to wygląda w Bascom to nie mam pojęcia. W C deklaruje się sekcję NOINIT i wszystkie zmienne przypisane do niej podczas startu procesora (czyli np. po resecie od WDT) nie są inicjalizowane, więc mają swoją poprzednią wartość. Trzeba je za to niestety zainicjalizować ręcznie podczas startu procesora po włączeniu zasilania (trzeba analizować jaka była...
(...) osobnym PinX i oczekuj na stan niski ADCx2 aż do spełnienia tego warunku. Jeśli na ADCx2 napięcia równe 0 mrugnij diodą Led1 jeden raz przez 300ms, wyłącz Przekaźnik1 na PinX Po czym wróć do góry procedury, do oczekiwania na napięcie na ADCx1 To właściwie tyle. Dziękuję za uwagę i wszelaką pomoc. Witam serdecznie na forum! Chętnie pomogę Ci przygotować...
Nie dziwne- reset zaczyna się od GND- tak zrób.
A stabilizator masz? Kondki przy nim ? Reset przez opornik 1-10K do Vcc masz ? Pozdrawiam
Panowie, to Bascom. Musiałbyś dorwać się do kodów biblioteki w ASM i zobaczyć jaka funkcja w ASM jest odpowiedzialna za reset komunikacji z LCD i jego inicjalizację i ja cyklicznie wywoływać. Bez tego w Bascom będzie ciężko, ewentualnie możesz napisać sam prostą procedurę inicjalizacyjną na podstawie DS sterownika wyświetlacza.
Powodów może być wiele Jednym z głównych może być np.ustawiona nóżka RESET jako port in/out Wtedy bascom nie wykrywa mikrokontrolera W takiej sytuacji żaden programator szeregowy sobie z tym nie poradzi muszisz przekonfigurować (programatorem równoległym) odpowiedni fusebit i wszystko powinno działać
Dodam że w programie poprawiłem błędy składni a nie popatrzyłem na schemat i nie poprawiłem błedów logiki. Na schemacie podłączone masz tylko wyjście OC1A więc odwoływanie się w programie do PWM1B jest całkowicie bezcelowe. Do tego DC_on_off to alias pinu OC1A czyli Timera1 który został ustawiony w tryb generowania sygnału PWM. W takim trybie Timer...
Reset i Set odnoszą się tylko do Bitów. W przypadku kiedy nie podajesz który bit to przy Reset zostanie skasowany tylko najmłodszy czyli Tobie nic nie da bo z, na przykład, 65535 zrobi się 65534. Używaj więc wersji "= 0" Do takich zadań najlepiej jest kupić na portalu aukcyjnym klon Saleae za około 30zł. Zmierzysz sobie dokładnie ;)
Proszę sprawdzić ten plik wgrac i zobaczyć czy pójdzie ? jeśli chodzi o reset to można podpiąć kondensator 470n do masy i rezystor10k do +5V ale najpierw prosze sprawdzic ten plik czy na nim działa potem dopierozałożyć do resetu R i C
Potestuj bo tak na szybko przy poobiedniej kawie klapałem jedną ręką :D Może coś przeoczyłem i trzeba prześledzić. Te złożone operacje w jednej linii dla stałych Bascom robi bez problemu. Osobiście bym tego tak nie napisał. Nie wiem po co to ciągle obliczać jak można raz... [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 64 $swstack...
Funkcje wait (waitms) w BASCOM nie blokują i nie resetują watchdoga. Wyłączanie watchdoga w czasie odczekania może prowadzić do sytuacji, gdy wchodzące w tym czasie zakłócenie zablokuje nam na stałe procesor. Dlatego lepiej wstawić pętelkę z resetowaniem watchdoga i zostawić watchdog włączony: for i=1 to 3 reset watdog wait 1 next
1) jeśli używasz przycisków to zawsze podłącz go tak aby przyciśnięcie zwierało nóżkę portu do masy czyli do -. To naprawdę ułatwia sprawę i zawsze działa 2) dobra praktyka - przyciski, jumpery itp podłączaj do pinu procesora przez rezystor np 180 omów. Chodzi o to że kiedyś możesz się pomylić, ustawić pin jako wyjście, dać na nim 1 czyli napięcie +...
Z całym szacunkiem to jest to po prostu wioska. Nie zadałeś sobie trudu sprawdzenie biblioteki o której pisałem. Powinienem to tak zostawić , ale nie mogę na to patrzeć. Nie dość, że nie możesz używać standardowych instrukcji Bascom takich jak Lcddat, Showpic itd to jeszcze potrzebujesz 512 Bajtów na bufor.. Dyskwalifikuje to ten kod dla mniejszych...
Nie wiem czy wyjdzie to jako kolejny post lub dodany po czasie :D ..., ale po pierwsze chciałbym byś nie myślał że moje uwagi są złośliwe. Po prostu zapytań o różne aspekty programowania w Bascom jest tak wiele że lepiej jest odpowiedzieć na ogólnodostępnym forum niż musieć sie powtarzać. Jest szansa że jeszcze ktoś to przeczyta :D Zamiast za każdym...
co ma się niby ustawić Portd.0 czy Portd.5 ? Gdzie jest procedura obsługi przerwania od Timera? Nie wiem czy reset nie działa tylko bitowo w Bascomie, myślę że lepije i bezpieczniej jest zrobić krok=0.
Ja zrobilem tak: licz = 789 Setki = Licz / 100 Temp = Licz Mod 100 Dziesiatki = Temp / 10 Jednosci = Temp Mod 10 Reset Wysw3 Liczba = Lookup(jednosci , Znaki) Waitms 3 Set Wysw3 Reset Wysw2 Liczba = Lookup(dziesiatki , Znaki) Waitms 3 Set Wysw2 Reset Wysw1 Liczba = Lookup(setki , Znaki) Waitms 3 Set Wysw1 i dziala bez problemu
Jeżeli to jest przetwornica to nie pisz UPS. To kwestia tylko zamiany przed główną pętlą Do Loop: Reset tr1 Set tr1 W kodzie tym początkowym. Pamiętaj o tych 10ms.
Może zanim zapomnę o czym chciałem napisać a nie jest najważniejsze, ale dla Ciebie ważne. Tak w telegraficznym skrócie -> USART w AVR ma możliwość włączenia jakby podwójnej prędkości/próbkowania (to samo SPI). Bit ma skrótowa nazwę U2X. Przy taktowaniu 16MHz, jak prawie każda płyta Ardu, to bez U2X predkość 115200 miałaby za duzy błąd który niby maksem...
Programator nie potrafi wprowadzić procesora w tryb programowania. Do sprawdzenia poprawność połączeń i czy linia RESET nie jest zbyt obciążona (kondensator do masy, rezystor do VCC o zbyt niskiej wartości). I przede wszystkim czy procesor jest w ogóle zasilany.
uklad z prockiem musi byc podpiety do zasilania i moze normalnie wykonywac program a jak chcesz programowac to programator wprowadza ci uklad w taki stan jakbys trzymal caly czas reset i wtedy programuje
Witam. Można tak: $regfile = "attiny13.dat" $crystal = 1200000 Config Portb.3 = Output Config Pinb.4 = Input set pinb.4 reset portb.3 do if pinb.4=0 then do Set PORTB.3 Wait 1 Reset PORTB.3 Wait 1 Loop end if Loop W pętli odczytujesz stan przycisku i jak będzie niski zacznie migać.
Dim Czas as Word Czas = 850 do Set PortC.1 Wait Czas Reset PortC.1 Wait Czas loop Pozdrawiam P.S. Poczytaj do czego służy Alias. Nadaj alternatywne nazwy rejestrom a nie poleceniom języka.
Należy zmienić ustawienia fusebitów i wyłączyć div8 ! - disable teraz dzieli ci 8MHz przez 8 wtedy ruszy 8 razy szybciej tylko prosze nie eksperymentować z spi , reset , DWen , bo skończy sie brakiem komunikacji po spi !
ustalam w ten sposób podciąganie pinu do stanów wysokich i niskiego(**) . Zakładałem, że po to jest alias (zawiera nazwę pinu), który sprawę rozwiąże. Co gorsza przyznam się, że taka była moja praktyka więc nie wiem jakim cudem błędy wyszły dopiero teraz. Podsumowując, właściwe jest podciąganie do VCC i GND poprzez SET i RESET a nie jak ja to zrobiłem....
Kod programu: '$tiny $regfile = "attiny13.dat" 'plik z definicjami procesora attiny13 $crystal = 1000000 'częstotliwość taktowania procka 1Mhz Config Portb.0 = Input 'Wejście REM Config Portb.4 = Output 'Przekaźnik GŁOŚNIK Config Portb.3 = Output 'Przekaźnik REM Set Portb.0 Reset Portb.3 Reset Portb.4 Dim Znacznik As Iram Byte Znacznik = 1...
Zawsze można a jak nie ma gotowej funkcji to można coś takiego: Kl_dat Alias Pind.3 Kl_clk Alias Pind.2 ... Odczyt_klawiatury: Gosub Czekaj_na_0_na_clock For I = 0 To 7 Gosub Czekaj_na_1_na_clock Gosub Czekaj_na_0_na_clock Klawisz.i = KL_dat Next I Gosub Czekaj_na_1_na_clock Gosub Czekaj_na_0_na_clock Gosub Czekaj_na_1_na_clock Gosub Czekaj_na_0_na_clock...
Nie wiem nadal gdzie jest ten błąd. I mam jeszcze pytanie odnośnie schematu. Po podłączeniu modułu wykonawczego do uP wszystkie przekaźniki się załączają i nie dają się wyłączyć programowo. Są włączone niezależnie od stanu portu. Czy zrobiłem jakiś błąd na schemacie? Po odłączeniu wtyczki przekaźniki się wyłączają ale wystarczy dotknąć pinów wtyczki...
A coś takiego? [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Portb.2 = Output : Portb.2 = 0 : Pk3 Alias Portb.2 Config Portb.1 = Output : Portb.1 = 0 : Pk2 Alias Portb.1 Config Portb.0 = Output : Portb.0 = 0 : Pk1 Alias Portb.0 Config Portd.2 = Output : Portd.2 = 0 : Led3 Alias Portd.2 Config Portd.1 = Output : Portd.1...
To jest tak: Config Int0 = P3.2 ' Ustawienie przerwania zewnętrznego na pin P3.2 Reset Tcon.0 ' Przerwanie wywoła stan niski Set Tcon.0 ' Przerwanie wywola opadające zbocze (z H do L) To samo z Int1 To tyle pozdrowienia.
Dzisiaj akurat potrzebowałem rejestru HC595 do rozszerzenia liczby wyjść użytecznych. Poniżej fragment kodu w bascomie. Przypisane nazwy odpowiadają katalogowym. Zmienną Portx traktujemy jak zwykły 8 bitowy port wyjściowy. Kod z pod etykiety 'obsługa rejestru' wstawiamy w pętli głównej programu, aby rejestr był na bieżąco odświeżany. [syntax=basic4gl]...
... zwracam honor kolego zumek , niestety nie wiedziałem, że w bascomie set portb włącza tylko pull'upa ;) ale z drugiej strony skoro nie ma wyraźnej deklaracji w programie na początku, że port ma być wejściowy to bascom sam tak ustawia niezdefiniowane porty? Standardowo po power-up reset , bity w rejestrach portów(DDRx ,PORTx) są wyzerowane.Dla pewności...
Tu mam jeszcze pytanie - czy mogę wykorzystać timer, do odpytania co kilka sekund o czas z rtc, co kilkadziesiąt ms o stany przycisków, co kilka sekund o temperatury? Użyj techniki opisanej [url=http://stsystem.elektroda.eu/progra... Co prawda kody są w C, ale z opisu bez problemu...
Hej! Oto programik w Bascom-AVR. Jeżeli naciśniesz przycisk(portd.0) na mniej niż pieć sekund to zapli Ci się dioda(Portb.7), a jeżeli będziesz trzymał przycisk wciśnięty przez pięć sekund to przesunie Ci jedynkę po całym porcie b. Config Pind.0 = Input Config Portb = Output Dim I As Dim I=1 Program: Do If Pind.0 = 0 Then For I = 1 To 5 Wait 1 If Pind.0...
Nie odkrywajmy koła od nowa ;) Kod dla takiego wyświetlacza jak na obrazku. https://obrazki.elektroda.pl/2987586400_... Wyciąłem go z kodu który w minute można znaleźć w DuckDuckGo :P Jeśli ktoś ma inaczej podłączone segmenty to musi tylko edytować tablicę Data. [syntax=vbnet]$regfile = "m328pdef.dat" $Crystal=16000000 $hwstack=32 $swstack=8...
Jak to mówią diabeł tkwi w szczegółach... $crystal = 8000000 $regfile = "m16def.dat" Config Portb = Output Config Pina.1 = Input Do If Pina.1 = 1 Then Reset Portb.6 End If If Pina.1 = 0 Then Set Portb.6 End If Loop End
Poprawiłem trochę składnię $crystal = 1000000 $regfile "attiny2313.dat" Dim Bylo As Integer If Portd.6 = 1 And Bylo = 0 Then Bylo = Portd.6 Wait 5 Set Portd.7 Else If Portd.6 = 0 And Bylo = 1 Then Bylo = Portd.6 Wait 5 Reset Portd.7 End If End If Zalecam jednak poczytać help od Bascoma, za nim zaczniesz pisać programy. Pzdr.
'///////////////////////////////////////... '// Police Alarm With ATmega8 (Use 4%) // '// Compiler: Bascom 1.11.9.0 // '// Programmer: Behnam zakizadeh // '// Web: www.avr64.com // '// Email: Behnamzaki(at)hotmail.com // '///////////////////////////////////////...
Nie widziałem wcześniej, że już na to wpadłaś. Twój się kalibrował tylko w jedną stronę a ten powinien w obydwie (ale nie testowałem) ;) [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 2 $swstack = 0 $framesize = 22 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Mem_adc As Word , New_adc As Word Dim Krok As Byte...
Radziłbym Ci zobic tak: Cały PWM zrób na przerwaniu od jakiegoś Timera; nie uzywaj zmiennych typu single, jeżeli częstotliwośc przerwań bedzie odpowiednio szybka wystarczy zmienna typu byte lub word. Obsługe LCD czy przycisków i innych obliczeń zostaw w pętli główne Przykładowy PWM dla portb.3: Gdzie a to jakas amienna a do b podajesz wartosc PWM (0-255)......
Linie są podłączone MISO MOSI SCK Reset Żeby była ścisłość. Rozumiem, że mówisz o liniach programatora, natomiast w mikrokontrolerze podłączyłeś dedykowane piny, o których pisałem wcześniej, tak?
To ja przepraszam. Kolega ma dobrze schemat. Taki błąd zrobiłem jak się zaczynałem bawić z CAN, dopiero koledzy z Elektrody mnie poprawili. Za dużo ostatnio robię z UARTem ( odbiór GSM ). Kolega robi magistralę do domu, czy zamierza sczytywać dane z samochodu ? Jeśli to drugie to gorsza sprawa, bo producenci samochodów mają swoje implementacje. Jeśli...
Robiłem kiedyś sterownik choinkowy pięciokanałowy. Sprawę rozwiązałem następująco: - przerwania od przepełnienia Timer0 generują skoki do podprogramu (u mnie był kwarc 4MHz, dobierz preskaler) [syntax=basic4gl]Config Timer0 = Timer , Prescale = 1 Enable Timer0 On Timer0 Software_pwm Enable Interrupts Dim Reference As Byte Dim A As Byte Dim B As Byte...
Witam. ........... nie wiem jak zrobić aby te wyzwalanie było tylko od narastającego zbocza. Ściągnij pin 'Start' (PIND.5) rezystorem 10k do GND i odwróc jego logikę na przykład: If Pind.5 = 1 And B = 0 Then Druga sytuacja nie wiem dlaczego ale silnik mi przerywa tak co około sekundę gdy PWM jest włączony. Prawdopodobnie w tym czasie następuje zmiana...
reset bascom reset procesor bascom reset procesora bascom
transformator przydźwięk bezpiecznik termiczny grzejnik projekt blaszaka
myjka ultradźwiekowa myjka ultradźwiekowa
Uszkodzenia frontowego radaru w Mercedesie W213 Nissan Qashqai – mrugająca kontrolka poduszki, błąd poduszki fotela kierowcy, diagnostyka SRS