Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.
Nazwa.pl
  • #1
    AGL
    Level 11  
    potrzebuje pomocy w napisaniu najprostrzych programow na pic np 16c505 bo takie mam!
    typu:
    -ustaw 1 na wyjsciu B po 1min zmien z 1 na 0
    natepnie ustaw 1 na wyjsciu B2 i po 30s zmien na 0

    chodzi mi o najprosztrze przyklady do nauki pisania sie programow dla uP PIC.
  • Nazwa.pl
  • #2
    marmur99
    Level 17  
    30 sekund? Żartowniś :) A musi być dokładnie tyle? Trzeba się nakombinować, żeby do tylu doliczyć chyba, że użyjesz kwarcu 32,768kHz.

    banksel trisb ; przeskakuje do banku, w ktorym jest rejestr kierunkowy
    bcf portb,0 ; ustawiam kierunek B0 na wyjściowy
    bcf portb,2 ; i B2 tez
    banksel portb ; wracam do banku 0
    bsf portb,0 ; i ustawiam "1" na B0

    Mam gdzieś kilka prostych programików, które pisałem, żeby opanować PICa. Przypomnij sie później to Ci podeślę. Teraz niestety nie mogę.

    Pozdrawiam,

    Marmur99
  • #3
    AGL
    Level 11  
    zartownis? szczeze mowiac nie wiem co za problem z tego 30s-go odliczania, czyzby pic nie dal rady, to 1minuty tez nie odliczy albo 2 godzin?

    :D Wesolych swiat i szczesliwego nowego roku :D
  • #4
    marmur99
    Level 17  
    Nie, no jasne, że da rade, ale to wszystko zależy od użytego kwarcu. Jeśli wykorzystasz. Np. 4MHz to długość cyklu rozkazowego będzie wynosiła 1us a co za tym idzie potrzeba milion cykli, żeby uzyskać sekunde a 30 milionów żeby 30 sekund. Oznacza to, że trzbe będzie wykorzystać kawał pamięci aby to zliczać.
    Zawsze możesz użyć wolniejszego kwarcu, ale wtedy spadnie ilość MIPSów. Zależy na czym komu zależy.

    Pozdrawiam i również życzę wesołych świąt.

    Marmur99
  • #5
    elektryk
    Level 42  
    AGL wrote:
    zartownis? szczeze mowiac nie wiem co za problem z tego 30s-go odliczania, czyzby pic nie dal rady, to 1minuty tez nie odliczy albo 2 godzin?
    Problem jest taki że to jest procesor 8bitowy, a Ty chcesz zliczać miliony cykli, więc musisz umieszczać pętle w pętli...... gdy każda liczy w zakresie 8bit, albo stosować arytmetyke o liczbie bitów większej niż rozmiar akumulatora. To jest wykonalne ale więcej czasu zajmie samo wymyślenie jak to zrobić niż to jest warte, polecam coś prostrzego dla kolegi, może przycisk włączający i wyłączający diode LED, najpierw bez eliminacji drgań zestyków.
  • #6
    diag
    Level 29  
    Sprawa łatwa i przyjemna PIC16f629 TMR1 i kwarc 32768Hz jedna zmienna i czaas do 512 sek. Na wewn. zegar 4MHz czas do 128 s. ale mniejsza dokladność.
    Wesołych Świąt i Szęśliwego Nowego Roku.
  • #7
    marmur99
    Level 17  
    Też myślę, że łatwiej będzie zacząć od migającej diody, potem przycisku, potem wyświetlacza 7seg (albo dwóch, żeby się nauczyć multipleksowania), potem rs232 itd.
    Marmur99
  • Nazwa.pl
  • #8
    euromatic
    Level 21  
    device = 16c505
    DECLARE XTAL 4
    All_digital = true
    output portb.0
    output portb.1
    symbol led1 = PORTb.0
    symbol led2 = PORTb.1
    start_programu:
    high led1
    delayms 60000
    low led1
    high led2
    delayms 30000
    low led2
    goto start_programu
    end


    Proponuję od razu zacząć od języka wyższego poziomu.
    po co cofać się w czasie i tracić tygodnie na napisanie programu?
    To co chciałeś zajęło mi około 2 minut. Polecam program Proton Plus
    (basic dla pica)
    piszę w tym od pewnego czasu i oceniam go wysoko.
    kompiluje za pomocą MP-asma , kod jest bardzo oszczędny ( w przeciwieństwie do bascoma)
    Wersja darmowa jest do 30 linijek kodu , to mało, ale można coś niecoś na tym zrobić.
    pozdrawiam.
    PS.
    Ludzie robią narzędzia by żyło się lżej... nauczcie się ich używać i nie mówcie że programy pisane w asm są lepsze i szybciej działające ( to argumenty piszących w asm.(ja też pisałem w asm ))
    dobre narzędzie to cały sukces , zapytajcie stolarza....
  • #9
    marmur99
    Level 17  
    Ja i tak mam zaufanie tylko do tego, co sam napiszę. Wiadomo, że kompilatory języków piszą program w asm za Ciebie. Nie wmówisz mi, że masz pełną kontrolę nad tym co napiszesz a jeżeli nawet masz to samemu można to napisać lepiej.
    Jeżeli pisałeś w asm i przeskoczyłeś na wysoki poziom ta bardzo dziwne zjawisko. Ludzie zwykle idą w drugą stronę. Może Ci nie szło w asm ?

    Marmur99
  • #10
    genetix
    Level 24  
    :arrow: marmur99

    zgodze sie z toba, ale nie do konca. asm sie przydaje przy pisaniu najnizszej warstwy programu. np. funkcje obslugujace programowo i2c, czy precyzyjne czasowo sterowanie portami. jednakze jak masz do napisania potezny program, to szybciej to zrobisz piszac w C.
    i masz ten komfort, ze zawsze mozesz wstawic funkcje w asm...

    i niewazne, czy zaczniesz od C, BASICA, asembler po prostu wypada znac.
  • #11
    euromatic
    Level 21  
    Ja w swoim protonie mam możliwość wstawek z ASM , mam wygenerowanego asma do wglądu, i wiele innych plików jak chociażby ten poniżej:

    16C505,84,9,
    Warning! Line [3] In file [PRZYKŁ~1.BAS] *** No analogue ports on this device. ALL_DIGITAL Command ignored! ***
    PROGRAM COMPILED WITH WARNINGS. 84 Words used
    9 Variables used in the 16C505 from a possible 72
    THERE ARE WARNINGS!

    który mówi że niepotrzebnie wyłączałem różne cudeńka takie jak "adc" bo ten procek ich nie ma....
    Ja piszą głównie wcelach zarobkowych, kidyś była to zabawa , hobby, ale byłem na garnuszku u mamusi i mogłem nawet trzy miesiące siedzieć nad ASM. Ale teraz jest inaczej, jest zapotrzebowanie na oprogramowanie ? siadam i zanim ty wypijesz kawę to ja mam gotowy wstępny programik którego wystarczy wbić do procka i sprawdzić.Nie ważne jest jak bardzo jest on skomplikowany... Czy ma LCD czy ma transmisję szeregową... Czy mnożysz lub dzielisz liczby 32 bitowe przez 32 bitowe. Jest mi to wszystko jedno, a ty w asemblerze musisz się nieźle napocić zanim to osiągniesz zwłaszcza ,że program twój będzie coraz dłuższy i dłuższy i w pewnym momencie sam zaczniesz się w nim gubić...i popełniać błędy.
    Reasumując:
    Mam zaufanie do ludzi którzy swoją wiedzę o procesorach wykorzystali do napisania oprogramowania do tworzenia nowego oprogramowania (dziś buduje się samochody przy pomocy oprogramowania a nie jak przed laty "empirycznie " i dlaczego jeżeli cały świat idzie w tym kierunku to ja mam się cofać do alfabetu morsa?)
    zrobili to naprawdę porządnie, zadbali o wszystko i napewno nie zajęło im to mało czasu. Wyciskając z procesora wszystko to o czym wielu z nas nie marzyło. Są oczywiście i słabsze narzędzia, to jak wiertarka firmy "Toya" i "Bosch" kupisz tą pierwszą to zaraz powiesz że wszystkie wiertarki są do dupy...

    Wiem że post mój wywoła następną wojnę która nigdy nie wyjaśni i nie rozstrzygnie kto ma rację a już napewno człowiek proszący o pomoc dostanie zawrotu głowy. Dam Ci radę kolego który pytałeś o pomoc:
    Spróbuj wszystkiego i sam oceń gdzie pływasz najlepiej i co jest twoim zdaniem dla ciebie najlepsze i nie słuchaj innych że... " tu bity ustawisz lepiej" a tam to "masz kontrolę nad kodem"

    Ważne jest abyś poznał mikrokontroler od strony jego budowy i możliwości. Asm sam do ciebie przyjdzie i poznasz go nie pisząc w nim specjalnie (trafią ci się wstawki w asemblerze)

    Zacznij od asm i po pewnym czasie weź się za basica lub C

    sam ocenisz różnicę , a swoją opinię podaj wtedy tu na forum


    To co ja polecam ci na początek znajdziesz na stronie:
    http://www.picbasic.org/
    pozdrawiam
  • #12
    AGL
    Level 11  
    Jak juz pisalem w innym temacie:
    https://www.elektroda.pl/rtvforum/topic92406.html

    Teraz postanowilem wziasc sie za PIC, mam ksiazke a BTC o pic16f84, ale bym potrzebowal pomocy w postaci zrodel programow dla poczatkujacego z przypisami.
    Programy typu zalacz port, odczytaj klawisz i zalacz port, odmierz czas i zalacz port, timery!
    co oznacza opis
    np:
    led equ 10h ; przypisanie zminnej wartosci 10 (hex)
    a widze czesto opisy
    np.
    led equ 0x00h ; co to oznacza
    albo cos jeszcze dziwnego
    movlw.12

    z gory dzieki
  • #13
    Pandor
    Level 14  
    Jeśli masz cierpliwość i chęć przeczytania książki z BTC to najlepiej spróbuj to zrobić "od dechy do dechy". W kolejnych rozdziałach opisane jest wszystko w miarę łopatologicznie, czego nie zrozumiesz za pierwszym razem wróci to do ciebie w jednym z następnych rozdziałów i albo zrozumiesz to tam, albo wrócisz i bogatszy o nową wiedzę w końcu zrozumiesz za n-tym razem. Jeśli zaczynasz czytanie książki od przykładów praktycznych to faktycznie sporo może być niejasności, w końcu trzeba znać chociaż pobieżnie wnętrze takiego mikrokontrolera no i poleceniia asemblera (jest ich tylko 32). Książka nie jest pozbawiona błędów, ale jak poczytasz ją to jest szansa, że sam je wyłapiesz. A jeśli nie zawsze masz elektrodę :)
  • #14
    vidmo
    Level 14  
    CO to za ksiazka BTC ??? gdze ja mozna zdobyc ?
    ja niemam zadnych pomocy dotyczacych PIC a tez mam zamiar sie pomeczyc moze zna ktos jakas strone najlepiej w jezyku "pl" o programowaniu PIC16 ??
  • #15
    elektryk
    Level 42  
    vidmo wrote:
    CO to za ksiazka BTC ???
    BTC to nazwa wydawnictwa.
  • #16
    diag
    Level 29  
    By daleko nie szukać, zajrzyj w datashet pica, zawsze jest opis komend a jeszce szybciej w help MPLAB, assembler.
  • #17
    vidmo
    Level 14  
    no i mam problem.
    z odczytem EEprom niebylo problemu w pdf znalazlem przyklad ale znalazlem tez przyklad zapisu DO EEPROM
    no i procedurka wyglada tak:
    bsf status,rp0
    bcf intcon,gie
    bsf eecon1,wren
    movlw 55h
    movwf eecon2
    movlw aah
    movwf eecon2
    bsf eecon1,wr
    bsf intcon,gie
    testuje pod MPLAB i problem jest taki ze zucajac rejest w do eecon2 nic sie niedzieje
    reczne wpisanie do rejestru eecon2 tez jest niemozliwe moze to blad konfiguracji MPLAB ?
    ma ktos jakis pewna procedurke do zapisania jednej komorki w pamieci eeprom 16f84a ?
  • #18
    diag
    Level 29  
    Niestety MPLAB nie w pełni obsługuje symulacje dla wewnetrznej EEPROM. Jest to opisane w helpach dla simulinka.
  • #19
    vidmo
    Level 14  
    kurde te wszystkie programy to jedynie do wora i na szrot !
    mplab tego nie inny zas tamtego czy niema jakiegos programu ktory by mialk wszystko w sobie i niebylo by problemu przy pic16f84 ?
    zalezy mi najbardzej na deburgerze moze jest jakis tylko pod pic?
  • #20
    elektryk
    Level 42  
    vidmo wrote:
    zalezy mi najbardzej na deburgerze moze jest jakis tylko pod pic?
    Chyba proteus ma nieco lepszą symulacje, ja jednak wole hardcorowo wgrywać program do procka i testować na żywca ;)
  • #21
    vidmo
    Level 14  
    zgadzam sie tak kiedys robilem na 89cx ale teraz sie ucze pic'a i jest masa oprogramowania wiec czemu nie?
    ale widze ze i tak pic zostal nieco spartaczony bardzej juz to wyglada jak jecyk C a nie Asm
    niewiem co sie to dzieje ze wszyscy wola isc za niby prosciejszym rozwiazaniem dlamnie to skomplikowane a na doadtek utrudnia zycie
    ale wracajac do tematu
    napewno da sie ten prioblem jakos rozwiazac w MPLAB ludze !!!!!!!!! to tyl;ko SOOFT ! napewno ktos sie juz natknol na ten problem i tak bardzo go to gryzlo ze cos z tym zrobil
    poszukuje jakiegos softu ktory bedze niezawodny przy PIC16f84a
  • #22
    diag
    Level 29  
    Sprawa nie jest tak spartaczona jak myślisz. Do nowszych prcków jest ICD i ICD2, tylko to wymaga zestawu prototypowego, ostatecznie trzeba jakoś zarabiać pieniądze skoro soft jest za free.
  • #24
    diag
    Level 29  
    Robi się to tak:
    ;-------------------------------------------------------------------------;
    org 2100 ; this is location of EEPROM data
    de "program jest chroniony prawem autorskim ",0
    ;************************************************************
    po kompilacji przy programowaniu to pojawi ci się w EEprom.
  • #26
    diag
    Level 29  
    Jak często ma wpisywać dane do EEprom?
  • #27
    vidmo
    Level 14  
    hmm a czy to ma jakies znaqczenie ? bo niebardzo wiem
    chodzi mi o kod ktory moge wykozystac w swoim programie
    np
    program1:
    ..
    ..
    ..
    ..
    ..
    ;teraz mam w komorkach od np. 10h do 20h moje dane ktore chce zapisac do eeprom
    procedurka_zapisu do eeprom:
    ...
    ...
    koniec zapisu:
    ..
    ..
    koneic_mojego_programu:
  • #28
    diag
    Level 29  
    Ma znaczenie .Przeczytaj note katalogową. Ile czasu ma trawać prcedura zapisu, czy nie bedzie kolizji z odśierzaniem wyświetlacza lub przerwaniem?
  • #29
    elektryk
    Level 42  
    Z helpa mplab:
    MPLAB SIM is a discrete-event (as opposed to real-time) simulator.

    Interrupt latency may not be accurate.

    Weak pull-ups on ports not implemented.

    Depending on device:

    Timer1 increments on RC0, not RC1, for Timer1 enabled.

    Serial I/O (i.e., USART, I2C, SPI) is not supported in simulation. As a result, the SSPSTAT register has been made readable and writable.

    A/D conversion time is not completely simulated across frequencies.

    PWM output resolution is limited to 1 Tcy.

    Programmable Switch-Mode Controller (PSMC) is not simulated.

    Brown-out detection (BOD) and low voltage detection (LVD) are not simulated.

    Vref is not simulated.

    Note: If you have trouble with I/O pins on processors that have A/D (PIC16C74, PIC16F877, etc.), make certain that the ADCON registers are configuring those pins for digital I/O rather than for analog input. For most processors, these default to analog inputs and the associated pins cannot be used for I/O until the ADCON (or ADCON1) register

    Jakoś nic tam nie ma o eepromie, ale jest za to jeszcze komentarz:

    The two most-significant (MS) bits of the EEDATH register and the three MS bits of the EEADRH register may be set, resulting in incorrect data values and addressing. These bits should be maintained clear.

    A tak jeszcze sobie popatrzyłem na Twój program i czy Ty gdziekolwiek podajesz dane i adres do zapisu?