Najpierw zwiększ może rozmiar buforu, bo czas przez Ciebie wysyłany jakkolwiek musi mieć więcej niż 15 znaków a więc jest on ucinany: #define UART_MAXBUFF 30 kolejna sprawa, to usuń komentarze liniowe z linii wykorzystywanych przez preprocesor . Popatrz co się stanie: komentarz również zostanie wstawiony w kod, a tam niestety spowoduje on wykomentowanie...
Tak na szybko bo w tej chwili nie mam czasu, nie możesz do zmiennej wielobajtowej, modyfikowanej w przerwaniu, odwoływać się tak jak to robisz. Zastanów się, co się stanie jeśli przerwanie wystąpi w czasie wykonywania instrukcji ltoa, lub wysyłania danych? To co uzyskasz będzie mniej lub bardziej przypadkowe. Najpierw atomowo przepisz zawartość zmiennej...
'Działa od 30rpm do 300000rpm $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Timer1 = Timer , Prescale = 64 Config Int0 = Rising Dim Flaga As Byte Dim Text As String * 10 Dim Wynik As Single Dim Zmienna As...
No raczej właśnie tak jak piszesz - pierwszy znak nadać "ręcznie" a kolejne nadadzą się same dzięki przerwaniu. Innej sensownej możliwości nie widzę. Z drugiej strony, żeby takie nieblokujące nadawanie w pełni wykorzystać potrzebujesz bufor z którego znaki będą nadawane. Wtedy możesz wykorzystać jedną funkcję, np. Send("Ala ma kota"), która skopiuje...
Pomysł z tym programikiem jest dobry ale lepiej zrobić tak aby wykorzystać przerwanie od uart'u od danych przychodzacych. W obsłudze tego przerwania robimy taki myk że gdy przyjdzie znak "$" to niech sie zeruje licznik (wskaźnik pozycji) i każda nastepna dana z portu niech będzie zapisywana do nastepnej zmiennej. Potem można z tych zmiennych wyciągnąć...
Załaczam kod, który działa. odbiera dane z portu szeregowego i wyswietla je w MsgBox(). Zwróć jedynie uwagę na zdarzenieSerialPort1_DataReceived. Zmień w nim ilośc bajtów po której mają zostać odczytane dane z BUFORA portu szeregowego. Początkowo bowiem dane trafiają do bufora (każdy bajt oddzielnie wywołuje przerwanie i trafia do bufora) a stamtąd...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
https://obrazki.elektroda.pl/9337556500_... Pewna wyjątkowa osoba zasługiwała na równie wyjątkowy prezent, a że nie jestem fanem kupowania niespodzianek, postanowiłem "zrobić" coś własnym rękami. 1. Wstęp, motywacja 2. Zarys konstrukcji 3. Płytka z diodami - projekt (łączenie diod) 4. Płytka z diodami - projekt (zatrzaski) 5. Eagle...
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
http://obrazki.elektroda.pl/4029783300_1... Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów...
http://obrazki.elektroda.pl/2126980700_1... System monitorowania środowiska, oparty o interfejs LoRa IoT składa się z stacji bazowej zbudowanej z wykorzystaniem modułu Arduino Mega z bramką LoRa oraz zdalnych stacji opartych na Arduino Feather, które łączą się z stacją bazową poprzez radiowy interfejs LoRa. System pozwala na monitorowanie...
Wymyśliłem taki kod i właśnie testuję : unsigned long countPulses(int pin, unsigned long durationMs) { unsigned long startTime = millis(); unsigned long pulseCount = 0; while (millis() - startTime < durationMs) { if (digitalRead(pin) == HIGH) { pulseCount++; while (digitalRead(pin)...
https://obrazki.elektroda.pl/5461019800_... Opiszę tutaj proces implementacji wysyłania sygnału IR w oparciu o PWM i timer. Wysłany tak z mikrokontrolera sygnał będzie w stanie kontrolować klimatyzację. Dodatkowo użyty format sygnału będzie zgodny z tym co przechwytuje Flipper Zero, co pozwoli na wykorzystanie przechwyconych w ten...
Witam wszystkich po raz kolejny. Jako że odwiedził mnie listonosz z długo i niecierpliwie wyczekiwaną żółtą kopertą, to postaram się dzisiaj opisać Wam tutaj pokrótce gadżet, który to był w środku - moduł cyfrowego radia FM zrobiony na układzie TEA5767 firmy NXP. Moduł ten to …. powiedziałbym, że to kompletne radio, choć by wydobyć z niego dźwięk,...
http://obrazki.elektroda.pl/4938044000_1... Witam. Przedstawiam Wam, drodzy koledzy koleżanki moje najnowsze dzieło - zestaw do ćwiczeń na sterowniku przemysłowym Siemens Simatic S7-1200. Jest to zestaw najprostszy, składający się tylko ze sterownika, bez panelu operatorskiego i modułów dodatkowych, mimo to pozwalający na przeprowadzenie...
Niestety nie działa pod Worksheet_Calculate, Arkusz nie odbiera nawet pojedynczego sygnału. Może to wina samego kodu. Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Value As String Dim w As Integer If MSComm1.PortOpen = False Then MSComm1.CommPort = 3 'MSComm1.InBufferSize = 1024 MSComm1.Settings = "4800,e,7,2" MSComm1.PortOpen...
Jeśli chodzi o cmd_timeout to chodzi o to, że wejscie RX kiedy pin używany jest przez USART nie jest niczym podciągane. Kiedy jest podłączony do drugiego urządzenia np. procesora lub MAX485 to problemu nie ma bo pin jest podciągany wyjściem TX tego uC lub MAX485. Kiedy jednak odłączysz to na pinie stan jest nieustalony i wpadają na USART śmieci. Ten...
Tak tego się napewno nie robi. Wykorzystaj event który będzie odpalany gdy dostaniesz nową ramkę, np. [syntax=csharp] mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataRecei... private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { //1 mySerialPort.Read(Buffer,0,Buffer.Length... //lub SerialPort...
USART_Send_String(USART3, "powrot "); ma wysłać do USART informację o przerwaniu. Narazie jest to test czy w ogole przerwania się wykonuje. W konfiguracji jest odblokowanie przerwania od Rx -> USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); Czy podczas wywołania przerwania musze podawać ten argument? Co do sprawdzenia źródła przerwania. Czy w sytuacji...
W funkcjach pomiarowych są opóźnienia (swoją drogą można by zrobić bez nich) czyli domysł, że przerwanie wskakuje w momencie przetwarzania na string jest bardzo mało prawdopodobne... Spróbuj odbierać dane w HyperTerminal (albo innym terminalu).
witam chciałem troszkę odswierzyć temat, mianowicie korzystajac z częsci napisanej przez kolegę M. S. skleciłem takie coś: $regfile = "m8def.dat" $crystal = 8000000 $baud = 2400 Dim Gps As Byte Dim Gpstxt As String * 80 Dim Czastxth As String * 4, Dim Czastxtm As String * 4, Dim Szerokosctxtst As String *4 Dim Szerokosctxtmin As String * 4...
Chciałem przetestować moduły RFM01 i RFM02. Programy napisałem dla ATtiny13 i nie mam poprawnej transmisji. Moje moduły są na 868MHz więc turotiale nie pasują(a przynajmniej takiego nie spotkałem). Podejrzewam, że jest to kwestia ustawień parametrów transmisji, a nie kodu. Również ponawiam prośbę dla pary RF01/02 868MHz. Zrobiłem sobie nawet interaktywny...
Mam o to taki kod: 11:23:21.950 -> Guru Meditation Error: Core 1 panic'ed (Cache disabled but cached memory region accessed) 11:23:22.044 -> Core 1 register dump: 11:23:22.044 -> PC : 0x400d141c PS : 0x00060034 A0 : 0x4008416c A1 : 0x3ffbf050 11:23:22.138 -> A2 : 0x00000000...
Dzięki wielkie !! Pomogło , aczkolwiek nie rozumiem dlaczego bez tego też czasem działało zależnie od kolejności wpisów ? Teraz działa OK bez względu na kolejność wpisów, i reszty (czyli początku programu w którym pewnie jest mnóstwo innych błędów :-) ) [syntax=vbnet] $regfile = "m2560def.dat" ' specify the used micro $crystal = 16000000 ' used crystal...
Po pierwsze - łańcuch 3 znakowy zajmuje w pamięci CZTERY znaki (bo jest jeszcze '\0' na końcu). Po drugie - przejrzyj naprawdę ten dokument który wskazałem, znajdziesz w nim np coś takiego: 8.1 asctime—format time as string 8.3 ctime—convert time to local and format as string 8.8 strftime—convert date and time to a formatted string...
Dzień dobry, Zbudowałem termometr cyfrowy oparty na układzie Atmega8 i czujniku DS18B20. Do tego podpięty jest wyświetlacz LCD. Termometr "pamięta" i wyświetla temperaturę maksymalną i minimalną z ostatnich 12 godzin. Do tego wszystkiego podłączyłem diodę RGB tak jak na schemacie: http://obrazki.elektroda.pl/6410117800_1... Zadaniem...
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
Mniej więcej wiem jak działa timer0, tylko nie wiem jak go wykorzystać w programie. W prostych programach, podają jak załatwić sprawę przy 1 diodzie, a ten program z linku jeszcze jest dla mnie za trudny [syntax=basic4gl]$crystal = 8000000 Config Pinb.1 = Output Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie Dim A As String * 5 Dim B As...
Nie wiem czy dobrze kombinuje i trochę mi nie pasuje co zrobiłem. Do tego celu wykorzystuje polecenie Config Serialin które po konfiguracji wygląda tak: [syntax=basic4gl] Config Serialin = Buffered , Size = 20 Config Timer0 = Timer , Prescale = 256 Dim A As String * 10 Dim Odczyt As Bit Dim I As Word On Timer0 Przerwanie Enable Interrupts Enable Ovf0...
Dzięki za podpowiedz. Już to sprawdzam. Edit: Jak podałeś w stringu były dane LF na początku odczytanego stringa i dlatego był problem z tłumaczeniem zmiennej. Dzięki za naprowadzenie! Jeszcze wątku nie zamykam, gdyż mogę jeszcze trafić na problem i w razie czego szkoda zakładać nowy wątek. Pozdrawiam Edit2: Niestety powracam z problemem :( Program...
Poprawiony nieco kod programu. Póki co działa tylko dla liczby 7, dla wszystkich innych wyświetla, że liczba jest złożona. Zrobiłem mały postęp, ale to nadal nie rozwiązuje całego problemu. Naprawdę nie ma nikogo kto mógłby mi pomóc? :/ [syntax=asm].text main: la $a0, powitanie #laduje adres powitania do $a0 li $v0, 4 #zaladowanie 4, ktora odpowiada...
Programuję sobie radośnie atmegę 32 w języku C. Staram się sterować portem (akurat upatrzyłem sobie PORTA) poprzez RS232. Komunikacja mi chodzi poprawnie (program testowy odsyła odebrany tekst) Wysyłać będę 1 znak (0...9) poprzez uart. Procesor zamienia tekst na wartość int za pomocą funkcji [url=http://www.cplusplus.com/reference/...
Problem, w zasadzie coś co jest już wałkowane na forum wielokrotnie, ale mimo przeczytania kilku wątków nie znalazłem odpowiedzi. Otóż potrzebuję zrobić odbiór poprzez uart. Korzystam z Atmegi 32(w zestawie ewaluacyjnym, zewnętrzny kwarc) i środowiska WinAvr. Wysyłanie z mikrokontrolera udało mi się uruchomić, odbioru przez uC nie do końca. Komunikacja...
Witam. Mam problem z dziwnym zachowaniem lcd podczas realizacji programu. Program pisałem już dość dawno, kiedy uczyłem się jeszcze podstawowej obsługi timerów. Ale, że problem się zaczął pojawiać również w innym moim programie, postanowiłem napisać na forum, bo nie wiem co robię źle. Posiadam płytkę ewaluacyjną do atmegi32 i atmegi8 oraz kilka wyświetlaczy...
Witam, zmodyfikowałem program do postaci przedstawionej poniżej. Niestety nadal wyświetlacz LCD pokazuje 0.00. Oczywiście po sprawdzeniu miernikiem program jest realizowany (program obsługi przerwań jest realizowany) lecz na wyświetlaczu cały czas ukazuje sie wynik 0.00. Dodałem kondensator do potencjometru tak jak mówiłeś ale to nic nie dało. Wszystkie...
Pytanie zagadka, co tu jest nie tak? Dwa Arduina spięte ze sobą przez TWI i SPI. Dane mają być przesyłane następująco (tak, wiem, bez sensu): UART -> A1 -SPI-> A2 -TWI-> A1 -> UART Po resecie jeden raz działa, kolejne pakiety TWI są wysyłane, mają prawidłową zawartość ale nie wywołują już przerwania. Arduino 1 (terminal): [syntax=c]#include<SPI.h>...
Moyshaa, dzięki za link. Ostatecznie pisze, że ten kod działa ale drażni mnie to, że nie rozumiem w jaki sposób tutaj mierzony jest okres(od rising do rising) może dlatego, że komentarzy mało :( Kod proszę umieścić w znacznikach code! Robak
O wreszcie znalazłem. Kiedyś próbowałem odpalić przerwanie serial od rs i wtedy zadziałało. Coś takiego: $regfile = "89c2051.dat" $crystal = 14745600 '$crystal = 11059200 $noramclear $noinit '---------------------------------------... Th1 = &HE0 '1200 dla kwarcu 14MHZ 'Th1 = &HFC '9600 dla kwarcu...
Witam! Nie umiem sobie poradzić z uruchomieniem kodu. Myślę, że temat książkowy. Mam błędy w programie który próbuję uruchomić w celu dalszej edukacji w C. Nie znam jeszcze dokładnie w tym języku wszystkiego, więc zwracam się o pomoc, jeżeli to możliwe, aby uruchomić ten projekt. Dodaję kod i plik z builda. Poprawiłem tytuł, formatowanie postu i pisownię....
Właściwie nie wiem co tak na prawdę wywołuje przerwanie. Czy dana która napłynęła na UART? Tu wygląda to tak, jakby to było jakieś przepełnienie bufora UART dwoma znakami... ---edit--- Ale numer. Faktycznie odczytywanie rejestru wielokrotnie było przyczyną... Poniżej w pełni działający kod :-) [syntax=basic4gl] $regfile = "m32def.DAT" $crystal = 8000000...
Cze, mam makiete ZL1ARM. Problem polega na tym ze nie moge skonfigurować jednocześnie przerwania zewnetrznego (EINT1) i pracy portu szeregowego. W momencie wlaczenia funkcji konfigurujacej przerwanie zewnetrzne port szeregowy przestaje dzialac. Gdy funkcja konfiguracji przerwania jest wylaczona program wysyła stringa do komputera poprawanie. Program...
Witam wszystkich mam następujący problem, otóż chciał bym stworzyć funkcję która pobiera z portu rs232 cały napis, który następnie mógł bym przekonwertować do postaci integer, czy double lub inne zmiennej liczbowej. Próbowałem to zrobić w oparciu o własną funkcje uart_get_string ale funkcja pobiera tylko jeden znak. Powyższe potrzebne mi jest do np....
Witam postaram sie wyjasnic o co mi chodzi: po wscisnieciu klawisza program obsluguje przerwanie i ma wyswietlic znak (nazwijmy go x) ktory znajduje sie w zmiennej M1,a wiec: locate 1,6 lcd M1 i dalej wychodzi z przerwania i robi swoje, po odebraniu drugi raz przerwania ma na pozycji 1,6 wyswietlacza (gdzie do tej pory byl znak x - nic nie wyswietlic,lub...
Finalnie wygląda to tak: [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0 = Buffered , Size = 150 , Bytematch = 10 'for COM1 Config Input1 = Crlf , Echo = Cr Echo Off 'Config Serialout0...
Usiłuję napisać program takiego miernika i podczas analizy konfiguracji timer-ów w różnych tego typu projektach a szczególnie w jednym (ale o tym później) pogubiłem się trochę i pojawiły się wątpliwości. Do testów używam platformy arduino nano (atmega328p, 16MHz, 5V) i na chwilę obecną napisałem coś takiego: [syntax=c]#include <Wire.h> #include...
Nie mam takiego sprzętu. Napisałem coś takiego: [syntax=c] volatile uint8_t i=0; // LICZBA PRZERWAN volatile uint8_t freq=0; // CZESTOTLIWOSC volatile uint8_t pr=0; // ZMIENNA USTAWIANA CO PODSTAWE CZASU 0,025 S int main(void) { lcd_init(); // INICJALIZACJA WYSW. sei();// GLOBALNE PRZERWANIA TCCR2=(1<<WGM21)|(1<<CS22)|(...
[syntax=basic4gl] $regfile = "m32def.DAT" $crystal = 11059200 $baud = 9600 Declare Sub Pomiar_temperatury Dim Zn As String * 1 Dim Zapytanie_temp As Bit Dim Nowa_temp_pobrana As Bit Dim Temperatura As Integer On Urxc Odbieranie_rs: Enable Urxc Enable Interrupts Do If Zapytanie_temp = 1 Then 'jesli jest zapytanie Call Pomiar_temperatury 'idz zmierz temperature...
Witam. Zabrałem się za projektowanie sterownika rolet opartego na atmedze z komunikacją rs485 modbus ascii . Jako ze od czegoś trzeba zacząć załatwiłem sobie zestaw uruchomieniowy atmega 32 ARE0034 . Do zestawu zostały dołączone przykładowe programy miedzy innymi program obsługujący rs232. Kod przedstawiam poniżej: /**************************************/...
Witam szanownych kolegów! Piszę mając nadzieję, że ktoś pomoże mi rozwiązać mój problem z którym borykam się już któryś dzień :( Otóż programuję w Bascomie Atmegę 644pa-pu do komunikacji po UART z modemem ZTE2639AT. Mam problem ze sprawdzaniem siły sygnału GSM. Otóż chciałbym przy pomocy przerwania od timera0 wykonywać takie sprawdzanie a jego wynik...
Bardzo proszę. Zmodyfikowałem program tak, by uzywał tablic. To jest mod pierwszego listingu: [syntax=basic4gl] Rem warstwowa obsługa LCD $regfile = "m32def.dat" $crystal = 1000000 Ddra = &B00001111 '4-7 = output Porta = &B11110000 'pull up Config Lcd = 16 * 2 Config Lcdmode = Port Config Lcdpin = Pin , Db7 = Portc.7 , Db6 = Portc.6 , Db5 = Portc.5...
growat string łańcuch string attiny string
a8498 przetwornica alarm zabezpieczenia termicznego content watch
Naprawa Hitex HT-8000 - Filmy Instruktażowe na YouTube Lokalizacja krostek klapy bagażnika Ford Mondeo MK3