rasega Inserito: 16 novembre 2005 Segnala Share Inserito: 16 novembre 2005 Ciao,sto cercando di gestire 8 sonar tramite un 68HC11,multiplexandoli.Le routine di lettura del singolo sonar son già pronte,ma ora dovrei capire come fare ad unire gli 8 valori (binari) che isensori mi forniscono :- uso 3 bit (PB3, PB4 e PB5) per scegliere il sonar tramite ilmultiplexer (LS238) che ho montato sulla scheda:000 - sonar1001 - sonar2...111 - sonar8- ho pensato di utilizzare una variabile a 8 bit mettendo ad 1 il bitcorrispondente al sensore se questo rileva un oggetto (entro il rangeda me definito) :es : 00101000 ---> attivi sonar 4 e 6 (conto dal LSBit)Che codice assembly dovrei usare secondo voi per settare il bitcorrispondente senza doverlo ripetere 8 volte, una per ogni sonar ??C'è una soluzione + semplice altrimenti ?? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 novembre 2005 Segnala Share Inserita: 16 novembre 2005 Da quello che scrivi sembra che i sonar diano un livello 1 se c'è presenza di ostacoli nella gamma coperta.Il sistema più semplice è mantenere i sonar sempre attivi e usare il miltiplexer per leggere in sequenza le uscite dei sensori. Link al commento Condividi su altri siti More sharing options...
rasega Inserita: 18 novembre 2005 Autore Segnala Share Inserita: 18 novembre 2005 Problema di sfruttamento delle risorse del robot a parte (8 sonar richiedono un po' troppa potenza...) , il multiplexer voglio effettivamente che selezioni uno alla volta i sonar, ma non è neppure fattibile che essi funzionino continuamente, si distrurberebbero a vicenda non sapendo più quale sia l'echo giusto che sto ricevendo,di conseguenza devo x forza usarne uno alla volta !!In ogni caso il mio problema al momento è principalmente di puro assembler :- come setto i bits di ingresso del multiplexer in modo da fare 8 cicli in ogniuno dei quali seleziono 1 sonar in base al suo codice binario ?? (in pratica vorrei contare da 000 a 111 sui bit PB3,4,5)- come setto il bit corrispondente al sonar su una variabile ad 8 bit ??Altra soluzione sarebbe inviare al programma di controllo i dati del singolo sonar volta x volta, ma questo sarebbe uno spreco di banda e risorse, no ?? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 18 novembre 2005 Segnala Share Inserita: 18 novembre 2005 Scusa la domanda banale, ma tu conosci l'assembler e, in particolare, quello del 68HC11?Perchè alzare o abbassare un bit è un'operazione banale. Tutti i microcontrollori e microprocessori si dividono un due categorie, da qusto punto di vista: quelli che hanno istruzioni dedicate al bit (come i PIC) e quelli che non ce l'hanno (come il classico 8052). Se il 68HC11 ha le sistruzioni dedicate devi solo sfogliarti l'elenco istruzioni per reperire il mnemonico, l'equivalente delle BCF(bit clear) e BSF(bit set) dei PIC.Se non ha questo tipo di istruzioni si usa il classico metodo: l'OR forza gli "1" e l'AND forza gli "0". Quindi se devi settare il bit 3 della variabile Pippo esegui Pipppo OR b'00001000'; mentre per azzerare il bit 3 della variabile Pippo esegui Pippo AND b'11110111'.Queste sono le regole elementari dell'algebra di bool. Link al commento Condividi su altri siti More sharing options...
rasega Inserita: 21 novembre 2005 Autore Segnala Share Inserita: 21 novembre 2005 (modificato) In effetti ho problemi proprio xè non conosco tanto bene l'assembler, ma le istruzioni base ci sono (bset, bclr) e le conosco, scusa mi son spiegato male :il problema non è tanto del settaggio dei bit, quanto della gestione del ciclo :se devo fare un ciclo da 1 a 8 (o da 0 a 7) ed uso 3 bits (3,4 & 5) di un registro a 8 bit (PORT B !!) così :xx000xxxxx001xxxxx010xxx......xx111xxxCome dovrei fare a creare questo ciclo (ovvero incrementare la "variabile", ovvero settare i 3 bits) ??In effetti in questo caso non conosco il codice assembler che dovrei utilizzare ,la logica mi dice che potrebbe funzionare aggiungendo 4 (00001000) e verificando il raggiungimento della fine ciclo con una maschera (xx111xxx), ma non ne sono molto convinto !! Modificato: 21 novembre 2005 da rasega Link al commento Condividi su altri siti More sharing options...
rasega Inserita: 24 novembre 2005 Autore Segnala Share Inserita: 24 novembre 2005 Che software posso usare per debuggare il codice scritto in assembler per favore ??L'assemblatore asmhc11 che uso mi dice solamente quanti errori ci sono, ma non dove si trovano e di che tipo sono Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 24 novembre 2005 Segnala Share Inserita: 24 novembre 2005 se devo fare un ciclo da 1 a 8 (o da 0 a 7) ed uso 3 bits (3,4 & 5) di un registro a 8 bit (PORT B !!) così :xx000xxxxx001xxxxx010xxx......xx111xxx Link al commento Condividi su altri siti More sharing options...
rasega Inserita: 5 dicembre 2005 Autore Segnala Share Inserita: 5 dicembre 2005 Dal tenore delle tue domande pare di capire che tu non abbia una grande dimestichezza con queste tecniche. Forse sarebbe il caso che tu ti faccia una cultura. 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