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
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...
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ć...
Witam Nie wiem jak to się robi w VC++ ale mogę ci powiedzieć jak to robiłem w BC++. Korzystałem z biblioteki ComPort Library 3.0. Wysyłanie przez RSa sprowadza się tam do jednej linijki w w kodzie programu a do odbioru służyć może również polecenie lub specjalna klasa. Polecenia w tej klasie są wykonywane kiedy w buforze portu zostanie odebrany znak....
$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
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.
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...
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. 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
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...
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?
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...
No chyba że kabelek jest uszkodzony (np. przerwany) ale bardziej obstawiałbym konfigurację! pozdr.
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...
Bufor cykliczny trzeba zorganizować na RS232 oraz wysyłanie na przerwaniach i po kłopocie.
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)...
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...
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...
bez różnicy kiedy ustawisz flagę, przerwanie powinno i tak zadziałać.
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.
spuszczam kod. kompilowalem go sdcc pod linuxem. wynik wysyła przez rs232 1200n81. procedura obsł przerwania i getchar są zbędne. j
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.
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
Czy li muszę jeszcze wykorzystać jakiś układ dopsowujący napięcie?
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...
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...
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
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?
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...
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...
(at)qazpylades Jakie masz ustawienia PRIMASK oraz jaki jest priorytet Twojego przerwania? Instrukcja cpsid i niekoniecznie maskuje Twoje przerwanie.
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...
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...
Niestety wszystkie przejściówki USB-RS232 są widziane przez system jako porty wirtualne. Nie mają więc przypisanego przerwania :(
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.
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. 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...
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...
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 ........
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ł...
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()?
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
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...
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ł...
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ę.
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...
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 ;/
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...
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.
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...
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);...
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.
A co z rejestrem statusowym na czas wykonywania przerwania?
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
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
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,...
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.
Nie mówiłem o USART tylko o RS232, a to nie to samo.
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...
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
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ć...
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...
Oczywiście, to jest standardowy układ w dekoderach do obsługi portu rs232.
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ć...
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
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...
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.
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.
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...
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...
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.
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ć...
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ć...
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 :-|
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, 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.
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...
Oj nieznam C... w ASM to banał, trzeba tylko odpowiednio ustawić timery i przerwania.
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 .
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...
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.
... 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ę...
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...
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?
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....
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...
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...
Przy jednopoziomowym systemie przerwań łatwiej zsynchronizować dwa przerwania (które same zapewniają sobie "atomowość") niż przerwanie i "pętlę główną".
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)
W serial event wrzuciłem Ci gotową funkcję z Arduino do odebrania linijki tekstu, przerobioną na tablice char (bo tak woli UDP ESP). Jedyna niedogodność to konieczność jej wywoływania w ESP, w UNO robi to przerwanie RX.
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...
Wielkie dzięki za tak szybką odpowiedź. Czy mógł bym spytać co rozumiesz przez skopane sparsowanie? Jeśli chodzi o return 0 w funkcji uart_getc() - to w książce, z której korzystałem autor z tego skorzystał, tłumacząc, że 0 przy łańcuchach tekstowych oznacza koniec tekstu. Czy w takim razie lepiej było by zrobić np. coś takiego? [syntax=c] char uart_getc(void)...
a zajrzałeś chociaż sobie na ostatnią stronę rozdziału USART w PDF'ie do swojego procka - gdzie są tabelki w których jak byk masz przedstawione procenty błędów dla danych prędkości RS232 dla poszczególnych częstotliwości taktowania???? wystarczy zobaczyć sobie na tabelkę pierwszą z pierwszych - kwarc 1MHz i prędkość 9600bps - żeby zobaczyć że w podstawowym...
Przedstawiam projekt symulatora procesorow. Ma on byc uniwersalny (tzn zeby mogl symulowac rozne procesory). Na razie pisze biblioteke procesora AT89C51, ktorej wczesna wersje dołączam do projektu. Mam prosbe, aby kazdy komu sie chce przesymulował pare programów aby zobaczyc czy dobrze dzialaja rozkazy, operacje ALU, skoki warunkowe, itp, itd. Kilka...
No cóż, jak dla mnie to 2 sprawy do przerobienia : 1. Pomiar czasu na Timer0 - jakaś parka bajtów w SRAM, służąca za licznik, który co przerwanie zmniejsza swoją wartość do zera, ale się nie przekręca. Jak chcemy zmierzyć czas, to cli, zapis licznika, sei i już tylko sprawdzamy czy licznik jest wyzerowany, a w międzyczasie program może wyskoczyc do...
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...
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...
rs232 przerwanie rs232 przerwanie bascom bascom przerwanie rs232
czyszczenie pralki candy firewall livebox przestrojenie tunera radiowego
tranzystor kanalem tranzystor kanalem
Stabilizator SVEN AVR Slim-1000 LCD a ochrona pieca gazowego Mleczna woda z pompy WZ 250 - przyczyny i rozwiązania