Poczytaj helpa z Bascoma ale angielskiego. Szczególnie o: "Config serialin" z uwzględnieniem "BYTEMATCH" - to jest obsługa UART w przerwaniu uproszczona na maxa. Warto przejrzeć: http://www.elektroda.pl/rtvforum/topic14... i jeszcze ten: http://www.elektroda.pl/rtvforum/topic14...
Nie :) TYlko to umożliwia działanie 2 programów "jednocześnie" (przynajmniej w dosie). Ty spokojnie pracujesz sobie w dosie a program siedzi w pamięci i obsługuje dane z rsa ale jeśli nie chcesz to mozesz napisać program nie rezydentny i tylko on będzie działa w danym czasie i nic wiecej
Witam. Moja propozycja jest następująca: 1. Bufor kołowy jak już wcześniej koledzy zaznaczyli 2. Format ramki telekomunikacyjnej <STX> <Byte1> <Byte2> <CRC> <ETX> I w tym momencie niczego nie pogubisz nie pozamienia Ci się baj pierwszy z drugim itd. Nie wiem czy tym jesteś to w stanie w labview tak zmodyfikować aby sobie...
Najpierw spróbuj może dodać: ...ale jak ustawię ręcznie bit UDRE w UCSRA który oznacza że bufor jest pusty, także nic się nie wysyła. To nie jest argument. Flag przerwań w AVR generalnie nie da się ustawiać programowo, niektóre można tylko wyzerować. Akurat UDRE można wyzerować tylko poprzez wpisanie bajtu danych do rejestru UDR, flaga ustawiana jest...
Witam Kiedyś pisałem że nieda sie uruchomić przerwań rs w bascomie. Ostatnio usiadłem nad tym i jakoś mi sie udało ale nie ze standardowymi komendami tylko zoperacjami na rejestrach - coś jak asm. Ale spoko wszystko jest jasne i proste. Doszedłem do tego że jeżeli w programie niema komendy print w jakiej kolwiek formie to kompilator wogóle niezainicjalizuje...
Z góry przepraszam za zamieszczenie całego programu - i tak jest okrojony do minimum - ale gotowy do skompilowania (ICCAVR) Chciałem uniknąć pytań z cyklu a co masz jeszcze w programie - może się gryzie... Problem dotyczy wysyłania danych za pomocą interfejsu RS232 w procesorze AT Mega8 ( pewnie i innych ale ja wałkuje akurat ten ) Nie moge dojść dlaczego...
USART sprzętowo nadaje cały bajt, wraz z bitem startu, stopu i parzystości. PRzerwanie w czasie takiej transmisji nic nie zakłóci. Co najwyżej do nadania kolejnego bajtu minie jakiś czas, ale to nie problem, gdyż każdy bajt ma swój bit startu, w efekcie odbiornik to poprawnie odbierze.
Bufor cykliczny trzeba zorganizować na RS232 oraz wysyłanie na przerwaniach i po kłopocie.
Czy nie masz przypadkiem do projektu dodanego pliku rs232.c a w nim zadeklarowanych funkcji main, wyslij ? W tej linijce Executing: "C:\Program Files\HI-TECH Software\PICC\STD\9.60\bin\picc.exe" -oodbierz.cof -modbierz.map odbierz.obj delay.obj rs232.obj widac 3 obiekty odbierz.obj delay.obj rs232.obj.
problem w tym, że nie chce stosować funkcji printf ani putchar. Teoretycznie nadawanie w przerwaniu nie jest aż tak trudne, a jednak mi to coś nie działa. W podręczniku pisze, że wystarczy ręcznie ustawić flage TI na 1 i to powinno spowodować przerwanie od TI. Dlatego nie kontroluje licznika odbioru bo na razie interesuje mnie tylko nadawanie. Chcę...
spuszczam kod. kompilowalem go sdcc pod linuxem. wynik wysyła przez rs232 1200n81. procedura obsł przerwania i getchar są zbędne. j
To nie są problemy Bascoma, w bascomie można wiele rzeczy szybko zrobić, tylko jak ktoś go nie zna to najłatwiej i naszybciej jest na niego psioczyć i wylewać swe żale. ale ok, skoro ty (o ile dobrze zrozumiałem) w jakimś tam przerwaniu wysyłasz coś poleceniem PRINT przez łącze RS232 a następnie w tym samym przerwaniu czekasz na odbiór przez RS232 (waitkey)...
Jest sobie układ na ATMEGA8 na defaultowym zegarze, z LCD, MAX232, i przekaźnikiem podłączonym do portu B. MAX232 jest połączony poprawnie z prockiem, bez przerwań jestem w stanie odbierać dane z RS232, nic się nie wiesza, ogólnie działa. Jednak żeby nie było mi zbyt dobrze, to wymyśliłem sobie że umieszczę obsługę RS232 na przerwaniu, po to by oczekiwanie...
Badając to zauważyłem że na telefonie wyświetla mi się tylko część tego komunikatu... Czyli jakby procek nie zdążył tego przetworzyć jak by to rozwiązać ?? ;/ Dodano po 1 Odbieram w telefonie tylko CNET 37C-66C a to są praktycznie co drugie znaki ;/
Wnioskuje po poście, że kolega ma echo na RX (czyli to co wysyłamy odbieramy, czyli pin RE na stałe do masy). Jeżeli chcesz zignorować echo, to albo ten pin podłącz do DE (czyli DE i RE razem do pinu sterującego kierunkiem transmisji), albo wyłącz odbiornik na czas nadawania i włącz go w przerwaniu po zakończeniu transmisji (skasuj bit RXEN w UCSRB).
Chcesz odebrać dane w PC a pytasz o przerwanie od UARTU. Aby wysłać dane do komputera po RS232 nie trzeba używać przerwania. Masz w programie procedurę obsługi przerwania od UARTU tylko jej nigdzie nie odblokowujesz. WYkasuj ją. Wogóle na początek zrezygnuj z sei bo nie potrzebujesz przerwań.
Witam, zanim zabierzesz się za pisanie własnej obsługi przerwań do RS232 w Bascomie, to może najpierw spróbuj zrobić to w oparciu o dobrodziejstwa jakie daje ci Bascom. nie znasz poleceń INPUT , INKEY czy PRINT ???? do tego jeszcze może Config Serialin bo w powyższym kodzie odstawiasz niezły "miszmasz" i nie ma co się dziwić, że ci nie działa. Oczywiście...
Nie herezje tylko pisalem to na szybko i wdarł się ten błąd. Oczywiscie zmienna Bufor nie moze miec takiej samej nazyw jak tablica do przechowywania danych . Powinno to wygladac tak> SIGNAL(SIG_UART_RECV) { unsigned char Bufor; Bufor = UDR; if (index != 0){ ReceiverTabl[index++] = Bufor; } if (index == BUFOR_SIZE){...
Poszukaj w necie o przerwaniu 14h. Polecam ksiązke "Szeregowe Interfejsy Cyfrowe" wyd. Helion.
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...
Gdzie ty tą funkcje chcesz wywołać...
Nic nie musisz (jeśli chodzi o Bascom - sam robić w przerwaniu) Bascom ofruje ci za free - pełną sprzętową obsługę RS232. Zapoznaj się tylko z poleceniem Config Serialin oraz z parametrem Bytematch tego polecenia - a wszystko stanie się jasne. Nic nie będziesz musiał sam oprogramowywać w przerwaniu bo to jest bez sensu. po prostu będziesz wysyłał paczki...
Proponuję zastanowić się czy mikrokontroler będzie tylko i wyłącznie czekał na przyciśnięcie przycisku czy robił coś jeszcze poza tym. Jeżeli tylko i wyłącznie będzie oczekiwał na przycisk to porty ustawiasz jako wejścia i sczytujesz stany. Natomiast jeżeli zajmiesz go czymś to proponuje wykorzystać przerwania. Nowsze mikrokontrolery (potomki Atmega8...
Potrzebuje programu do obsługi portu rs232 na przerwaniach (komunikator, przesyłanie plików or something). Z asemblera słabo kojarze więc prosze o listing w pascalu lub C. Mail: skorpa(at)wp.pl
Skonfigurowałem w tym procesorze odbiór i nadawanie poprzez rs232. Jak stworzyć przerwanie od odbiornika? Gdzie jest tablica wektorów obsługi przerwań itp?
A jeśli chodzi o AVR to: ON źródło_przerwania nazwa_podprogramu [ NOSAVE ] gdzie: źródło_przerwania - symboliczna nazwa źródła przerwania, nazwa_podprogramu - etykieta określająca gdzie znajduje się podprogram obsługi przerwania. jako żródło przerwania można: URXCprzerwanie układu sprzętowego UART – odebranie znaku UTXCprzerwanie układu sprzętowego...
Dlatego tak się dzieje, że _delay_ms(50); powoduje, że procesor mieli sobie coś w pętli przez 50ms nie interesując się niczym innym niż przerwaniami. Jeżeli chcesz coś robić w pewnych określonych interwałach czasowych użyj przerwań od timera.
Kilka pytań na początek: 1. Jakiego kompilatora C używasz? 2. Czy próbowałeś zmienić opcję kompilacji - zmienić poziom optymalizacji kodu (przykładowo w kompilatorze Raisonance - Optimization preference=Speed)? Mogę Ci podać przykład kodu w ASM wywoływany jako metoda w C dla kompilatora Raisonance - kawałek biblioteki obsługującej transmisję 1-Wire...
Ja zrobiłbym tak: 'Tutaj ustaw $Baud, $crystal, itp Config Serialin = Buffered , Size = 20 dim znak as byte Enable Interupts On URXCprzerwanie Enable URXC ... przerwanie: disable URXC do Znak = Inkey() If znak = #48 Then ... End If Loop Until _rs_head_ptr0 = _rs_tail_ptr0 Enable URXC Return
Niestety wszystkie przejściówki USB-RS232 są widziane przez system jako porty wirtualne. Nie mają więc przypisanego przerwania :(
Oczywiście jest tak jak kolega mówi winne są USART_putstr("Rejestr: "); USART_putint(wynik,16); ponieważ nie masz zadnego buforowania i korzystasz z pollingu a nie przerwan znaki odbierane podcas wykonywania tych funkcji przepadają ( to jest 2 linie) musisz wrzucic te odebrane znaki do jakichś zmiennych a wysyłać/wyswietlac dopiero po zakonczeniu całej...
Witam Od dwóch dni borykam się z pewnym problemem. Mam 2 mikrokontrolery: ATTiny2313 i AT90S2313. W tematach na elektrodzie znalazłem taki oto banalny program, odbierający znaki przez RS232 na przerwaniach, napisany dla AT90S2313: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <stdlib.h> #define...
Profesjonalnie to można programować w każdym języku, tylko trzeba go po prostu znać i umieć stosować w praktyce co najważniejsze. Dla takich początkujących jak ty Bascom powinien być jednym z lepszych języków tym bardziej, że nie rozumiesz jeszcze przerwań. Bascom daje ci gotowe rozwiązania w tym zakresie na maxa - popatrz sobie na Config Serialin ........
Najciekawsze jest to - jak ty to obliczyłeś czy tam wydedukowałeś, że UDR to 4 bajty ? ;) oczywiście, że to 1 bajt (w uproszczeniu mówiąc, bo wiadomo, że ramka może mieć 9bitów i kilka bitów startu i stopu) - nie mniej jednak gdy używasz ramki np: 8,n,1 - to masz 1 bajt - a to, że przy odczycie zauważasz "zjawisko" nadpisywania się przylatujących znaków...
Najprosciej napisz ja na przerwaniu - port RS 232 ustawia flage ze odebral bajt do bufora i mozna ja sprawdzac i wyjmowac bajt gdy flaga - lub podpiac to pod przerwanie i wtedy wyjac bajt - podstawa sprawnego programu.
Jaki kompilator? Nie pokazałeś deklaracji struktur danych - z tego co widzę to nie obsługujesz przepełnienia wartości zmiennych "odebrano" i "wysłano" - to miałyby być bufory cykliczne? w _putchar() gdy wysyłka_wyłączona == 1 powinieneś od razu wpisać bajt do rejestru SBUF, inaczej będziesz czekał na odbiór bajtu żeby zinicjalizować wysyłkę w przerwaniu....
klops_mops ---> masz dwa wyjścia żeby ci nie mrugały te wyświetlacze w czasie PRINT'a ;) - innymi słowy mówiąc aby procedura wysyłania RS232 nie zakłócała procedury multipleksowania 1. prostszy sposób - zwiększ tą kocią prędkość RS232 na jakąś ludzką - chociaż 9600bps to już praktycznie nie powinno ci mrugać a jak dasz każdą większą to już będzie coraz...
Zauważyłeś, że masz odzielne zmienne 'i' i 'bit_rx' w funkcji obsługi przerwania, niezależne od globalnych, na których działa main()?
www.beyondlogic.org tam jest kompletny opis RS232 łacznie z przykładem (w C) wersja pollingu i przerwania
Witam, chciałbym się dowiedzieć czy istnieje możliwość zgłoszenia przerwania na porcie LPT komputera PC za pomocą ATmegi 128. Wydaje mi się to mało realne, jako ze połączenie PC<->AVR to kabel ISP. Jeżeli jest to niemożliwe, to czy można zgłosić jakiekolwiek inne (niż od RS232) przerwanie w komputerze PC? Pozdrawiam i proszę o pomoc
No chyba że kabelek jest uszkodzony (np. przerwany) ale bardziej obstawiałbym konfigurację! pozdr.
Witam; mam taką sytuację. Do procesora taktowanego 14,475MHz przychodzi prawie ciągle transmisja RS232 o prędkości 115 200Hz. Odbiór odbywa się w przerwaniu. Wszystko działa. Ale teraz chciałem podłączyć do tego procesora encoder. Ale powstał problem, mianowicie przy dużej prędkości obrotowej procesor "gubi" impulsy. Sprawdziłem, że to nie jest wina...
Kolego prosta sprawa, do odbioru danych po rs232 używaj przerwań i gromadź dane w buforze. Obsluga przerwania odbioru znaku powinna sprawdzać kod znaku nadchodzącego z zewnątrz. Jeśli przyjdzie znak Enter przerwanie ustawia flagę. Flagę sprawdza z kolei głowny program, jeśli jest ustawiona wykonuje obsługę związaną z nadchodzącymi informacjami po rs232....
gubisz waść próbki gdzieś Nie gdzieś tylko w tych dwóch kodach, i to bardzo mocno gubisz ..... A dlaczego? No nie dziwne, żadnego śladu buforowania. 1. robisz bufor cykliczny (FIFO) 2. do bufora odbierasz dane przez RS232 na przerwaniach 3. z bufora (FIFO) odczytujesz w przerwaniu timera o zadanej częstotliwości próbkowania dane to wystarczy.
No teraz patrząc na kod to można od razu powiedzieć, że wszystkie twoje problemy i całe zło działania kodu, że tak powiem, wynikają z tego sposobu odbierania danych przez RS232 :( Pętla Do Loop w przerwaniu to samobójstwo i to jeszcze takie okrutne :( tym bardziej, że w Bascomie masz pięknie akurat zrobioną obsługę RS232 na przerwaniach i z buforami...
Pisze wlasnie program w Visual C++, ktory ma odbierac dane wyslane przez port 2 (oczywiscie rs232) z mikroprocesora (89C51). Chodzi mi o wywolanie procedury odczytujacej dane zaraz po uzyskaniu przerwania, ze dane "dotarly". Jak obsluzyc to przerwanie??? Wykorzystuje klase CSerial z ksiazki Visual C++ 6 Vademecum Profesjonalisty, autorow: Archer i Leinecker....
Tak. Tak bardzo Ci to przeszkadza? Przecież jeżeli chcesz coś wykonać co 2 sekundy to po prostu robisz to co ileś tam wystąpień przerwania. Ponadto, zastanowiłbym się nat tym czy Twój kod musi być w przerwaniu. Skoro chcesz go wykonywać z częstotliwością 1Hz to raczej to nie jest konieczne.
Sprawdzałeś jak się ta transmisja zachowuje kiedy Twoje inkey() w ogóle nie jest używane ? Nie wiem co sobie wkompilowuje Bascom w procesor ale może używa jakiegoś przerwania które z kolei w ten czy inny sposób oddziaływuje na transmisje RS232. Dajmy na to jeśłi RS232 używa przerwań do odbioru lub wysyłania a jakaś inna procedura czy funkcja po wyjściu...
Sam widzisz, że filtracja zasilania prawidłowa to nie jakiś tam wymysł a podstawa. Zatem jak zrobisz sobie nową płytkę PCB, zaprojektujesz wszystko tak jak się należy ale co ważne prawidłowo poprowadzisz ścieżki zasilania bo tu niezbyt dobrze to widać ( a coś czuję pismo nosem że też jest coś nieteges ), zrezygnujesz z tych linii przerwań w końcu, puścisz...
Od Pascala i C++ do Delphi i Buildera." pachnie bardzo staro. Używanie RS232 ze współczesnego windows jest proste, to nie to, co za DOS-a( żadnego sterowania kontrolerem, przerwań itd) Kazdą "elegancka" warstwa, czego byś nie używał, i tak siedzi na WinAPI USB jest jeszcze prostsze, bo to emulacja RS232, i odpada gospodarka flagami (uwaga, ze względu...
A co z rejestrem statusowym na czas wykonywania przerwania?
To jakiś cud, biorąc pod uwagę, że pokazany program nic przez UART nie wysyła. Czy zweryfikowałeś częstotliwość zegara procesora (np. miganie diodą w przerwaniu timera)? Na rejestrach BSRR i BRR nie wykonuje się operacji logicznych, bo nie ma to żadnego sensu.
masz totalnie pochrzanioną obsługę przerwania pomijam już ze jest zbyt obszerny ale wpisanie tam transmisji rs232 to już piramidalna pomyłka i to powoduje że nigdy tobie to nie zadziała. Poza tym kompletnie nie widzę powodu aby wyprowadzać sygnał na przerwanie INT0 moze tylko po to aby łatwiej mozna było sprawdzać przytrzymanie klawisza ale innego powodu...
Po co ci takie wielkie bufory ilku bajtów. Bufor wyjściowy Serialout jest nie potrzebny. Zakomentuj go (i to już może Ci od razu pomóc). Zamiast flushbuff możesz spokojnie napisać Clear serialin Proponuję też przejść na odbiór tego znaku w przerwaniu za pomocą Config serialin z opcją BYTEMATCH=ALL Poczytaj na temat tej opcji w helpie (angielskim)
Słuchaj kolego istotnie miałeś rację bo codevision nie generuje kodu przy gdy używasz przerwań od UART-a, ale nie ma problemu. Wytrzymaj do jutra wieczora to wygeneruję tobie kod w pełnej wersji. Niestety nie mam jej na komputerzez z którego piszę. Jednak zawsze możesz kod wygenerować i zaprogramować procka bez użycia przerwań. Niestety musisz go zaprogramować...
Stacja dokująca?
Jeśli działa telnet tzn, że jest ok, tylko problem z konfiguracją. Na tej stronie co podałem jest wszystko napisane (są też gotowe obrazy do tego routera, ale openwrt). Może wgrałeś obraz bez interfejsu WWW i dlatego jest problem. PS. Serial console (RS232) to nie USB
Zrób sobie osługe RS232 na przerwaniach. Jest tego w internecie od groma. np: [url=http://www.avrfreaks.net/forum/tut-... Nie znam bascomu ale : http://avrhelp.mcselec.com/index.html?di... A tu po polsku...
Czy li muszę jeszcze wykorzystać jakiś układ dopsowujący napięcie?
Przy takim zwarciu powstają liczne niebezpieczne stany nieustalone w sieci które szczególnie dla niskiej klasy zasilaczy impulsowych mogą być zabójcze. Z praktyki własnej miałem przypadek, że w wyniku zwarcia kabla zasilającego w innym pomieszczeniu uszkodziła się centrala alarmowa oraz mój komputer które to urządzenia były ze sobą spięte ( konkretnie...
Bez NAJMNIEJSZEGO problemu można zrobić to o czym piszesz panie autor i to z prędkościami RS232 rzędu 115200 a nie tak ślimaczymi jak 1200. A do tego jeszcze wiele innych zadań może ten sam procek wykonywać - mniej więcej tak jak to opisał kolega wyżej. Ja podobne układy robię i programuję w języku C i nie mam z tym żadnych tego typu problemów, które...
Dzięki za zwrócenie uwagi. Chcę zaimplementować zegarek RC - timer1, przetworniki ADC mają sprawdzać swój stan co kilka sekund, komunikacja po RS232 - przerwanie, inne timery również w przerwaniu. Wiem, że kod w przerwaniu powinien być krótki i zwięzły operuję tylko na flagach. Wykonanie akcji (ustawianie portów) odbywa się po za przerwaniem na zasadzie...
Witam !!! Nie napisałeś jakiego używasz kompilatora a w przypadku przerwań, wiele od niego zależy. W standardzie ANSI C nie opisuje się przerwań więc wyglądają one różnie. To kod dla standardowego kompilatora CodeVision. Obsługuje tylko odbiornik w przerwaniu pakując odebrany bajt do bufora. Pzdrawiam (M.) #include <mega8.h> #define RXB8 1 #define...
A teraz jeszcze pytanie z innej beczki. Procesor steruje pilotem RC5 na przerwaniu INT0, chciałbym jeszcze dodać obsługę RS232 ale nie chcę żeby ciągle było sprawdzane czy coś jest przesyłane bo to mi tylko spowolni program, czy jest możliwość wykrycia ze jakieś dane dochodzą do procesora i wtedy ustawienia flagi po tym będzie wykonany odbiór danych...
Jeżeli chodzi o wylutowanie to polecam gorącym powietrzem. ESS nie postawisz na nogi rs232.
Oj nieznam C... w ASM to banał, trzeba tylko odpowiednio ustawić timery i przerwania.
$crystal = 16000000 $baud = 9600 Przy tej prędkości transmisji i tym kwarcu będziesz miał spory błąd. Jeżeli chcesz używać tej prędkości to zmień kwarc na 8MHz. Osobiście gdy potrzebuje transmisji RS232 to używam programu który odbiera i wysyła znaki w przerwaniu od UARTA.
Kiedyś CA80 znałem BARDZO dokładnie. Przerobiłem program "monitora" tak że pisałem kod na PC - kompilowałem i plik HEX przesyłałem do CA80 przez RS232 Trochę przeszkadzało przerwanie nie-maskowalne i szybkość była chyba 600 bodów ale i tak było to duże udogodnienie. Praca z magnetofonem to była masakra.
Jasne ze da się zrobić, PCMCIA jest odpowiednikiem złącza ISA (albo PCI w nowszej wersji), wystarczy podłączyć scalony usart, jakiś klon 16C550 i powinno działać. Trzeba jeszcze przemyśleć problem sterowania, ale wydaje mi się że PCMCIA ma już własny dekoder adresowy magistrali. Zastanawiam się tylko czy naprawde warto w tym dłubać, za 200zł można mieć...
Jaka jest częstotliwość przerwań timera? Ile masz stopni jasności? (więcej niż 100 raczej nie zauważysz, a od tej liczby zależy, czy to będzie dobrze działać). Korekcji gamma w tym zastosowaniu nie potrzebujesz, a jedynym jej skutkiem jest zmniejszenie liczby stopni jasności diod w porównaniu z tym, co i tak musi obsłużyć oprogramowanie. Pomysł, żeby...
Rx miałeś dobrze skonfigurowane. Nie masz taktowania AFIO. [syntax=c]RCC_APB2PeriphClockCmd(RCC_APB... | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);[/syntax] I nie włączaj przerwań skoro ich nie używasz. Te 2 linie z USART_ITConfig są nie potrzebne.
Wstawić możesz gdziekolwiek. Deklaracja obsługi przerwania wygląda tak ISR(UART_RX_vect) { /tu kod usługi obioru return } W przerwaniu po odebraniu wszystkich danych ustawiasz flagę i oczekujesz jej w pętli głównej.
No i pomimo że w przerwaniach zasadniczo NIE POWINNO się wstawiać opóźnień i że z OBLICZEŃ wynika że na wyjściach 7442 i 7447 stany powinny się ustalić do momentu rozpoczęcia obsługi przerwania to jest to tylko "zasadniczo" i "obliczenia". Może jednak przerwanie za szybko zaczyna odczyt.W Bascomie jest opóźnienie w mikrosekundach WAITUS. Spróbuj to...
przerwania timerów mają wyższy priorytet niż przerwanie transmisji szeregowej. Jeśli wysłanie tych pięciu liczb trwa dłużej niz 25ms to na pewno w między czasie będzie przerwanie od obsługujące klawiaturę, jeśli ono Ci modyfikuje jakiś wskaźnik lub inną zmienną związaną z buforem wysyłania danych to tam bedzie powód gubienia znaków. Musisz tez przeanalizować...
buffor_rx to zmienna : volatile char buffor_rx która zmienia stan w przerwaniach UART ,poniewaz tel. przy wysyłaniu sms przez port rs232 ,dzieli go na dwa stringi ,a w przerwaniach odczytuje stringi zakonczone znakiem 0x0D
Witam, też mam pytanie w sprawie rs232 do laptopa. Tyle, że mam laptopa nowszego, więc portu PCMCIA brak, jest port PCI Express Card. Czy może ktoś mi doradzić jakąś przejściówkę z tego portu na rs232, która w pełni obsługuje przerwania? Potrzebuje programować sprzęt, który tego wymaga. Za pomoc byłbym bardzo wdzięczny, a nie chcę kupować w ciemno dopóki...
Potrzebuję przejściówkę z PCMCIA na RS232 z przydzielonym przerwaniem (laptop IBM T60). Na Allegro znalazłem dobrą przejściówkę - Silicom EtherSerial - w dobrej cenie jednak bez kabla. Ciężko taki gdziekolwiek dorwać, ale wymyśliłem pewne rozwiązanie: Dostępne są kable do modemów z takim samym wtykiem. Czy dałoby więc radę coś takiego: przejściówka...
Skoro do RS232 używasz timera0 to wróży że korzystasz z programowej implementacji UART'a - i ty się dziwisz że inne przerwania zakłócają ci pracę programowego RS232 ??? Przecież ATmega32 ma piękny sprzętowy UART - zrób to na nim i skończą się problemy.
Najdłużej tam pewnie trwa oczekiwanie na wynik pomiaru ADC który jest dodatkowo podwójny. Bascom robi dwa odczyty jeden za drugim. Można to wyłączyć, ale pomyśl o samym oczekiwaniu na konwersję. Gdyby to było poza przerwaniem to inne przerwanie spokojnie mogłoby to oczekiwanie przerwać tak jak można przerwać każde Waitms. Spróbowałbym w przerwaniu ustawić...
Niepotrzebnie zezwalasz na przerwanie z Timera do transmisji starcza tylko stan flagi mówiącej o jego przepełnieniu nie musi być przerwania z timera. Pozatym jaki masz kwarc standardowe prędkości pozwala uzyskać kwarc 11,059MHz. Sam walcze z rs232 pomiędzy dwoma 51 i chodzi mi bez obsługi przerwania z Timera. Nie próbowałem z kompem.
Przerwania....
Te dane ma odbierać procek 89C4051 przez RS232 i w przerwaniu od Rx ładować każdy kolejny bajt do pamięci I2C 4kB. Jako, że pamięć potrzebuje 5ms na zapis każdego bajta, procek nie ma bufora to baud pewnie wyjdzie na poziomie 1200. Jak widać ze struktury HEX'a dane są prawdopodobnie poukładane kolejno a puste miejsca to zawsze "0". Prościej będzie chyba...
Witam, Też miałem sporo problemów z Timerem w ATmedze 32. Po dziś dzień nie mam pojęcia dlaczego przez długi czas w ogóle nie działał (lub nie wyzwalał przerwania), na całe szczęście w ostateczności ruszył. Znajomy miał problem z przerwaniem od RS232. Również nie wiadomo czemu uC pomijał przypisanie wartości rejestru do zmiennej. W tej sytuacji pomogło...
z ustawieniami com-a, to próbowałem wszystkich opcji, tylko jak miałem w biosie ustawione: 3FH/IRQ4, to po wpisaniu polecenia ustawcom.bat albo mode com2... pojawiał się komunikat: Niedozwolona nazwa urządzenia, i pod spodem -COM2C:\windows.. znowu wpisuję do lekcja2 com2 wszystko jest w porządku, nie ma żadnych komunikatów o błędzie i pisze na końcu...
1. Nie stosuj niestandardowego połączenia pinów w gnieździe programowania, bo gdy podłączysz programator zgodny z ISP z włączonym zasilaniem układu programowanego, to będzie buuuuuum: http://mikrokontrolery.blogspot.com/2011... 2. Coś pomieszałeś ten układ resetu. Rezystor 330 przy kondensatorze ma ograniczać prąd jego rozładowania...
Na procu jest uruchomiony miernik częstotliwości (stacjonarny). Wykorzystane są dwa 16bitowe timery, uruchomiona jest komunikacja po rs232, zegar czasu na PCF8583 z podtrzymywaniem bateryjnym. Nie bardzo wiem jak to wszystko przełożyć na BASCOM AVR. Na początek spróbuj uruchomić przerwania oraz timer0 w trybie normalnego licznika - tak aby liczył z...
Dla kolegi LEM - tak doskonale działał HIS (SDI) oraz kilka rodzajów myszek i modemów zewnętrznych ale na oryginalnym układzie (wygląda jak wtyk USB i gniazdo RS232 a pomiędzy nimi kabelek). Nic nie musiałem grzebać w przerwaniach (na win98se) Pozdraiwam
_jacenty_ ---> nie, no nie chodzi o to, że nie doceniam, bo najpierw napisałeś, że po prostu wgrałeś wsad do ATmega16. Później dopiero zobaczyłem, że piszesz iż widzisz, że obsługa RS232 nie korzysta z przerwań ;) ... no to już musisz zaglądać w źródła a nie w HEX'a ..... Nic nie napisałeś na początku, że właśnie kompilowałeś żródła - stąd to nieporozumienie....
przerwanie sprzetowe IRQ dla przejściówek USB/RS232 można chyba ominąć stosujac programy Virtual PC czy DOSBOX ,co to konwerterów USB/RS lepszy jest FTDI od PL2303. PRogram Modsoft np chodzi na wolnym sprzecie lub pod DOSBOX
Gdzie sobie ma niby podłączyć pod komputer? DVD nie ma portu Rs232. Ten model DVD oparty jest na procesorze Sunplus, istnieje oprogramowanie (do pobrania niżej) do komunikacji przez port rs232. Poszukaj na płycie pinów RS232 TTL, zrób zdjęcie płyty to się zobaczy. Wtedy bedzie potrzebny konwerter RS232 TTL i może uda wgrać się firmware.
google nie gryzie ... http://www.beyondlogic.org/serial/serial... Tam masz gotowy program w C metodą odpytywania (pooling) i przerwań (Buff1024.c). Poczytasz , zmienisz kod źródłowy pod swoje wymagania, zrobisz crosowany kabel - inaczej sie nie nauczysz jak dostaniesz gotowca :)
zapomnij w takim prostym przypadku o przerwaniu Urxc (wywal z tego swojego kodu wszystko co masz związane z tym przerwaniem), zamiast tego - to co wpisałeś w przerwaniu - daj w pętli głównej - i wszystko w cudowny sposób ci ruszy. Co więcej - zainteresuj się takim poleceniem jak Config serialin - dzięki czemu włączysz sobie sprzętowy bufor RS232 - który...
Wpadł mi w ręce modem/router GSM GlobeSurfer III (bez plus) firmy Option. Na wyświetlaczu tylko logo producenta, chwilę poświeci i restart - tak w kółko. Jest połączenie przez piny RS232, jest możliwość przerwania resetu po stwierdzeniu braku firmware'u i jest dostęp do konsoli / linii poleceń (przez putty, hyperteminal). Niestety z poleceń, które podpowiada...
Tak w Bascomie istnieje idealny sposób aby rozwiązać odbiór znaków przez RS232 (także nadawanie) - za pomocą przerwań. A kod zajmie kilka linijek. Wystrczy zapoznać się dogłębnie z takim poleceniem jak Config Serialin oraz wykorzystaniem np jednego z parametrów do tego polecenia - Bytematch (ale także innych) wtedy przy minimum wysiłku i kodowania będziesz...
Zmodyfikowałem posta: spróbuj uruchomić przerwania
Po aktywności przerwania ma być wysłana na RS232 pewna kombinacja liczb - jaka to teraz nie ważne, i uprościłem to że wysyła się zawsze taka sama. Jeśli przerwanie działało by poprawnie to by non stop się te liczby nie wysyłały bo nie ma stanu niskiego na INT1.
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SerialPort1.Open() Timer1.Enabled = True End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub Timer1_Tick(ByVal...
Po co ten wskaźnik na dane? Zrób: volatile unsigned char znak; ISR(USART_Rx_vect) { znak = UDR; } Po co czekanie na RXC == 1 w przerwaniu uarta? Przecież jest to warunek wygenerowania przerwania.... Zapis: UCSRC = ~_BV(UMSEL) oznacza, że przypisujesz do UCSRC wartość 10111111. Chyba nie o to Ci chodziło. Pozdrawiam, Dr.Vee
W kwestii bascom-u Ci nie pomogę ale może wykorzystasz wstawki asemblerowe ; .org 0 rjmp RESET ; Reset rjmp EXT_INT0 ; zewnetrzne Int0 rjmp EXT_INT1 ; zewnetrzne Int1 rjmp TIM1_CAPT ; zewnetrzny wychwyt wartosci licznika 1 rjmp TIM1_COMPA ; komparator A licznika 1 rjmp TIM1_OVF ; przepelnienie licznika 1 rjmp TIM0_OVF ; przepelnienie licznika 0 rjmp...
Tak przeczytałem. Sposób z rzutowaniem na wskaźnik char* wydaję sie w miarę prosty. Tylko jak pozniej złożyć to juz na PC w Builder C+? Czy można zastosować to w drugą stronę? Na początku spróbuję zrobić transmisje bez przerwań ale w przyszłości będę modernizować program z wykorzystaniem przerwań od UART.
opóźnienie przerwaniu enkoder przerwaniu stm32 przerwanie przerwaniu
prostownik trójfazowy mostkowy przewód żelowany naprawa odkurzacza samsung
firstchip fc1178bc epson l3250
Jak zrobić smar do konserwacji profili zamkniętych? Profil aluminiowy 6060: obciążenie i wytrzymałość