Skocz do zawartości

[PIC18] problem ze zmianą pinu RB6 -> RD6


MisiekD

Pomocna odpowiedź

Potrzebuję drobnej pomocy przy mikrokontrollerach. Mam mały problem z pinami 😕 Jeżeli ktoś ma styczność z mikrokontrolerami (zwłaszcza PIC18) to prosiłbym o pomoc.

Sytuacja wygląda tak:
mam program odliczający czas na siedmiosegmentowym wyświetlaczu. Do sterowania mam 3 piny na B (RB7, RB6, RB5) i one w pełni działają. Chcę przerobić te piny na linię D (RB7 -> RD7, RB6 -> RD6, RB5 -> RD5). Wartości odczytuję poprzez PORT (np. if(PORTBbits.RB7==0)).
Niestety przy przenoszeniu portów pojawia się pewien problem:
* RB7 -> RD7 - tutaj działa dobrze (po styknięciu kabelkiem do pinu następuje odliczanie - tak ma być);
* RB6 -> RD6 - tutaj problem (po styknięciu kabelkiem odliczanie się zeruje, a powinno się zwiększać +1), dodam jeszcze, że na tym pinie wykonuje się operacja, która ma działać na RD5 oraz na pewno nie ma tu błędu w kodzie z PORT, ponieważ na wcześniejszym RB6 działa poprawnie, nawet na innym RD4 też działa poprawnie;
* RB5 -> RD5 - tutaj działa dobrze (po styknięciu kabelkiem odliczanie się zeruje - tak ma być).
I w tym miejscu bardzo proszę o pomoc, chodzi mi m.in. o RD6. Może coś blokuje ten pin? Jestem trochę w tym początkujący, ale przez ostatnie 2 dni trochę się dowiedziałem, lecz nadal nie rozkminiłem, dlaczego RD6 nie działa tak jak powinien. Wiem, że mógłbym RB6 przerobić na RD4, ale chcę się dowiedzieć i nauczyć co zrobić, aby RD6 także zadziałał (w dodatku zlutowałem już płytkę z pinami i wolałbym zmienić softwareowo niż na nowo lutować).

Mój kod z ustawieniami pinów (funkcja main):

OSCCONbits.IRCF=0b111; //internal oscilator frequency
OSCCONbits.SCS=0b00; //System clock select
OSCTUNEbits.INTSRC=0b1; // Internal Oscillator Low-Frequency Source Select bit
OSCTUNEbits.PLLEN=0b0; //PLL enable bit
ANCON1=0;
ANCON0=0; // All pins digital
INTCON2bits.NOT_RBPU=0;
TRISC=1;
TRISD=0b11110000;
TRISB=0b11110000;
PADCFG1bits.RDPU=1;
WPUB=0b11110000; //ENABLE WEEK PUULUPS ON RB0-RB3 PINS
...
(dalsza część kodu z licznikiem)


Jeżeli ktoś ma jakieś pytania odnośnie problemu, proszę pytać 🙂

Mikrokontroler to PIC18LF46K80.
Swoją drogą, czy wszystkie piny RD (RD0 - RD7) są nazywane linią D czy to inaczej się nazywa, bo nie jestem pewien?

Elapsing D i B.jpg

Link do komentarza
Share on other sites

Anonim
Ten temat został zamknięty.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.