Sari la conținut
ELFORUM - Forumul electronistilor

Probleme programare PIC18F2550


Postări Recomandate

  • Răspunsuri 47
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Programul asta (in MikroBasic) merge complet Digital I/O. Configurarea + HEX (sa testezi PIC-ul tau) in arhiva atasata. Eu l-am incercat pe breadboard. Cand pui RA0, RC0 sau RBO la Vdd (sunt tinute in zero cu 10k) se aprind leduri pe RA1, RB0 si RC7. Bafta!

' *' * Project name:'     Test' * Revision History:'     rev.0 / 2014-0x-xx' * Description:'     T...' * Test configuration:'     MCU:             PIC18F2550'     Oscillator:      HS, 20.0000 MHz' *program _18F2550_DIO'   Set-up the PICsub procedure InitMain()  INTCON  = 0x00                                ' No INT  INTCON2 = 0x80                                ' No PORTB pull-up  INTCON3 = 0x00    CCP1CON = 0x00                                ' No CCP1  CCP2CON = 0x00                                ' No CCP2  UCON    = 0x00                                ' No USB    SSPCON1 = 0x00                                ' No SPI    CMCON   = 0x07                                ' No comps  ADCON0  = 0x00                                ' ADC off  ADCON1  = 0x0F                                ' All DI/O  TRISA   = 0xFD                                ' All inputs but RA1  TRISB   = 0xFD                                ' All inputs but RB1  TRISC   = 0x79                                ' RC1,2,7 outputs, rest of 'em inputs    PORTA = 0  PORTB = 0  PORTC = 0  end submain:' Main program  InitMain()  while TRUE  if PORTA.0 = 1 then     LATA.1 = 1  else     LATA.1 = 0  end if    if PORTC.0 = 1 then     LATC.7 = 1  else     LATC.7 = 0  end if    if PORTB.0 = 1 then     LATB.1 = 1  else     LATB.1 = 0  end if  wendend.

config.rar

Link spre comentariu
  • 1 lună mai târziu...

Deci am revenit la acest pic ca vreau sa il folosesc cu frecventa mare, e alta electrnica facuta fata de cea anterioara, mai buna, sigur e ok. Senzorii sunt pusi pe :

#define SD1     PORTB.F7 
#define SD2     PORTB.F6    
#define SD3     PORTB.F5
#define SD4     PORTB.F4
#define SD5     PORTB.F3
 
Pinul RB7 si RB5, aici e problema si problema nu e doar pe pic18f2550 ci si pe 16f876a, daca scot senzorul din circuit merge corect, da 5v cand nu vede si 0v cand vede, daca il pun pe RB7 sau RB5 digital output, merge, da 5v ( am facut testul sa vad daca e stricat cumva pinul ala sau ceva ), picul are doar 0.2 volti pe RB7 si RB5, in momentul in care ar trebui sa aiba 5v ( adica cand nu vede ), deci practic nu e 1 logic, de asta nu functioneaza, e ca si cum ar " manca " curentul lor... NU inteleg.

Cred ca am gasit o "EROARE", deci daca in loc de TRISB=11111000 pun TRISB = aceeasi valoare in hexa merge, ieri m-am chinuit o noapte intreaga sa ii dau de cap..dar e ciudat ca merge doar pe un motor, ( F_M1 - inseamna forward Motor1 si B_M1 - backward motor 1, analog si pentru cele 2 ), SD! - senzor digital 1, etc, SA - inca nu i-am pus.

 

#define F_M1    LATC.F6
#define F_M2    LATC.F7
#define B_M1    LATC.F0  //rpbo?
#define B_M2    LATB.F1
#define SD1     PORTB.F7 
#define SD2     PORTB.F6       //mic defect foward
#define SD3     PORTB.F5
#define SD4     PORTB.F4
#define SD5     PORTB.F3
#define SA1     PORTA.F0
#define SA2     PORTA.F1
void init(){
//  CONFIG4L :  0x0081;
     TRISB=0xFA;
     TRISC=0x00;
 // vedem daca merge daca nu hexa
                 
  PWM1_Init(5000);
     PWM2_Init(5000);
     PWM1_Set_Duty(255);
     PWM2_Set_Duty(255);
     PWM1_Start();
     PWM2_Start();  
}
void main() {
init();  
while(1){
if(SD1==0)
{B_M1=0;
B_M2=0;
F_M1=1;
F_M2=1;
}
else
{F_M1=0;
F_M2=0;
B_M1=1;
B_M2=1;
 
}}    
 
// PROBLEMA E CA IN CONFIGURATIA ASTA BITUL 1 al portului B nu se face niciodata 1, ca sa poate comanda motorul 2, spate.

Si acum am scris asa:

 

     TRISB.F7=1;
     TRISB.F6=1;
     TRISB.F5=1;
     TRISB.F4=1;
     TRISB.F3=1;
     TRISB.F1=0;
     TRISC=0x00;
 
Si functioneaza totul cum trebuie, nu mai inteleg nimic, care e diferenta dintre a scrie asa, sau direct trisb = cu o val in hexa sau binar...
Editat de Iliescu Mihai
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări