Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

SAB80c517A i ASM. Error A17 INVALID BYTE BASE IN BIT ADDRESS EXPRESSION.

muminek 31 Gru 2004 12:42 1939 13
  • #1 31 Gru 2004 12:42
    muminek
    Poziom 16  

    Programuje w asemblerze. W mVizion2, Procesor to SAB80c517A, kiedy chcę dobrać się do portu P6 np.: CPL P6.4 wywala ni taki błąd.
    error A17: INVALID BYTE BASE IN BIT ADDRESS EXPRESSION
    Biblioteki są. Co robię źle. Potrzebuje też jakiś program w asm do obsługi zegara PCF 8583 i pamięci 24c02 po i2c. Może ktoś wie jak zrobić ISP na tym rocku. Pytań tyle ze starczyłoby na kilka postów. Programowaniem zajmuje się od 3 miesięcy wiec łopata wskazana. Z pokorą przyjmę każde uwagi.

    0 13
  • Computer Controls
  • #2 31 Gru 2004 19:25
    Zbych_
    Poziom 24  

    Żeby odwołać się do portu w sposób bitowy, adres tego portu mi być podzielny przez 8 (chyba). W twoim przypadku powinieneś użyć:
    1. do negacji xrl P6,#16
    2. do zerowania anl....
    3. do ustaqwiania orl.....
    Jedyny problem wynika z tego, że są to rozkazy typu "odczyt-modyfikacja-zapis" i jeśli masz na porcie wyjście, które jest zwierane przez zewnętrzny układ do masy (w czasie wykonywania jednego z powyższych rozkazów), to może się okazać, że po takiej operacji wejście "zamieni się" w wyjście o stanie niskim. Żeby się przed tym zabezpieczyć należałoby wczytywać wartość portu do akumulatora, zmodyfikować potrzebne bity, ustawić jedynki na tych bitach, które odpowiadają wejściom i dopiero wysłać na port.

    Co do ISP to procesor ten nie posiada czegoś takiego, powiem więcej ten procesor nie posiada wewnętrznej pamięci programu i będziesz musiał zastosować zewnętrzną pamięć eprom lub flash. Jeśli połączysz zewnętrzne przestrzenie adresowe pamięci danych (xram) i programu w jedną, to możesz napisać bootloader, który będzie odbierał program RSem i wpisywał do flasha.

    0
  • #3 01 Sty 2005 15:14
    muminek
    Poziom 16  

    Dzięki Zbych za zainteresowanie. Co do procka, to korzystam z modułu adatronika. Adres portu P6 to FAH, nie chodzi mi o instrukcje tylko czemu Keil nie widzi tego portu. Wszystko co robię to ma być Praca Dyplomowa, być może da się zrobić ISP programowo. Ponawiam prośbę o przykładowe programy w asm. Przecież to tylko zwykła 51.

    0
  • Computer Controls
  • #4 01 Sty 2005 15:52
    Jacu$
    Poziom 27  

    Cytat:
    Potrzebuje też jakiś program w asm do obsługi zegara PCF 8583 i pamięci 24c02 po i2c.

    Elektronika Praktyczna 9/94 strona 27.

    0
  • #5 01 Sty 2005 16:08
    muminek
    Poziom 16  

    Dzięki,ale jak zdobyć ten numer. Jeszcze jedno ten procek ma 2 RS232 sprzętowe, jeden jest uruchomiony jak ruszyć ten drugi.

    0
  • #6 01 Sty 2005 16:55
    Zbych_
    Poziom 24  

    muminek napisał:
    Jeszcze jedno ten procek ma 2 RS232 sprzętowe, jeden jest uruchomiony jak ruszyć ten drugi.


    Wszystko jest w dokumentacji do procesora.
    A co do I2C to nawet na stronie keila są do tego przykłady.

    A wracając do błędu error A17: INVALID BYTE BASE IN BIT ADDRESS EXPRESSION, to nie oznacza on że kompilator nie wie co to P6 tylko, że odwołujesz się w niepoprawny sposób do tego portu !! jak napiszesz xrl P6,#16 to tego błędu nie będzie.

    I jeszcze co do ISP. W pakiecie keila jest specjalny program monitorujący, który można wgrać do epromu. Program ten przy pomocy RSa ściąga program z PC i zapisuje go w pamięci ram. Jeśli odpowiednio połączysz przestrzenie adresowe programu i xram to będziesz mógł nawet debugować program w systemie docelowym. Jedyna wada takiego rozwiązania to to, że musisz załadować program po każdym włączeniu zasilania. W twoim przypadku sprawa jest prosta, bo wystarczy tylko przeprogramować gala (nowy dekoder adresu) i odpowiednio skonfigurować program monitorujący. Program ten zajmuje od 5 do 6kB w zależności od konfiguracji. Dodatkowo w pisanym przez siebie programie trzeba przesunąć początek programu i początek tablicy wektorów przerwań. Ja akurat bawiłem się prockiem 535. Monitor zajął około 5kB, więc początek programu ustawiłem na 2000H. Dekoder adresu napisałem w cuplu, który jest razem z protelem. Wszystko to o czym piszę jest w dokumentacji keila i od jej przeczytania radziłbym ci zacząć.

    0
  • #7 01 Sty 2005 19:04
    Jacu$
    Poziom 27  

    Muminek, zmusiłeś mnie do wysiłku...
    Kiedyś to przepisałem. Komentarze są ze znakami polskimi ale nie pamiętam, czy w Mazovii, czy w Latin2. Poradzisz sobie...

    0
  • #8 01 Sty 2005 19:22
    muminek
    Poziom 16  

    Jeszcze raz dzięki. Korzystam z monitora, który dostałem razem z systemem Również zaczyna się od 2000H i jest zapisany w Epromie, kwarc to 18.432MHz. Keila czytałem, ale pobieżnie (praktycznie uczę się tego sam). Jeżeli kolega Zbych_ może mi przesłać program swojego monitora i gala będę wdzięczny. 535 i 517 są podobne. Mój mail to diuna2(malpa)go2.pl Jeszcze jedno jak nadać etykietę danemu bitowi na tym porcie. Dlaczego do innych portów mogę odwoływać się normalnie do tego nie

    Dodano po 10 [minuty]:

    Dzięki Jacu$ tym bardziej, że jest Nowy Rok. Jeszcze was pomęcze.

    0
  • #9 01 Sty 2005 21:52
    jacekkar1
    Poziom 11  

    Zbych_ napisał:

    W pakiecie keila jest specjalny program monitorujący, który można wgrać do epromu... Program ten zajmuje od 5 do 6kB w zależności od konfiguracji. Dodatkowo w pisanym przez siebie programie trzeba przesunąć początek programu i początek tablicy wektorów przerwań. Ja akurat bawiłem się prockiem 535. Monitor zajął około 5kB, więc początek programu ustawiłem na 2000H.


    Ciekawe jak w wersji demo zamierzasz wygenerowac monitor skoro masz ograniczenie kodu do 2kB a jak sam napisales program ten zajmuje od 5 do 6kB?

    0
  • #10 02 Sty 2005 10:10
    muminek
    Poziom 16  

    Ponoć w dokumentacji Keila stoi, że wersja demo pozwala na wygenerowanie programu monitora za pomocą narzędzi dołączonych do środowiska mVizion, a znajdujących się w \Keil\C51\Mon51\. Wracając do tematu porty P6,P7,P8, są dostępne tylko poprzez adresowanie bajtowo, brak dostępu do bitów portu (właśnie tego nie doczytałem).

    0
  • #11 02 Sty 2005 10:58
    jacekkar1
    Poziom 11  

    muminek napisał:
    Ponoć w dokumentacji Keila stoi, że wersja demo pozwala na wygenerowanie programu monitora za pomocą narzędzi dołączonych do środowiska mVizion, a znajdujących się w \Keil\C51\Mon51\.

    Prawie wszytko się zgadza, ale niestety w wersji demo nie da się dolinkować biblioteki do monitora (ze względu na ograniczenie 2kB) więc tym samym nie da się wygenerować pliku mon51.hex.

    0
  • #12 02 Sty 2005 20:41
    Zbych_
    Poziom 24  

    [quote="muminek"] Jeżeli kolega Zbych_ może mi przesłać program swojego monitora i gala będę wdzięczny. 535 i 517 są podobne. Mój mail to diuna2(malpa)go2.pl

    Cytat:

    Kod do dekodera adresu podeślę ci za parę dni jak wrócę do DC. Tylko, że ja pracowałem na module WG Electronics i raczej bez przeróbek ten kod do niczego ci się nie przyda.

    0
  • #13 02 Mar 2005 09:05
    mw811
    Poziom 18  

    Piszecie o bootload dla c517, a czy ktoś ma schamat
    z pamięcią w flaeszu i oprogramowaniem.

    Potrzebuje schematu oraz programów do takiego
    bootloadera dla dowolnego SAB80C5XX.

    0
  • #14 27 Maj 2006 15:20
    chomikaaa
    Poziom 18  

    witam mam zamiar wykonac sterownik serva dc na tym mikrokontrolerze SAB80C517A tzn dokladnie to jest temat moje pracy dyplomowej

    zaznaczam ze zaczynam zabawe z programowaniem i projektowaniem tego typu ukladow

    mam pare pytan w zwiazku z tym

    1 chcialbym aby uklad byl taktowany z najwieksza mozliwa czestotliowscia podobno jest to 24Mhz czy to jest mozliwe

    2 serwo ma realizowac prace krokowa typu step /dir

    3 posiadac sprzezenie w postaci enkodera inkrementalnego kwadraturowego sygn a b

    4 znalzlem w sieci podobne rozwiazanie na at90s2313n chcialbym wykozystac z niego peryferia tzn podmienic procesor gdyz wg mnie ten uklad dla moich potrzeb wystarczy plik w zalaczniku a niestety nie mam czasu na stworzenie peryferiow ze wzgledu na brak praktyki w tym temacie
    chodzi mi tu o wykozystanie mostka H wraz z ogranicznieniem pradowym interfaceow we dla syg step dir sprzezenia z enkodera

    5 serwa ktore posiadam electrocraft 6000obr/min maja zintegrowana pradniczke tachometryczna 14V/1000obr/min moment ok0,2Nm I=3A
    nie wiem jak mozna by mierzyc napiecie z tej pradniczki i przeksztalcic to do postaci zrozumialej dla procka oraz jak mierzyc prad za mostkiem h

    6 chcialbym zaimplementowac algorytm pid

    7 gdzie mozna by tanio kupic ten procesor w tme to ponad 100zl wiec to dla mnie duzy wydatek biorac pod uwage ze musze zrobic 3 takie sterowniki dla sterowania ploterem frezujacym

    prosilbym o jakies rady w tym temacie

    0