del_user_23188 Inserito: 28 maggio 2007 Segnala Share Inserito: 28 maggio 2007 Sto facendo in minibot che funziona come indicato nel sorgente di seguito. Non riesco ad utilizzare la porta A del pic in questione. Premetto che ho provato in pic con un vecchio programmino fatto con parsic e la porta A funziona. Che dite, mi date un consiglio? tenete conto che è il secondo programma c che faccio, il primo era "accendi i led" :-). Compilo con in HTPIC.grazie, ciao ************ inizio codice ******************************** #include <pic.h> #include <pic1687x.h> #include <stdio.h> #include <delay.c> #define asp 100 main(void) { TRISA = 0x03; // setta le porte RA0, RA1 del pic come entrate TRISB = 0; // setta le porte B del pic come uscite TRISC = 0; // setta le porte D del pic come uscite TRISD = 0; // setta le porte D del pic come uscite PORTA = 0x03; PORTB = 0; PORTC = 0; PORTD = 0; /* RA0 bumper destro RA1 bumper sinistro Bumper aperto = 0 Bomper chiuso = 1 RC0 motore destro - Forward - RC1 motore destro - Reverse + RC2 motore destro - Reverse - RC3 motore destro - Forward + RC4 motore sinistro - Forward - RC5 motore sinistro - Reverse + RC6 motore sinistro - Reverse - RC7 motore sinistro - Forward + Principio di funzionamento. Tabella della verità Bdx Bsx RA |Mdx Msx | PORTC S D ----------------------------------------------------- aperto aperto 00000 |avanti avanti | 1001 1001 aperto chiuso 00010 |fermo avanti | 0000 1001 chiuso aperto 00001 |avanti fermo | 1001 0000 chiuso chiuso 00011 |indiet. indiet. | 0110 0110 */ while (1) { switch (PORTA) { case (1): // bumper dx chiuso PORTC = 0b10010000; DelayMs(asp); // mot sx fermo, mot dx avanti PORTC = 0b00000000; DelayMs(asp); break; case (2): // bumper sx chiuso PORTC = 0b00001001; DelayMs(asp); // mot dx fermo, mot sx avanti PORTC = 0b00000000; DelayMs(asp); break; case (3): // bumper dx e sx chiusi PORTD = 0b00000001; DelayMs(asp); PORTC = 0b01100110; DelayMs(asp); // mot dx fermo, mot sx avanti PORTC = 0b00000000; DelayMs(asp); break; default: // bumper aperti PORTC = 0b10011001; DelayMs(asp); // mot sx avanti, mot dx avanti PORTC = 0b00000000; DelayMs(asp); break; } } } *************** fine codice *************************************** Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 28 maggio 2007 Segnala Share Inserita: 28 maggio 2007 Devi configurare i piedini della porta A come ingressi/uscite digitali nel registro ADCON1, guarda il datasheet dove parla dell'A/D Converter.Ciao. Link al commento Condividi su altri siti More sharing options...
del_user_23188 Inserita: 29 maggio 2007 Autore Segnala Share Inserita: 29 maggio 2007 D'accordo, stasera ci guardo. Ma la cosa strana è che con il 16F84 non è stato necessario fare questa inizializzazione. ti sembra normale o andava per caso?Ciao Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 Il PIC16F84 non ha il convertitore A/D. Ciao. Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 Qui devi dichiarare il tipo di PIC che usiCiao Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora