$regfile = "m8def.dat" $crystal = 8000000 Enable Urxc On Urxc Rs232 Enable Interrupts Do 'Instrukcje w petli Loop End Rs232: 'tutaj zostalo zgloszone przerwanie w Udr jest aktualna przeslana liczba Print Udr Return
Nie wiedziałem że to zależy od rodzaju procesora. Przecież nie napisałeś tej wiadomości w dziale AVR tylko mikrokontrolery ogólne to skąd można wiedzieć czy chodzi ci w ogóle o AVR czy np ARM czy PIC - bo pomiędzy nimi może być różnie ;) Robię to na ATMEGA88 teraz jasne Może uzupełnię - czy da się jednocześnie nadawać i odbierać korzystając z obu przerwań...
Gdzie ty tą funkcje chcesz wywołać...
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...
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...
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...
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ń.
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.
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...
Bufor cykliczny trzeba zorganizować na RS232 oraz wysyłanie na przerwaniach i po kłopocie.
naprawde nikt nie wie jak moge obsluzyc ten port??? patrzylem na zrodla w necie ale ta moja klasa wydaje sie najlatwiejsza tylko zeby chodzila... moze ktos z Was ma, w dosyc prosty sposob zrealizowany, program do odbierania z rs232 (koniecznie w VC++)
bez różnicy kiedy ustawisz flagę, przerwanie powinno i tak zadziałać.
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
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.
Czy li muszę jeszcze wykorzystać jakiś układ dopsowujący napięcie?
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?
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...
No chyba że kabelek jest uszkodzony (np. przerwany) ale bardziej obstawiałbym konfigurację! pozdr.
spuszczam kod. kompilowalem go sdcc pod linuxem. wynik wysyła przez rs232 1200n81. procedura obsł przerwania i getchar są zbędne. j
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...
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)...
Pod koniec procedury obsługi przerwania SIG_UART_DATA po opróżnieniu bufora nadawczego chciałbym wywołać przerwanie SIG_UART_TRANS aby zmienić stan sygnału DE dla układu MAX485. W/g datasheet'u wystarczy ustawić bit TXCIE dla rejestru UCSRB aby spowodować wywołanie tego przerwania. Writing this bit to one enables interrupt on the TXC Flag. A USART Transmit...
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.
Proponuje przerzucic się na nowszą wersje WinAVRa bo z tego co piszesz pracujesz na starej wersji z 2005 roku. Nowsze wersje nie wymagają już podłączania biblioteki signal.h . Owszem, wersja której używam jest troszkę outdated, ale jakoś nie mam z nią żadnych problemów (oprócz wczorajszego, wynikłego raczej z późnej pory). A problemy są jak dla mnie...
Ale jaki to ma sens...??? Czy przypadkiem zmienna nie jest tworzona i kasowany przy każdym wejściu w przerwanie...? A więc spowalnia to tylko jego obsługę... Oczywiście w przypadku pc nie jest to nic dziwnego i sam tak robię ale na uC to chyba nie jest dobry pomysł...
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
Witam. Mam taki problem potrzebuję zrobić cos takiego że jak rs232 w procku odbierze daną to wygenerowane zostanie przerwanie i program "zajmie się" daną nie wiem jak to zrobić. Procesor to atmega 32 bascom AVR wersja 1.11.7.3
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 ;/
Witam kolegów programistów. Czy może któryś z kolegów ma gotowy program obsługujący szeregowy port RS232 pracujący na przerwaniach ? Jeśli nie to prosiłbym o informacje z jakich instrukcji powinienem skorzystać i jakie są ogóle zasady postępowania z portem RS i przerwaniami. Z góry dziękuję.
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...
Co chciałeś z tym zrobić? [syntax=asm]ldi r16, (1<<umsel)|(1<<ucsz1)|(1<... i gdzie to jest? [syntax=asm]spr_rs232[/syntax]
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.
0,000000069s - 1/14,475MHz - czas jednej instrukcji procesora 0,000086806s - (1/115200) *10 - najkrótsza ramka(8 bitów danych + start + stop) - co taki okres może przyjść przerwanie od portu szeregowego. Jak widać czasu jest dość(ponad 1000 instrukcji na przerwanie) pytanie co jeszcze robi procesor. Jak odbierasz impulsy z enkodera?
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...
Niestety wszystkie przejściówki USB-RS232 są widziane przez system jako porty wirtualne. Nie mają więc przypisanego przerwania :(
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
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
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 ........
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...
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...
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.
to moze problem tkwi w procu generujacym ten impuls? napisz sobie w asmie procedurke zliczajaca impulsy podawane z tego uC, i np wyslij je do PC po RS232. pozdrawiam, wesołych świąt
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...
W układzie samego czujnika, czyli mikrofon kondensator 10n tranzystor rezystory 1-5 zmieniłem tylko tranzystor na BC550C. podłanczam przez mikrokonroler (przerwanie) ->RS232 -> KOMP i co? Czujnik działa ale reaguje tylko z odległości MAX 20 cm - Kombinowałem i niewiem co jest nie tak. ; ( , a niestety nieposiadam oscyloskopu. I na analogu to też sie...
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...
Oczywiście, to jest standardowy układ w dekoderach do obsługi portu rs232.
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()?
Może spróbuj w ten sposób : $crystal = 4000000 Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1 On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera Timer0 = 145 'wartość początkowa od której timer bedzie zliczł...
(at)qazpylades Jakie masz ustawienia PRIMASK oraz jaki jest priorytet Twojego przerwania? Instrukcja cpsid i niekoniecznie maskuje Twoje przerwanie.
Nie mówiłem o USART tylko o RS232, a to nie to samo.
Co może być przyczyną tego, że zamiast wysyłanego "hello" odbieram w termianlu "hhhhheeeeeellllllllllllllllllllloooooo"... Dodam, że przy wyłączonym DMA nic takiego nie ma miejsca. Nie wnikam w konfigurację DMA i USART, ale logika tego fragmentu programu jest dziwna. Mam wrażenie, że funkcja wysyłająca tekst (usart_dma_str) jest wywoływana w przerwaniu...
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....
Jak na podstawie rejestrów ATRH i ATRL obliczyć szybkość między przerwaniami? A najlepiej jak na podstawie tego wylizyć szybkość transmisji SCI (RS232) w bodach? Tzn., co ile ustawić przerwanie, żeby transmisja odpowiadała np.: 1200 bodom? Przeniosłem z Automatyka i Robotyka
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...
INT0 to obsługa 4 przycisków, każdy z nich jest podpięty przez diodę do INT0, dzięki temu po naciśnięciu dowolnego każdy wyzwala przerwanie. http://obrazki.elektroda.pl/1384832400_1... W funkcji przez switch() sprawdzam który został naciśnięty i dokonuję odpowiednich działań. Ale coś zaczyna mi się wydawać że winny jest kompilator, inny...
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ć...
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...
Witam. Do Atmegi mam podłączony enkoder z drukarki na INT0 (obsługuje przerwanie). oraz rs232 , który komunikuje się z aplikacją na PC(też przerwanie). Opcja pierwsza: czytam dane z enkodera manualnie : mam o programie guzik "daj dane". Gdy kręcę enkoderem jak szalony to w lewo to w prawo a potem wciskam guzik "daj dane" to dostaje to co trzeba - znaczy...
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ć...
Pomęczyłem się trochę dzisiaj i chciałbym zapytać czy w dobrym kierunku idę. Poniżej dwa przykłady oraz próbki tego co uzyskałem. Przepraszam za jakość dźwięku. Niestety byłem zmuszony nagrać to przez mikrofon. Kod 1: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 20000000 $baud = 115200 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up...
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...
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.
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....
www.beyondlogic.org tam jest kompletny opis RS232 łacznie z przykładem (w C) wersja pollingu i przerwania
witaj. ostatnio usmażyłem/(zerżnąłem i pokręciłem) program do pędzenia synt. częst. za pomocą i2c. program słucha na rs232 to co dostaje z pc, (przerwanie), po aktualizacji stanu podzielnika syntezera odsyła po rs232 aktualny stan do pc. (przerwanie). syntezer programuję po i2c (kość tsa6057 - do słuchania w paśmie 130MHz). napisane w c i działa bez...
Masz zachwiania w sterowaniu serwami. Najprawdopodobniej podczas odbioru danych z RS232 serwo otrzymuje błędne pozycje(sygnały). Jeżeli serwa trzymają bez sygnałów sterujących(moje tak działa, ale nie wiem czy inne) to wyłączaj przerwanie timera na czas odbioru wiadomości przez RS232.
ja pisałem oczywiście o wejściu komparatora (on ma wejście różnicowe) ale jego przerwanie działą z opóźnieniem i dlatego osobno atmelowcy podprowadzili jedno wejście do int0. Ja mama inne dane co do tych błędów :-|
nie, pierwszy raz go programujesz programatorem, potem już wystarczy rs232 co do tych rezystorków, mam przerwać ścieżki od EEPROMa i do nich dolutować te rezystory, czy poprostu dolutować do nóżek ? pozdrawiam, razor2007
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...
Witam (at)piotrva Po pierwszej nie udanej próbie uruchomienia na Atmega328 ( #include uart.h program kompiluje się bez błędu ) w ten sposób [syntax=c] uart_init(9600); sei(); //przerwanie obsługa uart_puts("Test RS232\r\n");[/syntax] Działający program zawiesił się. Zablokowałem linijkę i odzyskałem poprawne działanie swojego programu [syntax=c] uart_init(9600);...
Witam eknoem2 przeczytaj to: http://www.freertos.org/RTOS-Cortex-M3-M... i daj znać czy problemy się skończyły.... chyba że to już czytałeś lub dodaj: [syntax=c]NVIC_SetPriorityGrouping(3); // wlacz grupe4 to robię tylko raz w main.c[/syntax] Jak w FreeRTOSConfig.h masz tak: [syntax=c]#define configKERNEL_INTERRUPT_PRIORITY 255 #define configMAX_SYSCALL_INTERRUPT_PRIORITY...
ale czy bufor to kwestja języka? wydaje mi się, że tu idzie o zasadę. Ja sobie zrobiłem bufor do rs232 w formie tabli, przerwanie dokłada na stosik znaki a procedurka zdejmuje , wystarczyła 8 bajtowa tabelka żeby nawet pisanie na 4 ręce nie powodowało przepełnienia. Zrób tak samo. Niech przerwanie odkłada ci na stos komendy a procedura niech zdejmuje...
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...
... natomiast w trybie synchronicznym linia TxD służy do wysyłania danych, a RxD służy do wysyłania impulsów synchronizacji. Jest dokładnie na odwrót - RxD to wysyłanie/odbieranie, a TxD to zegar. Zwróć uwagę, że zegar jest zawsze generowany przez procesor - zarówno w trybie nadawania, jak i odbierania. W jaki sposób urządzenie odbierające transmisję...
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.
Witam! Chciałbym zrobić układ regulacji fazowej na owym procku. Chciałbym obsługiwać przerwania od TIMER-a co 100us. Dodatkowo przerwanie od detekcji zera- wystąpi jak wiadomo co 10mS. Czy układ RS232 będzie obsługiwany równolegle jeśli będzie pracował z prędkością 1200b/s, co odpowiada 1 znakowi/10 ms? Czy prędkość RS232 ma tu coś do rzeczy- czytaj,...
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...
Z oczywistych powodów 3 urządzeń poprzez RS232 połączyć się nie da. Więc albo poszukaj procesora z dwoma UARTami (nie wierze, że nie ma takich '51), albo drugi zrób programowo (na nic nie musisz czekać, przecież masz piny wyzwalające przerwanie), albo zrezygnuj z RS232 i zrób to na RS485.
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ć...
Nie używam tego sprzętu, ale replikator portów jest po to aby uzyskać będące na nim porty. RS powinien być "pełen", czyli UART, konkretne przerwanie, adres I/O itp.
Witam serdecznie. Prosze o pomoc bo nie umiem sobie z tym poradzić. Chciałbym zmienić ten program tak aby wykorzystać przerwania obsługujące dane które przychodza z portu RS232, nie trzeba wtedy cały czas nasłuchiwać w pętli ( w moim programie to sa pętle 'if').Program działa poprawnie ale czas reakcji po otrzymaniu danej jest długi.Wiem że trzeba zastosować...
A co z rejestrem statusowym na czas wykonywania przerwania?
Ok, spróbuję, tylko skoro teraz przerwanie będzie wykonywać się po odebraniu 10 znaków to co gdy na końcu przyjdzie np 6 znaków? Wtedy przerwanie się nie wykona, co nie i nie odbiorę ostatnich znaków?
O coś takiego mi chodziło. Teraz jest wywoływane przerwanie i procesor tylko je wykonuje ustawia flagę i ucieka do obsługi całego kodu. rxFlag i txFlag - musi być tylu volatile (int/char itp.) by była możliwość zmieniania ich wartości w przerwaniu. Masz tak ?? Sprawdzałeś w symulatorze jak program skacze po funkcjach ?? Zrób tak. skopiuj to wszystko...
Stacja dokująca?
Mógłby ktoś zamieścić programik w C (!!!) który wskutek odebrania znaku przez port szeregowy spowoduje wywołanie przerwania dla AT Mega8 związanego z odebraniem znaku Rezonator zewnętrzny 4.9152MHz, 4800Bd 8bitów danych, 1 bit stopu Przerwanie nie musi nic robić - nawet odczytywać rejestru odbiornika - żeby się tylko wywołało. Próbuje od dłuższego czasu...
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)
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...
Dzięki dobry człowieku, ale tu już mam. Com'a można zadeklarować albo w kodzie albo przeciąganym symbolem. Jedyne co mi nie zawsze działa to przerwanie od nadchodzących danych, więc zrealizowałem to inaczej.
Właśnie nie podoba mi się że działa to co jest dosyć prostą sprawą no ale jak konkret: -Klawiatura AT(przydałoby się odczytywanie w przerwaniu) -Karta SD -Programowanie ISP :D(dla mnie spory sukces ze ruszyło od razu) -Ledy -Podświetlenie -Przerwanie od toucha -Komunikacja RS232/485 -Wszelkie ADC... -Zegar -LCD... -Temperatura -Bluetooth -Niektóre kanały...
Witam, Prędkość 115200bps. Używam DMA żeby nie było przerwań, a po to żeby sprawdzać czy będzie timeOut co 8us bedą miał przerwanie, to wydaje się być bez sensu. Chciałem użyć timer w trybie Slave mode: Reset mode Gratuluje zdolności matematycznych. Jeśli już to co 90-100us bedziesz miał przerwanie.
Robiłem tak z LPT (dokładnie: COPY CON LPT1 i wtedy wpisywane znaki pojawiają się na porcie równoległym - przydatne przy testowaniu drukarek igłowych), z COM teoretycznie też powinno działać. Dla chętnych : przerwanie w/w operacji następuje przy CTRL+C .
Przy jednopoziomowym systemie przerwań łatwiej zsynchronizować dwa przerwania (które same zapewniają sobie "atomowość") niż przerwanie i "pętlę główną".
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...
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...
Zastanawiam sie nad tym czy pracując pod pełnym DOS-em można by było ustawić port PS/2 (jakby nie było szeregowy, można zrobic przejściówkę z PS/2 na RS232) na jakieś wolne przerwanie i adres, z tego co wiem to IRQ2 i 9 są standartowo wolne w DOS-ie,a w setupie Visy( po wejściu przez F2 wpisujemy TEC bez potwierdzania) ustawić odpowiednie adresy i przerwania....
Dodajesz przerwanie od przepełnienia timera i w nim zliczasz ilość przepełnień. Reszta to już matematyka. Przykłady: http://mikrokontrolery.blogspot.com/2011... http://mikrokontrolery.blogspot.com/2011...
przerwanie rs232 rs232 przerwanie bascom bascom przerwanie rs232
kamera reset pamieci tomtom bezpiecznik zasilacza komputera
wymiana baterii telefonie motorola wymiana baterii
Zmiana języka w systemie Uconnect: instrukcje Schemat płyty głównej Lenovo G50-70 - gdzie znaleźć?