Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ATmega - Visual basic -programowanie przez RS232

narki1 25 Feb 2013 22:54 2604 9
  • #1
    narki1
    Level 13  
    Witam
    Chciałbym zrobić układ na procesorze Atmega, model jeszcze nie wybrany, nazwę go "sterownik". Sterownik miałby sterować 2 lub 3 silnikami. Program wg. którego sterownik by działał musiałby być przesłany z komputera. Na komputerze trzeba napisać program do prostego "programowania" tzn. użytkownik naciskając przyciski na ekranie wybiera sobie kolejne kroki programu sterownika. Gdy już "naklika" kroków przesyła wszystko do sterownika. Odłącza kompa a sterownik pracuje wg. tego programu.
    Generalna koncepcja jest taka żeby program z komputera przesłać np. po RS232 do pamięci procesora bądź zewnętrznego EEpromu. Korzystając z tej pamięci sterownik robi to co należy.
    Program na komputerze napisany byłby w Visual Basicu ( trochę kumam)
    Pytanie brzmi: JAK to zrobić ?
  • #2
    BlueDraco
    MCUs specialist
    Po pierwsze, nie wiadomo, co kryje się pod pojęciem "sterować silnikami". Nie wiadomo, jakie to silniki, czy trzeba sterować prędkością i kierunkiem itp.

    Za to z góry postanowiłeś, że musi to byś ATmega, niezależnie od tego, czy się do tego zastosowania nadaje. Ciekawe podejście do projektowania...
  • #3
    narki1
    Level 13  
    Wybrałem Atmegę ponieważ znam te procesory trochę. Mają to co potrzebne do sterowania silnikami krokowymi. To akurat mają prawie wszystkie procesory (możliwość generowania prostokąta na wyjściu , wyjście służące jako zezwolenie oraz wyjście kierunku) Hardware ogarnę. Chodzi o myk z możliwością wysyłania programu do sterownika.
  • #4
    perlon
    Level 20  
    Program w VB powinien plik komend dla kontrolera wygenerować w postaci danych do zapisania w EEPROM najlepiej każdą komendę zamknąć w strukturze i takie kolejne struktury zapisywać do EEPROM koniec sekwencji oznaczyć za pomocą struktury ze specyficznymi danymi. Program w kontrolerze czyta kolejno z EEPROM-u struktury, wykonuje zadania a po natrafieniu na znacznik końca przechodzi do pierwszej. Programowanie EEPROM trzeba by było zaszyć w bootloaderze z obsługą RS'a albo użyć AVRDude do zaprogramowania tylko EEPROM z pliku - wtedy bootloader i RS nie jest potrzebny tylko programator i ISP.
  • #5
    BlueDraco
    MCUs specialist
    Aha, to o silniki krokowe chodzi... W zasadzei nie znam mikrokontrolera, który nie potrafiłby sterować silnikiem krokowym, więc to nie żaden argument za ATmega.

    Zastanów się, co ma być tym "programem". Jeśli chcesz z PC ładować kompletny program do mkikrokontrolera, to szukaj pod hasłem bootloader - jest sporo rozwiązań dla ATmega, zresztą ma on minimalistyccne przystosowanie do implementacji bootloadera. A może lepiej byłoby ładować polecenia, np. w postaci rekordów złożonych z polecenia i jego argumentów, a nie program - taka sekwencja poleceń może być zapamiętane w EEPROMie ATmega i potem wykonywana.

    Ja bym się raczej zastanowił nad czymś inym - RS232 jest w zaniku. Dlaczego nie USB i mkrokontroler z USB?

    Są nawet rozwiązania na ATmega z ładowaniem programu przez USB.
  • #6
    ciekawski2011
    Level 11  
    narki1 wrote:
    Generalna koncepcja jest taka żeby program z komputera przesłać np. po RS232 do pamięci procesora bądź zewnętrznego EEpromu. Korzystając z tej pamięci sterownik robi to co należy.

    Jeśli masz na myśli Visual Basic.NET, to do przesyłania danych przez COM'a jest specjalna kontrolka "SerialPort" albo podobna. Znajduje się ona w kategorii Components. Kiedyś jej używałem aby komunikować się z interfejsem OBD-II.
  • #7
    narki1
    Level 13  
    I zamiast RSa można zastosować kostkę FT232 i mamy USB.
    Chyba zrobię tak: Podzielę sobie eeproma na segmenty np. 3 komórkowe.
    1 komórka będzie numerem procedury,a kolejne dwie jej parametrami.
    Z programu komputerowego będę budował mapę pamięci.
    Potem w procku będę po kolei odczytywał eeproma numer procedury i parametry.
    W procesorze trzeba będzie przygotować wszystkie procedury ,które będą aktywowane 1 komórką z eeproma.
    Dla przykładu:
    Procedura 1: Jazda silnika do przodu z prędkością z komórki 2 i o kąt z komórki 3
    Procedura 2: Czekaj na sygnał na wejściu PB2
    Procedura 3:...................
    Podobnie jak podpowiadał kolega BlueDraco
    Czy to ma sens ?
    Quote:
    Dlaczego nie USB i mkrokontroler z USB?

    Podpowiedzcie jaki mikrokontroler ma obsługę USB ?
  • #8
    BlueDraco
    MCUs specialist
    Oczywiście, że można, tylko że mikrokontroler ze sprzętowym USB będzie na ogół tańszy i mniejszy od FT232RL. Na ATmega można zrobić programowo USB - są gotowe rozwiązania z funkcjonalnością bootloadera.

    Dodano po 1 [minuty]:

    Mikrokontrolerów z USB są tysiące - LPC11Uxx, LPC135x, LPC17x, STM32F2xx i hordy innych.

    Oczywiście, że można użyć FT232RL, tylko że mikrokontroler ze sprzętowym USB będzie na ogół tańszy i mniejszy od FT232RL. Na ATmega można zrobić programowo USB - są gotowe rozwiązania z funkcjonalnością bootloadera.
  • #9
    narki1
    Level 13  
    Na pierwszy rzut oka fajne te STMy. Jak to się programuje asembler czy jakiś inny język ? Program do kompilacji ?
  • #10
    BlueDraco
    MCUs specialist
    Co chwila jest na ten temat mowa - C, mnóstwo środowisk - czytaj.