Błąd MPLAB PIC16F84

Po przerwie chcę wrócić ponownie do programowania mikrokontrolerków no i wybrałem sobie PIC 16F84A.

Pisząc program (prosty testowy) wyglądający w ten sposób:

#include P16f84a.inc

;org 0x05 ;

bcf STATUS, IRP ; ;bcf STATUS, RP0 ; ;bcf STATUS, RP1 ; clrf PORTA ; bsf h'0003', h'0005'; movlw h'001F' ; movwf h'0085' ; bcf STATUS, RP0 ; movlw b'00011111' ; movwf PORTA ; goto $ ; end ;

podczas kompilacji otrzymuje komunikat że TRISA nie leży w tym banku no i jak widać już nawet wróciłem na hexy biny i dalej to samo ten sam komunikat.

No a chciałem na początek diodki sobie zapalić, jak nie zmienię banku i nie wstawię w TRISA zer to nie będę mógł tam nic wysłać.

Gdzie robię błąd? Patrzę na przykładowe aplikacje i nie widzę niczego szczególnego.

Reply to
xymax
Loading thread data ...

Czy chodzi Ci o komunikat 302?

Message[302] Register in operand not in bank 0. Ensure that bank bits are correct.

Jeśli tak to źle go zrozumiałeś, to jest tylko informacja kompilatora, że dany rejestr nie leży w banku 0 i masz się upewnić czy aby na pewno tam jesteś, kompilator nie panuje nad tym gdzie jesteś.

Jak chcesz się pozbyć tego komunikatu to w nagłówku wpisz:

errorlevel -302

Dołącz nagłówek, tylko przystosuj sobie do F84A:

Processor 16F628 Radix dec errorlevel -302, -305, -306

include <p16f628.inc>

__config _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _HS_OSC

org 0x0000 goto start

org 0x0004 goto retfie

start:

bsf STATUS, RP0 clrf TRISA bcf STATUS, RP0 movlw b'00011111' movwf PORTA goto $

pozdrawiam, sword

Reply to
Adam Jurkiewicz

Użytkownik "Adam Jurkiewicz" napisał w wiadomości

Dokładnie tak o ten komunikat.

No tak to zrozumiałem z tym że mam przełączone na bank 1

bsf STATUS, RP0 clrf TRISA

po tym powinien przełączyć na ten bank nie?

Oki dołącze zobaczymy co z tego wyjdzie.

_LVP_OFF & _MCLRE_ON & _HS_OSC

Reply to
xymax

No to jak jesteś przełaczony to olewasz ten komunikat, bo obojętnie w którym banku będziesz to i tak się on wyświetli.

tak, zawsze możesz jeszcze dać dla pewności,

bcf STATUS, RP1

jak nie wiesz z jakiego banku przechodzisz.

Czym programujesz, jaki oscylator?

sword

Reply to
Adam Jurkiewicz

Użytkownik "Adam Jurkiewicz" napisał w wiadomości

To też tak zrobiłem :) nie miałem już siły z tym walczyć.

No tak też to robiłem wcześniej i po dłuższej zabawie wstawiałem ; jako komentarz, myślałem że to co ś smieci ale nie śmieci:)

Programuję w środowisku MPLAB 6.12.0.0 do programowania PIC-a używam willema. Rezonator kwarcowy w układzie docelowym to 4MHz (kwarc nie generator).

Ale pojawił mi się następny problem bo zaprogramowałem już PIC-a włożyłem do układu ale widzę 0 odzewu. Z tego co kiedyś robiłem to pamiętam że coś w willemie trzeba było ustawić kwarc w tym wypadku jako XT. Wiem że można też było zadeklarować w edytorze ale już nie pamiętam jak. No i nie jestem w domciu i nie zabrałem ze sobą miernika częstotliwości żeby zobaczyć czy wogóle jest fosc? Układ prosty bo do RA0-RA4 podpięte diodki z oporami i któraś powinna się zapalić.

Napięcie mierzone na nóżkach PIC-a w chwili obecnej to 1,4 V jakieś takie dziwne i wyglądające na poziom L w obwodzie. Wygląda jak by nie wypuścił jedynek na wyjście. Ale wszystko będę wiedział jak zmierzę fosc.

Reply to
xymax

To zmień zdecydowanie na najnowszy 7.20, te początkowe 6.xx to straszne badziewie było i pełno błędów.

Nie, no z przekładaniem proca to porażka, podepnij kabeli bezpośrednio (ICSP) i nie będziesz się musiał męczyć.

No jak nie, jak tak ;) przecież podałem Ci w nagłówku, linia z __config ustawiasz wszystkie parametry konfiguracyjne łacznie z typem oscylatora. W programatorze musisz oczywiście zaznaczyć, żeby ten config został wpisany. (Wszystkie mnemoniki są w includowanym pliku *.inc)

Na pewno nie ruszył, nasz ustawione piny jako wejścia po resecie.

sword

Reply to
Adam Jurkiewicz

Użytkownik "Adam Jurkiewicz" napisał w wiadomości

To też posłycham rady doświadczonych i zainstaluję noew środowisko. To co mam to jeszcze z początków gdzie się robiło proste projekciki :) i wystarczało działało no i na HDD było :) a tak to 8051 męczyłem i stało się dla mnie drażniące że emulator łączy nie łączy, ogólnie porażka no i znalazłem sobie PIC-e a do takich zastosowań powinny wystarczyć.

też tak mi się wydaje i z tego powodu przeinstaluje środowisko właśnie się ciągnie :)

Reply to
xymax

No to zmieniłem środowisko na najnowsze i zaczęła działać funkcja errorlevel (nie wiem dlaczego poprzednio wyrzucał błąd jak użyłem errorlevel).

Wżuciłem config oczywiście dla PIC16F84A.

Noa co do hardware to moja wielka wina aż płakać się chce za taki głupi błąd. Ale mogę sobie wybaczyć bo prototyp pochodzi z przed ok2 lat i wylądował w szufladzie a teraz został odkurzony. Nie miałem rezystorka podciągniętego do + od resetu :( Przylutowałem i działa oki)

Tak że wielkie dzięki za pomoc i działam dalej ufff teraz już naszczęście z górki.

Reply to
xymax

Jak to czasem bywa zapalenie diody jest najtrudniejsze :)

Powodzenia w walce, sword

Reply to
Adam Jurkiewicz

Użytkownik Adam Jurkiewicz napisał:

Szczególnie jeśli się nie czyta manuali i najpierw szuka błędów wszędzie tylko nie u siebie :) Z takim podejściem do inżynierii całe życie jest pod górkę ;)

Reply to
A.Grodecki

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.