Bascom AVR - Wersja do druku +- HomeMade (http://sp-hm.pl) +-- Dział: Oprogramowanie (/forum-84.html) +--- Dział: Technika programowania mikroprocesorów (/forum-85.html) +--- Wątek: Bascom AVR (/thread-463.html) |
Bascom AVR - SP5FCS - 15-08-2010 22:43 Nie programuję w Bascomie ale zaciekawiły mnie rekomendacje Kolegów stosujących z powodzeniem ten język. Chętnie rzucę okiem na kod wygenerowany przez Bascoma i podzielę się opinią jak to wygląda od strony assemblera. Rafał jeśli to nie problem to poproszę o przykładowy fragment kodu realizujący opisywaną przez Ciebie funkcję ( RX copy to vTX) obsługi wirtualnego portu oraz plik hex np dla ATmega8. Otrzymałem od Rafała SQ4AVS fragment programu w Bascomie wykorzystujący wirtualny port szeregowy oraz stosowny plik hex. Aby poznać mechanizm rozwijania poszczególnych instrukcji Bacoma na kod maszynowy procesorów AVR dokonałem disassemlacji pliku hex uzyskując program w postaci mnemoników assemlera. Kod generowany przez Bascoma dla większości prostych instrukcji wygląda dość przyzwoicie, wszystkie zmienne umieszczane są w pamięci SRAM. Utworzenie wirtualnego kanału szeregowego na procesorze jest dość proste i działa poprawnie przy umiarkowanych szybkościach i długościach ramek. W analizowanym przykładzie wszystkie instrukcje do obsługi kanałów szeregowych (open, print, inkey, input) realizowane były poprzez procedury programowe bez użycia mechanizmu przerwań. Taki sposób obsługi transmisji w zależności od jej intensywności może powodować gubienie znaków podczas odbioru. Jeśli jakiś fragment programu pochłonie więcej czasu niż dwa znaki, jeden zostanie zgubiony. Rozwiązaniem problemu jest wykorzystanie przerwań do odbioru i buforowanie znaków. Nadawanie możemy realizować programowo poprzez port wirtualny. RE: Bascom - SQ4AVS - 20-08-2010 8:31 Zrobioną praktycznie już mam wersję na przerywaniach nieco jednak dłuższą, w starszej wersji przesyłałem każdorazowo 8 bajtów w międzyczasie wykonując dodawanie, sprawdzanie czy pewne klawisze sterujące w komputerze zostały naciśnięte (inkey), nie zaobserwowałem nigdy gubienia znaków. Taki łazik z telemetrią. Kiedyś słyszałem od Kolegi piszącego w asamblerze, że deasamlacja kodu z heks-a daje "pokrętny kod", i stąd nie wiedziałem, że jakikoliwiek jest sens jest to robić -jak widać myliłem się. Dzięki Adamie za wykonanie ciekawego porównania. RE: Bascom - SP5FCS - 20-08-2010 14:24 Disassembler Pisząc oprogramowanie w językach wysokopoziomowych (Bascom, C, Pascal) warto rzucić okiem na kod generowany przez kompilator. Jeśli środowisko kompilatora nie generuje pliku z kodem assemblera lub autor projektu udostępnia tylko pliki hex-a możemy zrobić to sami zewnętrznym disassemblerem. Wadą tej metody jest brak powiązania z instrukcjami wysokopoziomowymi, brak komentarzy, brak nazw zmiennych, instrukcji, funkcji, procedur tablic itd. , jednym słowem sam na sam z "gołym kodem". Proste disassemblery nie radzą sobie z danymi umieszczanymi w kodzie programu (stałe, tablice, łańcuchy), zamieniając je bez sensu na stosowny kod programu dlatego musimy robić to rozważnie. Jeśli znamy dobrze procesor, posiadamy schemat urządzenia oraz pewne doświadczenie w assemblerze rozpracowanie takiego kodu to tylko kwestia czasu. Jako przykład kilka prostych instrukcji Bascoma oraz odpowiedni kod assemblera. Kod: ;If Pind.2 = 0 Then Wirtualny kanał szeregowy Rafał, jeśli strumień danych do odbioru jest mały a stopień obciążenie procesora niewielki to może pracować to poprawnie nawet bez przerwań. W prostych aplikacjach możemy często sprawdzać czy jest nowy znak w buforze aby go odczytać. Pamiętajmy jednak, że dane docierają do procesora asynchronicznie w stosunku do jego algorytmu pracy. Jeśli trafimy na moment w którym procesor jest zajęty dłużej obsługą innego zadania to tylko przerwanie daje mam gwarancję pełnej obsługi odbioru. System przerwań w mikroprocesorach to jedno z najmocniejszych narzędzi budowania aplikacji dlatego warto go lepiej poznać. RE: Bascom - SQ4AVS - 20-08-2010 20:12 Adamie oczywiście masz racje z przerywaniami, dodając jeszcze odczyt położenia gps i wirtualne comy musiałem posłużyć się przerywaniami -nie było już wyjścia. Układ obsługuje w sumie 2 jednokierunkowe rs (GPS i luksomierz) i pełny dwukierunkowy rs (sterowanie i przekazywanie informacji zwrotnej o położeniu, natężeniu oświetlenia, temperaturze, wilgotności i ciśnieniu -taki łazik "ala marsjański", choć na marsie gps chyba nie działa ;-). Tak jak piszesz gubił dane szczególnie z odczytu położenia z ramki nmea bez przerywań. ciągu ostatnich paru dni miałem więcej czasu to pobawiłem się. Ogólnie lubię język wysokiego poziomu za łatwość pisania, a, że kompilator kosztuje,oscyloskop też kosztuje a większa pamięć w procesorze no cóż parę złoty drożej -dla mnie warto. RE: Bascom - SQ6OXK - 21-08-2010 12:42 (20-08-2010 14:24)sp5fcs napisał(a): Disassembler Hmm Adamie, to są dostępne kompilatory na '51 (AVR) z Pascal-a, nie spotkałem jeszcze żadnego. Możesz coś podrzucić? RE: Bascom - SQ9MDD - 21-08-2010 12:48 Embedded Pascal może to? btw. Pierwsza łączność via MikroPrzemiennik przeprowadzona, znaczy się działa. RE: Bascom - TG50 - 21-08-2010 13:21 Paweł, zanim zadasz pytanie na forum zapytaj GOOGLE co mają na ten temat. Turbo51 - darmowy kompilator Pascala dla rodziny 8051, zgodny z Tubo Pascalem 7 firmy Borland. mikroPascal for AVR - komercyjny kompilator pacala dla AVR Ryszard, gratuluję pozytywnych testów sterownika, pomyśl nad ostatecznym schematem to druk narysujemy wspólnymi siłami Kolegów z forum. RE: Bascom AVR - SP5SAI - 23-08-2010 16:11 Ja Ryśku, że tak sobie pozwolę napisać z duchem krótkofalarskim, podtrzymuje chęć pomocy we wszystkich wspólnych przedsięwzięciach, szczególnie w Warszawie moim rodzinnym mieście. A teraz zmykam poczytać w necie o tym „Twoim” EchoLinku, przecież byłem, jestem nadal sp5sai.ampr.org i jak pisał znany wszystkim poeta Adam Asnyk napisał(a):Trzeba z żywymi naprzód iść,I tym poetyckim akcentem RE: Bascom AVR - Klim_on - 27-08-2010 20:35 Witam kolegów, korzystam z zaproszenia i informuję, że opublikowałem już dziesiątki praktycznych programów, którymi dzielę się bez ograniczeń. Pokazuję też kompilator, opisuję jak postępować z fusebitami, pokazuję fotki i schematy. Zapraszam na moją stronę: http://www.henwyd.republika.pl SP3JCG Witaj Rysiek, cieszę się, że wybrałeś Bascom, trochę lekceważony przez innych programistów. Zapewniam Cię, że w tym programie napiszesz wszyskie pomysły. Bądź wytrwały. Zaglądnij na moją stronę, zobaczysz ile urządzeń zbudowałem w oparciu o Bascom. http://www.henwyd.republika.pl Pozdrawiam, SP3JCG. RE: Bascom AVR - Klim_on - 28-08-2010 17:54 Wszystkie programy są moimi własnymi, więc można z nich korzystać bez ograniczeń. SP3JCG |