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...
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...
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...
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 ........
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
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ć...
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ł...
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...
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...
Programiki ciekawe ale można jednocześnie używać instrukcji Print i przerwań w Bascomie ,wymaga to pewnego małego zabiegu. pzdr
Za punkty - nie, przynajmniej nie ja. Ale cos pomóc mogę. Zrealizowałem już parę projektów uC + vb6 i jakoś one działają. Może zacznijmy od samego uC. Jeżeli był by to asm (bascom + zaawansowany bascomowiec) to zrobiłby to na dwuch tablicach które wyrażały by bufor odbioru i nadawania np rs_tx_bufor(12) as byte i rs_rx_bufor(12) as byte Można by to...
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)...
Odpowiem za autora: Wysłanie czegokolwiek przez Uart na pierwszym uC powoduje przerwanie od Uart na drugim uC. Ot tyle.
P.S. Oczywiście, że przerwania lepsiejsze:) Zwłaszcza z buforem :)
Razem z procedurą odbioru uruchamiasz timer ustawiony na okres na np 2-3 czas transmisji. Jeśli odebrałeś prawidłowe dane zatrzymujesz timer w innym przypadku timer zgłosi przerwanie i masz informację o błędzie.
Witam, Rozglądnij się raczej za urządzeniem na PCMCIA, wszelkie przejściówki na USB nie będą dobrze współpracowały z Twoimi programami, gdyż nie wywołują przerwań w systemie. Urządzienie jest widoczne w systemie jako replikator portów USB, tak więc np programy dosowe nie drukują na drukarce podłączonej do przejściówki - na złącze LPT... Pozdroofka
tak tylko ze ten zegarek ma taką dokładnosć jak mechaniczny. proponuje inny sposób ( na zegarek ). timer0 mode 2 ( z automatycznym przeladaowaniem ) wpisujesz to tl0 np: 250; przerwanie co 250us ( kryształ 12MHz ) acha w deklarujesz przerwanie z parametrem "nosave". liczysz przerwania np 200 przerwań to 50ms; liczysz 50-ti po 20 piedziesiątkach masz...
skoro chcesz jeden znak to po co takie kombinacje dim bufor as string*1 dim jest_dana as bit przerwanie: bufor=chr(udr) set jest_dana return
Łącze szeregowe idealnie nadaje się do odpytywania drugiego procesora. Na I2C to trochę daleko. Na procesorach musisz: - oprogramować wysyłanie "pytania"/"odpowiedzi", czyli musisz nauczyć się wysyłać dane przez łącze szeregowe - napisać obsługę przerwania łącza szeregowego - czyli co ma się dziać kiedy na port przyjdą jakieś dane - musisz nauczyć się...
No to zaczynamy po raz kolejny. Coś takiego jak stworzyłeś to niestety za szybko nie będzie działać. Mega z kwarcem rs 14 z groszami działa naprawdę szybko i można zrobić bardzo dużo w jedna sekundę. Do odbierania i wysyłania danych można sobie napisać własną procedurę - nawet w bascomie i jest ona sporo szybsza i działa rewelacyjnie. Deklarujemy przerwania...
Witam tak jak doradził jeden z kolegów dałem przerwanie i cały program chodzi bez zmiany funkcji do odbioru z UART.Temat zamykam.
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...
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...
Jak używasz przerwań, to po odbiorze procek dostaje przerwanie SERIAL. jak szukasz po rejestrach, to w czasie nadawania i odbioru są ustawiane bity w SCON, ale nie pamiętam które. Możesz poszukać na forum elektroniki praktycznej. Gdzieś tam opisywał to Zbeegin (jako odpowiedź)
ok teraz można analizować ;) skoro widzisz kwadraty w pierwszej linijce a w drugiej pusto to na 1000% oznacza tylko, że wyświetlacz nie został prawidłowo zainicjalizowany (programowo oczywiście).... co może być tego powodem? 1. na pewno nie Bascom - bo w takiej prostej konfiguracji to zawsze ale to zawsze działa chyba, że 2. sprawdź po trzykroć połączenia...
i właśnie o to chodziło by działało bez przerwania a jednocześnie w "przerwaniu" w tle No to muszę Cię zmartwić, bo buforowanie działa na przerwaniach i te masz włączone, choć sam tego na początku nie zauważyłem - SEI :D PS Część kodu, jakaś dziwnie znajoma :lol: Owszem bo po raz pierwszy korzystam z BASCOM AVR więc się podpieram przykładami kolegó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....
Co oznaczają te ## w tym przykładowym przesuniętym programie? Spróbuj: 1. zsynchronizować zegary (może problemem jest różna częstotliwość taktowania 2. skrócić program odbierający znaki o czasożerne procedury, jeśli to pomoże to trzeba zaprojektować programowe FIFO po stronie odbiorczej koniecznie na przerwaniach.
Nie wiem co Panowie wyczyniacie u siebie w tym basicu, używam C i odbiór w przerwaniach, dane są czyste bez żadnych śmieci czy krzaków.
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...
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.
Ja już za mało pamiętam Bascoma żeby tu podpowiedzieć. Ale na pewno można na własny sposób oprogramować przerwania - tyle że to będzie niejako wyważanie głową drzwi bo z jednej strony Bascom ma fajnie napisaną sprzętową obsługę RS232 tylko trzeba umiec ją wykorzystać. Ale kurczę zaglądam teraz do HELP'a bascoma a tam jak byk masz napisane: Remarks pin...
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...
Witam przeczytałem już chyba wszystko na temat komunikacji RS232 co było na elektrodzie i nadal nie wiem jak to zrobić żeby działało $regfile = "89c2051.dat" $crystal = 1105200 $baud = 9600 enable INTERRUPTS enable SERIAL on SERIAL przerwanie do loop przerwanie: if Scon.0 = 1 then Scon.0 = 0 print "odebralem " if Scon.1 = 1 then Scon.1 = 0 return zaraz...
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.
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...
Witam ! Pytanie pewnie trywialne, ale ja odpowiedzi nie znam. Chce nawiązać komunikację pomiędzy dwoma AVR'ami. Programowane w Bascomie. Czy to się robi tak, że w przypadku SPI, jak i UART, jeden uC nadaje, a ten odbierający po odebraniu wywołuje przerwanie które odbiera bajt z bufora i przypisuje do jakiejś zmiennej ? Bo jeśli nie i odbiór następuje...
po za tym porty sterujące układem max485 nie mogą być w konfiguracji jako pind tylko jako portd ,jesli wysyłasz portd.2 = 1 jesli odbierasz portd.2 = 0 ,polecam zajrzeć do podręcznika bascom ,i w odbiorniku wykorzystać przerwania od uart'u
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...
To może się okazać bardziej skomplikowane, niż się wydaje. Wszystko zależy od tego, jaki jest algorytm wyświetlania w tym częstościomierzu. W każdym razie, w najprostszym przypadku można próbować coś w tym rodzaju: 1. utworzyć tablicę na 7 cyfr wyświetlacza. 2. ustawić timer na generowanie przerwań z prędkością > 100 razy na sekundę. Lepiej nawet rzędu...
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...
$crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 $baud = 4800 Config 1wire = Portd.7 Dim T1 As Byte Dim T2 As Byte Print "ala ma kota" Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 waitms 250 Waitms 250 waitms 250 1wreset 1wwrite &HCC 1wwrite &HBE T1 = 1wread() T2 = 1wread() Print T1 ; " " ; T2 ;...
Ja też nie jestem pewny, ale nie wyobrażam sobie pisania programu obsługującego i2c, 1wire, rs232, rtc, 4094 i 74165 w pętli do loop...? Być może do tego jednak dojdzie - jak tak dalej pójdzie jak idzie. :-(
Witam, moim zdaniem z tego co opisujesz to po pierwsze widać chyba jak na dłoni, że nie wyrabia się prądowo ten 78L05. Przecież on chyba może maksymalnie 100mA !!! więc nie dziwne, że na jednym wszystko wysiada. Zamiast więc 2 78L05 daj jeden zwykły 7805 po drugie przynajmniej na schemacie nie widać (a może dałeś) żadnych kondensatorów odsprzęgająych...
U mnie jest jeszcze o tyle skomplikowana sytuacja, że płytka jest już wykonana i nie mogę sobie pozwolić na przeróbki. Z tego co wstępnie czytam to tym USART przesyłamy sygnał po rs232 czyli komputer. Ja natomiast wynik z 1-wire muszę przesyłać na 2x8 LCD. Próbowałem, dzielić 1-wire na bloki i odczytywać w przerwie od przerwania, ale nie dawało to efektów....
...jeśli już jednak o tym mowa to nie żebym chciał męczyć cię o tą rozbudowaną funkcję przerwania, ale może chociaż tak w 2 słowach powiesz mi jak "to w locie" dekodujesz? tzn - przy okazji na jakim procku minimum warto się za to zabierać? M8? M16? M32? czy jeszcze większy? Bez przesady ;) Jak jest >=512 RAM-u , to wystarczy do smsowania. Co do ilości...
Napisalem takowy program i cosik nie dziala mi prawidlowo z przerwaniami,moze cos nie tak:/.Zamiast czekac na przerwanie to po uruchomieniu od razu wskakuje w program przerwania co moze byc nie tak??.Jak wstawie przerwanie INT0 to wszystko jest ok (podczas emulacji programowej) a w przypadku seriala odrazu wskakuje w przerwanie.Moze nie ma takiej mozliwosci...
Heh, no już się powtarzam... :) W głównej pętli programu jest instrukcja ; Input Rs_data Czyli, że nic mi nie pomoże żadne odliczanie czasu, bo przez 99% czasu program nic nie robi stojąc na instrukcji input, i czekając na dane z rs232. I właśnie dlatego wymyśliłem to przerwanie, żeby - kiedy przyjdzie zapytanie o temperaturę, były te dane już gotowe....
Robi się to prosto na wejściu ICP Atmegi, mierzysz czas pomiędzy kolejnymi zboczami, raz jest opadające, raz narastające itd.. potem to tylko interpretacja wyników, liczenie bitów i po odliczeniu 64 bitów z transmitowanych 66, bo dwa ostatnie dla uproszczenia procedury pomijasz. wyświetlasz na LCD lub wysyłasz po RS232 do komputera, a tam wyświetlasz...
Witam, ja się w ogóle nie dziwię, że masz taki efekt, ja gdybym był na miejscu procesora i gdybym otrzymał taki kod to też bym zwariował na maxa ;) Na prawdę jeszcze czegoś takiego to nie widziałem, żeby : 1. nie skorzystać ze sprzętowego UARTA - gotowca w bascomie 2. nie skorzystać z pięknych buforów cyklicznych - gotowca w bascomie tylko w zamian...
Kolejny raz widzimy to samo. Zamiast dobrać kontroler do zadania, to próbujesz na siłę dopasować zadanie do kontrolera leżącego w szufladzie. Tutaj o tyle gorzej, że nawet się nie zastanowiłeś ile zasobów potrzebujesz, tylko od razu przyjmujesz 2 albo 3(!) kontrolery do w sumie bardzo prostej aplikacji. Moim zdaniem wszystko zrobisz na jednym uC i może...
Mam pytanie: jak obsługuje się piloty pracujące w rc5 pod BASCOM?? Prosiłbym o wytłumaczenie dla laików... np przykładowy kod... może być na przerwaniu... nawet lepiej.. :D A mam jeszcze takie pytanie jakiego AVR'a polecacie do sterowania robotem?? Chciałbym, aby miał prosty programator min2kb pamięci dużo wejść i RS232... pomóżcie..
Witam A w czym piszesz na uC ? W bascomie zadekalrujesz sobie powiedzmy jakiś bufor i jak coś do niego wpadnie to dostaniesz przerwanie. Daną z bufora przypisujesz do zmiennej (byte) i wysyłasz ją spowrotem. realizujesz w ten sposób coś wo rodzaju echa. To powinno zadziałać. Jeśli bedziesz to wyświetał na LCD to będzie trochę zamętu. co innego wyślesz...
Czytam i sam się pogubiłem hehe . Czy tu chodzi o względne przesunięcie (tmf) czy bezwzględne (satanistik). Parę miesięcy temu robiłem sterowanie PID dla servo Xmega w bascom . [youtube]https://www.youtube.com/watch?v... Nie obyło się bez problemu , który polegał na zliczaniu bezwzględnym więcej niż 65535 impulsów . Mój wpis z innego...
No, ale jak w bascomie Dodano po 56 No, ale dalej nic nie rozumiem. Post august_a zniknął. Post freddi chopin zniknął. Moja odpowiedź na nieistniejący post jest
Eeeej panowie, nie trzeba wchodzić tylnymi drzwiami, nie trzeba stosować żadnych sztuczek i nie trzeba koniecznie tworzyć przerwanie, które jakoś tam "na siłę przerwie input". Wystarczy tylko inaczej - a w zasadzie to "normalnie" podejść do tematu a nie od tyłu. Niestety help bascoma nie pomaga w takim myśleniu od przodu ale nie ma co się dziwić - tam...
Witam ponownie. Do generacji przerwania, w czasie którego obliczana jest liczba pseudolosowa, wykorzystałem tym razem Timer1 - przerwanie wywoływane jest co około 0,5s. $regfile = "8535def.dat" $crystal = 8000000 $baud = 9600 Config Timer1 = Timer , Prescale = 64 Dim Losowa_waga As Integer On Timer1 Przerwanie_wagi Enable Interrupts : Enable Timer1...
:arrow: Mictronic: Predkosc transmisji to 9600! Ponizej wklejam wycinki mojego programu do obslugi tego modulu: '------------------------------- ' modul RFiD ' ' 9600.1.0 ' dane 0xff,x,x,x,x,x,crc8 '------------------------------- {...} $baud = 9600 ' predkosc transmisji Config Serialin = Buffered , Size = 100 ' rozmiar bufora {...}...
http://obrazki.elektroda.pl/8414552600_1... Jakiś czas temu przedstawiałem elektroniczny przełącznik, który zbudowałem na zawody samochodowe: http://www.elektroda.pl/rtvforum/topic19... Chciałem przedstawić nie planowanej rozbudowy urządzenia. W tej chwili urządzenie nie współpracuje tylko z chronometrem i jedną fotokomórką,...
Witam! Od jakiegoś czasu bawię się AVR Studio 4 po przesiadce z BASCOMA. Jak narazie jest nieźle ;) ale mam mały problem. Mianowicie, chciałbym sobie przy pomocy ADC próbkować sygnał z częstotliwością X (dajmy na to 8kHz) i zapisać go do tablicy. O ile w BASCOMIE napisałem sobie taki programik (przerwanie Timer2 8kHz, w przerwaniu odczyt ADC do tablicy...
No właśnie tylko zacząłem zabawę z atmegą w bascomie bawiąc się z coraz to większymi układami no i tak doszedłem do tego projektu co teraz. Ponieważ miał to być sterownik ogrzewacza który znajduje się w innym pomieszczeniu napisałem sobie aplikacje do układu który miał być panelem sterującym i do układu wykonawczego. Taki projekt przy którym też pewnych...
Eh ten rs-232 + przerwania to juz mnie o bóle głowy przyprawia. Mam programik: $crystal = 11059200 ' czestotliwosc kwarcu $baud = 1200 ' predkosc transmisji Dim X As Byte , Znak As Byte Enable Interrupts ' wlaczenie przerwan Enable Serial ' wlaczenie przerwania portu RS232 On Serial Port ' na przerwanie z portu wykonaj procedure "port" Do ' poczatek...
Przede wszystkim nie wiecz czy wykrywasz początek bitu startu, jego środek, czy może prawie koniec. Gdybyć wykrywł zbocze z wykorzystaniem przerwania, to dopiero wtedy mozna mówić o synchronizacji. Poza tym odliczanie czasu poprzed delay nie jest zbyt dokładne. Najlepiej wykorzystać do tego timer, czyli zrobić programowy UART, o którym pisałem w moim...
Bascom jest językiem w którym nic nie jest pewne , Problem mogą robić inne przerwania , poza tym nie widzę deklaracji portu com ,bo $baud to dla mnie za mało . Co do pytania na końcu to prawdopodobnie dla pierwszego przypadku dostaniesz wartość w hex=1 a w drugim Hex 49 bo zapis bez przedrostka i innych znaków dotyczy wartości dziesiętnej .
Zgadzam się, jak wszystko jest podłączone ok to nie ma szans aby układ nie transmitował. Faktycznie ja też stosuję 11059200 i zawsze działa. SPRAWDŹ KABLE! 1. Po pierwsze kabel komp<->RS232 czy masz kabel z zamienionymi końcówkami Rx Tx tzn. przy kompie 2 przy Max232 3 i na odwrót! 2. Sprawdź schemat połączeń max 232 z noty aplikacyjnej - proawidłowe...
Od kad zmienilem bit CKOPT w fusach dziala bardzo stabilnie za kazdym razem dostaje informacje AT+CSQ+CSQ: 19,99OK Ja wycinam z tego tylko to 19 i przeliczam na dBm oraz robie z tego bargraph Zmienilem tez petle while, wend tak aby wychodzil po znaku OK a nie po {CR} bo w takim wypadku bym nic nie odczytal. Nie rozumiem do konca czemu bez zerowania...
ok panowie - poradziłem sobie nieoczekiwanie w nieoczekiwany , sprawny, szybki i łatwy sposób, przynajmniej jeśli chodzi o odczyt z układu mojego SLAVE i to bez żadnego softI2C itp... ... jak ? jesli to kogoś zainteresuje .... Bascom to jednak fajne "zwierzątko" otóż w kilku linijkach po obu stronach zorganizowałem softwarowy RS232 na dowolnie wybranym...
W nadajniku print zmienna umieściłem w przerwaniu co 1sekundę. W terminalu przykładowo wygląda to tak; 223 223 223 223 223 224 itd Jak wcześniej używałem printbin - inputbin to działało, czasem tylko gubiło dane. Dlatego próbuję doprowadzić transmisję do ładu.
powiem wam, że trzy dni męczyłem w bascomie ten problem i po prostu NIE DA SIĘ, kod wygląda poprawnie, ale to nie działa, z przerwaniami cos się kopie. W asm zacząłem to w końcu robić, bo przynajmniej działać powinno. Gdyby komuś jednak się udało - to jestem bardzo ciekawy :D
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...
Witam Rozumiem że masz problem ze sposobem wysłania i odebrania jakiejś ramki i jej rozszyfrowania. Poniżej przykład mojego programu (fragment) w BASCOMie odbierający całą ramkę z transmisji i dzielący ją na konkretne informacje (bajty). Może Cię naprowadzi na rozwiązanie. [syntax=basic4gl] '-------- obsluga przerwania z RS ----------------------------...
Macie panowie racje. Generalnie to dawno temu zaczlem przygode z bascomem wtedy na 89C4051 ale poleglem i dalem sobie spokoj na wiele lat. Teraz wrocilem do tematu. Zaczalem od prostackich programow gdzie np delay 1sekunda sluzyl mi do mrugania ledami itd. Wstawialem takich delai wiele i mi diodki mrugaly jak cos tam mialem zglosic. Ale zaczalem sie...
Nie dziaduj :D Jeśli masz chociaż jeden wolny pin w układzie to otwórz na nim softwarowy uart. To tak proste że nie wiem do czego porównać :D Printbin #5 , Tempword albo Print #5 , Tempword cokolwiek będziesz chciał... Możesz w pętli cały bufor..no Sky is the limit EDIT. Co do Twojego poprzedniego pytania. Przerwanie jest obsługiwane za każdym razem...
Dzięki! Pytałem zapobiegawczo. Muszę wybrać temat pracy inżynierskiej. Kiedyś bawiłem się BASCOM-em, ale do przerwań nie doszedłem- pamiętam, że też miałem problemy z równoległym wykonywaniem zadań przez procesor, ale i moja wiedza była też mizerna. Ten program chcę napisać w AVR-GCC, bo to jest szeroko chwalone środowisko programistyczne i język programowania...
Reasumując "uart" nie korzysta bo w trakcie wpisywania do jednej połówki (16-bit) druga połówka nigdzie mu nie ucieknie w odróznieniu od 16bit np licznika i liczniko podobnych. A wcale nie taniej jest prowadzic dodatkowe połaczenia gdyż bezpośredni wpis nastepuje tak samo jak do RAM więc tutaj nie ma dodatkowy połączeń a są w przypadku prowadzenia ścieżek...
Witam, Programuję sobie procesorek AT89C2051 i magistralę 1-Wire. O ile z odczytem danych z magistrali nie było problemów, o tyle z wysłaniem tego przez RS-232 jest problem. Czy ktoś z użytkowników ma jakieś gotowe procedury zapisu i odczytu do porty RS232? W BASCOM wszystko działa, ale chcę to zrobić w C. Na razie doszedłem do: //funkcja obsługująca...
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...
Brak deklaracji kwarcu $crystal Brak deklaracji procesora $regfile Brak deklaracji szybkości $baud Brak konfiguracji RS232 czyli Config Com1... Zła deklaracja pinów, nie Config Pin... tylko zawsze Config Port... Brak informacji o ustawieniu szybkości taktowania fusebitami Brak informacji o typie procesora Brak informacji z jakim urządzeniem się komunikujesz...
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
Na AVR bez problemu można realizować transmisje o szybkościach rzędu setek kbps. Według mnie problem u ciebie polega na tym, że dane odbierasz pojedynczo (w procedurze obsługi przerwania odebrana daną wpisujesz do zmiennej - a co jeśli następny znak pojawi się szybciej niż zdążysz tę zmienna "obrobić" w programie?) - przez to gubisz część danych. Spróbuj...
"- a nie mówiłem :), pulling to pulling". czytaj dokładniej bo o tym na samym początku mówiłem i ja i inni i sam Osamu Tamura - tak więc z tego typu twoich wypowiedzi wynika tylko to co w skrócie zamieściłem w kilku linijkach poniżej: ... a nie mówiłem, że mówiłeś iż mówiłem o tym, że mówiłeś - to ty nie wiedziałeś że mówiłem o tym, że mówiłem ...................
To mój pierwszy post na tym forum.. :) Zrobiłem zegar DCF na dyplomówkę ATmega32 + 16MHz + 2*16 + U4221B (DCF) + RS232 + RC5 all SMD. W szystko jest na jednej płytce i chodzi oki,odbiornik działa oki nie widzę zakłuceń (mam diodę z ID tego sygnału) teraz to programuję w Bascomie i tak... Nie chodzi mi samo dekodowanie DCF: - wykorzystuję przerwanie...
Witam. Mam problem z porgramemem w Bascomie, Do tej pory wszystko działało poprawnie aż do poewnego momentu zaczeły sie jakies anomalie. Mianowicie, program nie reaguje na zminanę na porcie A w podprogramie zamkanie_awaryjne, zamykanie i otwieranie, gdy wciskam przycski i wysyłam stam przez RS232 to odczytuje poprawnie ale w Do Loopp Until Kpz=1 nie...
Rzeczywiście zwiększenie rozmiaru stosu pomogło. Program działa poprawnie. Dzięki dla Piotrka za trafną podpowiedź. Jeszcze mam dwa pytania: 1. Jaka będzie częstotliwość przerwań T0 przy ustawieniach: Config Timer0 = Timer , Prescale = 1024 $crystal = 8000000 (powinno być około 30Hz) 2. Czy mogę używać swobodnie wszystkich timerów atmegi, jeśli korzystam...
Jeżeli ma to być na RS232 to dość dawno Philips w nocie aplikacyjnej chyba dla 751 opisał protokół na przerwaniach (widziałem na własne oczy lecz numeru nie pamiętam). Kłopot w tym, że to działa dla dwóch procesorów, ale nic nie stoi na przeszkodzie by zaimplementować to dla RS485 i liczba chętnych do rozmów wzrośnie do 32 (chyba się nie pomyliłem)....
ja ze swoich doświadczeń mogę powiedzieć, że ta biblioteka I2C Slave (softwarowy) .... jest do .... bani. można za pomocą niej zrobić to co jest w przykładzie, czyli np z układu ATtiny2313 emulację expandera PCF8584 i to jako tako działa. Ale jak się chce dodać już własne procedury obsługi do tych przerwań to wielka kicha. Magistrala się wiesza i ogólna...
No nie wiem czy tak można. Podłączenie 2 wyjść razem gdy jedno daje 1 a drugie 0 źle się kończy. Nie sądzę żeby MAX232 był jakiś inny. Nadal pozostaje problem rozpoznania z którego portu przyszły dane bo mam też 2 COMy wyjściowe i zależnie z którego przyjdą dane to na odpowiedniego muszę je przekierować. ------------ zauważyłem że Bascom (bo w tym piszę+wstawki...
witam dioda miga co 1 sek ( na tyle co moge zmierzyć ) ale jak napisałem program na przerwaniach T0 preskaler 256 do Timera load 250 i to x 250 to ok miga co 1s T0 preskaler 256 do Timera load 250 i to x 25 to ok miga co 0.1s T0 preskaler 256 do Timera load 25 i to x 25 to nie miga co 0,01s i do tego z zmienną częstotliwością ??? może coś z tym kwarc...
w helpie do bascoma jest wszystko bardzo dobrze opisane podstawa to $crystal = xxx 'Częstotliwość $baud = xxx 'Prędkość UART można też dodać Config Serialin = Buffered , Size = 50 'Konfiguracja UART IN Config Serialout = Buffered , Size = 50 'Konfiguracja UART OUT ale bez tego też chyba działa niejestem pewien ale wydaje mi się też że trzeba odblokować...
Ogólne dostępne moduły radiowe są bardzo proste w obsłudze. Posługujemy się samymi przerwaniami nośnej. To tak jak by na sztywno połączyć ze sobą po RS232 dwa procki z tym że w tym przypadku tym "drutem" jest odbiornik oraz nadajnik radiowy. Do prostych projektów takich jak ten zamiast RS232 można bezpośrednio komunikować się po 1-WIRE. Osobiście wolę...
Witam W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string...
http://obrazki.elektroda.pl/2943283900_1... Witam wszystkich, przedstawiam ciekawy twór mojego autorstwa oraz kolegi. Mieliśmy zaproponować coś ciekawego, innowacyjnego, a zarazem prostego na zaliczenie. Mając, jak to na studiach, strasznie mało czasu na całe przedsięwzięcie. Zaczęliśmy poszukiwania na forum, z którego teraz my się...
Witam wszystkich. Koledzy zwracam się do Was z prośba o pomoc z następującym problemem. Programuje amatorsko w bascomie, procesor to atmega 644p z 2 uartami sprzętowymi. Składam urządzenie, które będzie się komunikowało z dwoma pozostałymi i wymieniało dane za pomocą transmisji rs232. Mój problem dotyczy 2 uartu sprzętowego w atmedze 644P. Pierwszy...
Odświeżam temat i przedstawiam co zrobiłem . Wykrywanie stanu i wystawianie stanu logicznego nie chciało działać kiedy było zrealizowane na opóźnieniach. Do głowy wpadł mi pomysł kolegi pikczu by zrobić coś w przerwaniu TIMERA. Tak wiec odczytywanie stanu jest w podprogramie przerwania a w pętli sterowanie ledem. Do zmiennej sw zapisujemy poklei czy...
Witam! AtMega16 to dobry wybór. Do programowania i uruchamiania polecam interfejs JTAG (można kupić za około 100 zł, lub do poskładania za mniej więcej połowę tej ceny). JTAG to jednak przede wszystkim debugger, którym można podejrzeć w każdej chwili co się dzieje w procku. Tu druga kwestia: język programowania. Przynajmniej troszkę spróbuj się pomęczyć...
Oczywiście trudno mi się z tym wszystkim nie zgodzić. I przepraszam że na Ciebie naskoczyłem ale nie rozumiem "durnej" rzeczy jak bufor. Ja to rozumiem jako jakąś zmienną w której przechowywane jest to co odbierze Uart. Pewnie znowu błędnie. Nie mam już siły do wałkowania tego tematu i pozostaje w moim programie z tym co działa. Może to lipne ale jakoś...
Nie rozumiem o co chodzi z tą stałą zależną od Xtal kwarc jest 14,7456MHz czemu taki ?? Bo to wielokrotność 11,592MHz co pozwala na wyciśniecie z procka 115200 baud przy zerowym błędzie transmisji i nieco większej wydajności. (Całość ma się komunikować z PC po RS232) Skąd wątpliwości co do organizacji tablicy ?? Poglądowe schematy są tutaj: http://www.elektroda.pl/rtvforum/topic25...
proponuje ci dać printa w pętli głównej aby podglądnąć co procesor czyta z UARTA. Może się zdarzyć że czytasz śmieci i przy takiej pętli co się kręci miliony razy na sekundę ciągle się trafia przypadkowy znak 87. Albo wyślij inny znak i zobacz czy procesor czasem na niego też nie zareaguje, jeśli tak to masz pewność że jest coś nie tak sprzętowo. Albo...
Chyba można by uniknąć stosowania watchdoga jesli wcześniej wyłączone zostały by przerwania?! Ale wiesz co? unikać stosowania watchdoga to raczej nie warto. Jeśli chodzi o wszystkie inne sztuczki programowe służące do tego celu to akurat watchdog zdecydowanie się do tego lepiej nadaje. Zauważ, że prawdziwy reset watchdoga daje ci m.in czyste wszystkie...
Witam, Od razu uprzedzam, że jestem początkujący. Programuję w Bascomie. Mam jak narazie zestaw uruchomieniowy ZL3AVR z ATMega32. Mam kupioną przejściówkę RS232 do USB, ale nie chodzi za dobrze. Chcę wysyłać dane MIDI do komputera na USB, więc chyba lepiej nie korzystać z RS232 bo 31250 baudów to niestandardowa prędkość. Jest więc możliwa emulacja http://cesko.host.sk/IgorPlugUSB/IgorPlu...
bascom przerwanie rs232 przerwanie rs232 rs232 przerwanie
paski ekranie cienkie brother ilość wydrukowanych stron macbook zalany
elektronika baterie parkside elektronika baterie parkside
Tablet Audi Nvidia nagrzewa się i nie uruchamia Lokalizacja kostki kierunkowskazu w Oplu Astra G