ifachsoftware Inserita: 14 luglio 2003 Segnala Share Inserita: 14 luglio 2003 SPI sta per serial programming interface ed e' una programmazione fatta con 3 fili.Ciao Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 22 luglio 2003 Segnala Share Inserita: 22 luglio 2003 Come promesso, comincio a mettere on line qualche cosa su cui lavorare. Troverete allegato lo schema dell'interfaccia encoder. Prossimamente pubblicherò lo schema dell'interfaccia D/A e qualche I/O digitale.Gli schemi sono indicativi anche se funzionano; devono essere intesi come base di lavoro.Appena l'avrò sperimentato metterò on line lo schema del simulatore di encoder. In questo modo potremo realizzare i nostri due assi sperimentali. Link al commento Condividi su altri siti More sharing options...
Igor Inserita: 23 luglio 2003 Segnala Share Inserita: 23 luglio 2003 Grande Livio, la tua fatica però sarà doppia perché ora io cercherò di capire e farò domande, allo stato attuale mi sento una specie di parassita che non fa nulla e rompe anche un po', comunque...La mia prima domanda è sulle marche di zero degli encoder, perchè è necessario ricercare la marca di zero di un encoder per azzerare un contatore? io di solito non le gestisco e faccio i cosiddetti "zeri asse" semplicemente andando ad azzerare il contatore degli impulsi encoder con un segnale derivato da un sensore, di solito microinterruttore su camma.La seconda è:abilito la procedura di zero indipendentemente per i due canali con PE3 e PE6 ma entrambi attivano la stessa porta, PE3, è una procedura standard?La terza, gli ingressi sono per encoder tipo line drive? cioè, in soldoni, collego a I1 A+ e a I2 A-?Infine, che cosa posso fare per sentirmi meno inutile ? Link al commento Condividi su altri siti More sharing options...
ppaseri Inserita: 23 luglio 2003 Segnala Share Inserita: 23 luglio 2003 Se niente va storto oggi dovrebbero consegnarmi il kIT Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 23 luglio 2003 Segnala Share Inserita: 23 luglio 2003 Ciao a tutti.Igor su come fare il ciclo di zero vai a vedere cosa ho scrittto su di un recente post nel forum azionamenti: li troverai le mie considerazioni sulle metodologie relative allo zero macchina; ci sono anche le varie considerazioni di altri utenti, quindi puoi farti un idea panoramica delle problematiche relative.Se guardi la documentazione HW di rabbit scoprirai che le due narche di zero vanno ad eccitare il medesimo interrupt esterno, la selezione del canale permette anche di riconoscere quale asse sta lavorando.Gli ingressi dei segnali sono completamente floating, quindi si può usare qualsiasi configurazione: line driver, push-pull, open collector.Quesito generale: supponendo che la marca di zero sia positiva, cioè è costituita da un impuso positivo, l'interrupt è pilotato dal livello giusto? Attendo le vs. considerazioni.Prima di andare in ferie (dopo 20-08-03) metterò (spero) on line il circuito del simulatore dell'asse. Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 25 luglio 2003 Segnala Share Inserita: 25 luglio 2003 Ciao a tutti , volevo segnalarvi che ho appena testato la mia rabbit Board su cui e' innestato un RCM3010 e rimandato a 50 comodi morsetti a vite passo 5mm e funziona il tutto correttamente.Se a qualcuno interessa lo schema dello stampato in formato AutoCAD , basta chiederlo e se puo' interessare ho anche 2 Stampate su pellicola Blu per fare lo stampato che mi sono avanzate.Adesso posso iniziare a divertirmi ... (Walter dove seiii ???)Ciao Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 26 luglio 2003 Segnala Share Inserita: 26 luglio 2003 Se a qualcuno interessa lo schema dello stampato in formato AutoCADA me interessa... se puoi postarlo nella e-mail , mi faresti un favore.Spero che non sia doppia faccia ....SalutiLuca Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 26 luglio 2003 Segnala Share Inserita: 26 luglio 2003 (modificato) Ciao DLGCOM , siccome la mail del forum non accetta allegati , ho uploadato il file nella sezione apposita del forum.Il file e' in formato dwg ed e' un singola faccia.Oggi ho provato a far lampeggiare un led e accenderne dietro pressione pulsante altri 2 e funziona tutto correttamente anche se sto un po' smadonnando con i settaggi delle porte che hanno ben 5 registri , e cercare le informazioni da PDF o HTML non e' molto agevole , dopo aver stampato anche questi manuali spero che la cosa risulti piu' agevole.Vi allego l'esempio che ho provato oggi :Mi sapete dire perche' il led lampeggiante non funziona se collegato alle porte PG4 o PG5 , ma alla PG2 si ???? <_< #class auto#ifndef __RCM3000_LIB #define __RCM3000_LIB #if (_BOARD_TYPE_ < RCM3000 || _BOARD_TYPE_ > (RCM3000+0x00FF)) #error "RCM3000.LIB only supports RCM3000 series boards." #endif// The following macros are used with LCD/Keypad Modules and values// default here according to the prototyping board. They must be defined// before using graphic libraries.// change strobe register here to match your application#define LCDCSREGISTER IB6CR // Use Port E bit 6 for LCD strobe#define LCDCSSHADOW IB6CRShadow // define shadow register#define LCDCSCONFIG 0xB8 // set for 3 waits, I/O (rd and wr) data strobe, allow writes#define LCDSTROBE 0x40 // bit mask#define KEYCSREGISTER IB6CR // Use Port E bit 6 for keypad strobe#define KEYCSSHADOW IB6CRShadow // define shadow register#define KEYCSCONFIG 0xB8 // set for 3 waits, I/O (rd and wr) data strobe, allow writes#define KEYSTROBE 0x40 // bit mask// change base address here to match above strobe address#define LCDBASEADDR 0xC000 // A15, A14, A13 = 6 for IB6CR I/O address#define KEYBASEADDR 0xC000 // A15, A14, A13 = 6 for IB6CR I/O address/*DESCRIPTION: LED ON/OFF control on LCD/Keypad Modules only. This function is non-reentrant.PARAMETER1: LED to control on LCD/Keypad Module. 0 = LED DS1 1 = LED DS2 2 = LED DS3 3 = LED DS4 4 = LED DS5 5 = LED DS6 6 = LED DS7 PARAMETER2: value used to control LED. 0 = OFF 1 = ONRETURN VALUE: None*/nodebugvoid ledOut(int led, int value){ dispLedOut(led, value);}/*DESCRIPTION: This function initializes parallel ports A through G for use with the RCM3000 series controllers and prototyping board. This function is intended for demonstration purposes only and can be modified for your applications. Call this function at the beginning of your application code. This function is non-reentrant. This function will: 1. Initialize system I/O ports A through G. See table below. 2. Set any unused configurable port pins as outputs and output high. 3. Assume that there is only one controller installed in the Master position on the prototyping board. PARAMETER: NoneRETURN VALUE: NonePort Function I/O I/O State==== ============================= ====== ===========================================PA0 Configurable external I/O bus Output High when not driven by I/O busPA1 Configurable external I/O bus Output High when not driven by I/O busPA2 Configurable external I/O bus Output High when not driven by I/O busPA3 Configurable external I/O bus Output High when not driven by I/O busPA4 Configurable external I/O bus Output High when not driven by I/O busPA5 Configurable external I/O bus Output High when not driven by I/O busPA6 Configurable external I/O bus Output High when not driven by I/O busPA7 Configurable external I/O bus Output High when not driven by I/O busPB0 Not used Input Pulled-up on corePB1 Not used Input Pulled-up on corePB2 Configurable external I/O bus Input Pulled-up on core when not driven by I/O busPB3 Configurable external I/O bus Input Pulled-up on core when not driven by I/O busPB4 Configurable external I/O bus Input Pulled-up on core when not driven by I/O busPB5 Configurable external I/O bus Input Pulled-up on core when not driven by I/O busPB6 Not used Output High when not driven by I/O busPB7 Not used Output High when not driven by I/O busPC0 Not used Output HighPC1 Not used Input Pulled-up on corePC2 TXC Output High when not driven by RS232 PC3 RXC Input Pulled-up on core when not driven by RS232PC4 TXB Output High when not driven by RS232PC5 RXB Input Pulled-up on core when not driven by RS232PC6 TXA Output High when not drivenPC7 RXA Input Pulled-up on core when not driven PD0 Realtek RSTDRV Output High when not driven by ethernetPD1 Not used Input Pulled-up on corePD2 Not used (jumper not installed) Output High PD3 Not used (jumper not installed) Output High PD4 Not used Output HighPD5 Not used Input Pulled-up on protoboardPD6 Not used (jumper not installed) Output High PD7 Not used (jumper not installed) Output High PE0 Not used (jumper not installed) Output HighPE1 Not used Output HighPE2 Realtek AEN Output High when not driven by ethernetPE3 LCD device select Output LowPE4 Infrared device speed select Output LowPE5 Not used Output HighPE6 External I/O Strobe Output High when not driven by LCD/KeypadPE7 Not used Output HighPF1 Not used - future Motor/Encoder Input Pulled-up on protoboardPF2 Not used - future Motor/Encoder Input Pulled-up on protoboardPF3 Not used - future Motor/Encoder Input Pulled-up on protoboardPF4 Not used - future Motor/Encoder Input Pulled-up on protoboardPF5 Not used - future Motor/Encoder Input Pulled-up on protoboardPF6 Not used - future Motor/Encoder Input Pulled-up on protoboardPF7 Not used - future Motor/Encoder Input Pulled-up on protoboardPG0 Switch S3 (normally open) Input Pulled-up on protoboardPG1 Switch S2 (normally open Input Pulled-up on protoboardPG5 LED DS3 Output High (TXF Output Pulled-down when not driven by infrared)PG3 RXF Input Driven by infrared driverPG4 Infrared device MD1 Input Pulled-up on protoboardPG5 Infrared device MD0 Input Pulled-down on protoboardPG6 LED DS1 Output HighPG7 LED DS2 Output High */nodebugvoid brdInit(){ // if PORTA_AUX_IO has been defined at the top of application code // for external I/O bus, do not reconfigure.#ifndef PORTA_AUX_IO /////// // configure Port A // use SPCR to enable and disable external I/O data bus /////// WrPortI(PADR, &PADRShadow, 0xFF); //set to output all high WrPortI(SPCR, &SPCRShadow, 0x84); //ignore SMODE pins, set to output /////// // configure Port B // use SPCR to enable and disable external I/O address bus /////// WrPortI(PBDR, &PBDRShadow, 0xC0); //set bits 7,6 to output high //bits 5-0 are normally inputs #endif /////// // configure Port C // serial port A communicates with Dynamic C // using serXopen in application code will configure serial ports B and C automatically // so configuration not needed here /////// WrPortI(PCDR, &PCDRShadow, PCDRShadow|0x15); //set bits 4,2,0 high WrPortI(PCFR, &PCFRShadow, PCFRShadow&0xEA); //clear bit 4,2,0 to normal function //bits 5,3,1 normally inputs /////// // configure Port D // using ethernet applications will automatically configure bit 0 for strobe // so not configured here /////// WrPortI(PDCR, &PDCRShadow, PDCRShadow&0x00); //clear all bits to pclk/2 WrPortI(PDFR, &PDFRShadow, PDCRShadow&0x00); //clear all bits to normal function WrPortI(PDDCR, &PDDCRShadow, PDDCRShadow&0x2D); //clear bits 7,6,4,3,2,0 drive high and low WrPortI(PDDR, &PDDRShadow, PDDRShadow|0xDD); //set bits 7,6,4,3,2,0 output high WrPortI(PDDDR, &PDDDRShadow, PDDDRShadow|0xDD); //set bits 7,6,4,3,2,0 to output WrPortI(PDDDR, &PDDDRShadow, PDDDRShadow&0xDD); //clear bits 5,1 to input /////// // configure Port E // using LCD/Keypad applications will automatically configure bit 6 for external I/O strobe // so not configured here // using ethernet applications will automatically configure port bit 2 for strobe // so not configured here /////// WrPortI(PECR, &PECRShadow, PECRShadow&0x00); //clear all bits to pclk/2 WrPortI(PEFR, &PEFRShadow, PECRShadow&0x00); //clear all bits to normal function WrPortI(PEDR, &PEDRShadow, 0xE7); //set bits 7,6,5,2,1,0 output high and //set bits 4,3 output low WrPortI(PEDDR, &PEDDRShadow, PEDDRShadow|0xFB); //set bits 7,6,5,4,3,2,1,0 to output /////// // configure Port F // originally for motor/encoders but for anything here /////// WrPortI(PFCR, &PFCRShadow, 0x00); //clear all bits for pclk/2 WrPortI(PFFR, &PFFRShadow, 0x00); //clear all bits for normal function //WrPortI(PFDCR, &PFDCRShadow, ???); //future bit drive output //WrPortI(PFDR, &PFDRShadow, ???); //future bit output WrPortI(PFDDR, &PFDDRShadow, 0x00); //clear all bits to input /////// // configure Port G // infrared device sample program will configure serial port F /////// WrPortI(PGCR , &PGCRShadow , 0x00); // clear all bits for pclk/2 WrPortI(PGFR , &PGFRShadow , 0x00); // Funzioni Normali WrPortI(PGDCR , &PGDCRShadow, 0xFF); // Uscite Open Drain WrPortI(PGDR , &PGDRShadow , 0xFF); // Uscite Alte WrPortI(PGDDR , &PGDDRShadow, 0xFF); // Tutte Uscite}#endif#define DS1 6 //led, port G bit 6#define DS2 7 //led, port G bit 7#define DS3 2 //led, port G bit 2 (Con bit 4-5 Non funzionava)#define S2 1 //switch, port G bit 1#define S3 0 //switch, port G bit 0void main(){ auto int sw1, sw2, led1, led2; brdInit(); //initialize board for this demo led1=led2=1; //initialize leds to off value sw1=sw2=0; //initialize switches to false value while (1) { costate //wait for switch S2 press { if (BitRdPortI(PGDR, S2)) abort; waitfor(DelayMs(50)); //switch press detected if got to here if (BitRdPortI(PGDR, S2)) //wait for switch release { sw1=!sw1; //set valid switch abort; } } costate //wait for switch S3 press { if (BitRdPortI(PGDR, S3)) abort; waitfor(DelayMs(50)); //switch press detected if got to here if (BitRdPortI(PGDR, S3)) //wait for switch release { sw2=!sw2; //set valid switch abort; } } costate { // toggle DS1 led upon valid S2 press/release and clear switch if (sw1) { BitWrPortI(PGDR, &PGDRShadow, led1=led1?0:1, DS1); sw1=!sw1; } } costate { // toggle DS2 upon valid S3 press/release and clear switch if (sw2) { BitWrPortI(PGDR, &PGDRShadow, led2=led2?0:1, DS2); sw2=!sw2; } } // Lampeggia Led 3 costate { BitWrPortI(PGDR, &PGDRShadow, 0, DS3); // On waitfor(DelayMs(100)); BitWrPortI(PGDR, &PGDRShadow, 1, DS3); // Off waitfor(DelayMs(100)); } }}Ciao a tutti Modificato: 26 luglio 2003 da ifachsoftware Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 26 luglio 2003 Segnala Share Inserita: 26 luglio 2003 CIAO A TUTTI SONO ARRIVATO IERI SERA E OGGI DEVO ANDARE A CERCARMI LA VALIGIA STI M*****I FACCHINI DI ROMA-FIUMICINO MI HANNO GIA ROTTO I COG****IERO IN ETIOPIA NON TURCHIA , A 6 ORE DI JIP DA ADDIS ABEBAADESSO STARO A CASA-UFFICIO QUALCHE GIORNO IN ATTESA DI QUALCHE ALTRA AVVENTURA ASSURDA LAVORATIVAVEDO DI RIUSCIRE A RIACCENDERE IL RABBIT E VEDERE DI RECUPERARECIAO A TUTTI Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 26 luglio 2003 Segnala Share Inserita: 26 luglio 2003 ho uploadato il file nella sezione apposita del forumGia' scaricato , faro' lo stampato , in attesa di ricevere il Kit.GrazieLuca Link al commento Condividi su altri siti More sharing options...
ppaseri Inserita: 26 luglio 2003 Segnala Share Inserita: 26 luglio 2003 Il Kit è arrivato.....e come dice ifach ho già cominciato a smadonnare pure io.( Anche perchè come prima cosa ho provato il comando dei led via rete ).Vi farò sapere al + presto spero ora devo scappare, scusate ( a scaricare lo stampato ) Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 30 luglio 2003 Segnala Share Inserita: 30 luglio 2003 Vi informo che ho provato ieri sera l'esempio dei deue led che si accendono tramite HTML ,ed il tutto funziona che e' una meraviglia , le uniche pecche che al momento vedo sono che nonostante le 600-700 pagine di documentazione stampata , andando a leggere bene non e' il massimo della chiarezza ... anzi , pero' da quello che vedo come mezzo e' proprio potente.Ciao a tutti Link al commento Condividi su altri siti More sharing options...
Igor Inserita: 30 luglio 2003 Segnala Share Inserita: 30 luglio 2003 Ehm, non ho capito a cosa serve lo stampato..Grazie!! Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 30 luglio 2003 Segnala Share Inserita: 30 luglio 2003 Ehm, non ho capito a cosa serve lo stampato..Ciao Igor,Lo satmpato serve per disponiblizzare tutti i pin del modulo su comodi connettori a vite .Semplifica la vita per la " dura " fase di testsalutiLuca Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 30 luglio 2003 Segnala Share Inserita: 30 luglio 2003 Allego lo schema del simulatore di encoder.Io lo provato con lo XR4151, ma vanno bene anche LM131, LM231, LM331.Sullo schema ci sono le indicazioni relative ai componenti. Non ho ancora inserito il ritardo per similare l'inerzia del motore.Se ce la faccio, prima di andare in vacanza (partenza prevista per 21-08, ritorno 27-09) metto on line anche lo schema dell'interfaccia analogica per pilotare l'azionamento virtuale. Link al commento Condividi su altri siti More sharing options...
Gabriele Corrieri Inserita: 30 luglio 2003 Segnala Share Inserita: 30 luglio 2003 Ciao Livio,complimenti! bel colpo!Questo schema sarà utilissimo a voi per il Rabbit, ma credo sia utile anche per fare verifiche e simulazioni sul campo, grazie Livio!Ciao Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 31 luglio 2003 Segnala Share Inserita: 31 luglio 2003 Ehm, non ho capito a cosa serve lo stampatoLo stampato serve a chi non ha la demo-board (o ha la demo-board e non vuole smadonnare con i connettori passo 2 e montaggi smd) ma ha il solo core module RCM3010 e vuole farsi le prove in maniera piu' comoda.Tale stampato in pratica adatta tutti i 50 e passa mirsetti del core rinviandoli su morsetti passo 5 a vite in modo che ci si possa facilmente collegare a ingressi o uscite o decodifiche encoder fatte con la mille-fori.Su tale stampato ho previsto la resistenza da mettere in serie alla batteria , il pulsante di reset , un led di segnalazione presenza 3,3V , un Diodo che mette in corto l'alimentazione in caso di inversione di polarita' in modo da proteggere il core module.L'alimentazione a 3,3V , la batteria tampone a pastiglia l'ho fatta su una millefori a parte che si collega con dei fili tramite il morsetto passo 5.Lo schema dell'alimentatore lo ho uplodato oggi nella sezione Up/download del forum.CIao Link al commento Condividi su altri siti More sharing options...
Igor Inserita: 1 agosto 2003 Segnala Share Inserita: 1 agosto 2003 A me questa scheda mi sembra una genialata!Quasi quasi abbandono la mia "ufficiale" per questa!Siccome non so neanche da dove si inizia per fare un circuito stampato, c'è qualche buon'anima che, facendolo per se, ne può fare anche altri due o tre.... (uno per il sottoscritto+amici giovani e squattrinati da aiutare)Chiaramente sono pronto a pagare il tutto!!!Fatemi sapere!Grazie!!P.S. Penso che i circuiti sviluppati da Livio e Ifach siano di un interesse estremo e non solo per questo progetto! Complimenti!! Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 agosto 2003 Segnala Share Inserita: 6 agosto 2003 con questo piccolo firmware si possono vedere i led accesi degli ingressi porta E , quindi scritti dulla porta Gho usato un ciclo for per risparmiare qualche riga di codiceho realizzato una millefori con sopra dei switches collegati agli ingressi .poi ho aggiunto un integrato con 4 A/D e 1 D/A che viene letto su bus I2C appena li trovo vi mando un client realizzato in visual basic che tramite pulsanti comanda direttamentele uscite del RABBIT .qua nel firmware faccio anche la lettura di tutta la porta sottraendo 4 al valore totale , visto che manca il pin 2 della porta .ogni 3 secondi viene refreshato la finestra di output del degub del RABBIT per vedere cosa succedeciao a tutti il codice:/*****************************************************modifica per vedere i led in base agli ingressi Elettrika2000 - Walter 27\04\03 0.11 ****************************************************/main() {int totale;int ingresso[8];auto i;WrPortI(PGFR, &PGFRShadow, 0x0); //Setta la porta g come I/O (bit 5 e 7 a livello basso 0) WrPortI(PGDCR, &PGDCRShadow, 0x0); //Setta il la porta g pullup x0 o open collector xFFWrPortI(PGDDR, &PGDDRShadow, 0xff); //Setta la porta g come output (gestibile bit bit)WrPortI(PEDDR, &PEDDRShadow, 0x00); //Setta la porta E come output (gestibile bit bit)while(1){for(i=0;i<8;i++){ ingresso=BitRdPortI(PEDDR,i);if (ingresso) { //codice aggiunto per visualizzare tramite led lo stato degli ingressiBitWrPortI(PGDR, &PGDRShadow, 1, i);} else {BitWrPortI(PGDR, &PGDRShadow, 0, i); //finisce qua il codice aggiunto}}totale=RdPortI(PEDDR)-4; // il bit 2 della porta E non esiste ma viene considerato dal processore// sempre settato a 1 per default , quindi sottraggo al valore totale// del byte di ingresso -4 (4 e' il valore in binario decimale del bit 2)costate {waitfor(DelayMs(3000));printf("valore ingresso 0=%d\n",ingresso[0]);printf("valore ingresso 1=%d\n",ingresso[1]);printf("valore ingresso 2=%d\n",ingresso[2]);printf("valore ingresso 3=%d\n",ingresso[3]);printf("valore ingresso 4=%d\n",ingresso[4]);printf("valore ingresso 5=%d\n",ingresso[5]);printf("valore ingresso 6=%d\n",ingresso[6]);printf("valore ingresso 7=%d\n",ingresso[7]);printf("totale=%d\n",totale);} }} Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 7 settembre 2003 Segnala Share Inserita: 7 settembre 2003 Sono riuscito a gestire le uscite (avevo dei problemi con le aree Shadow ....) vi posto il sorgente per lampeggiare 2 led ed accendene un altro tramite pulsante./* IFACH Software - Calpe , Costa Blanca ------------------------------------- Program name : PROVAUSCITE.C Last Update : 7/Sep/2003 Language ... : Dinamic C SE Features ... : Test Uscite RCM3010 7/Sep/2003 Versione con Out funzionanti (Finalmente !) */#class auto // Place local variables on the stack./* Port Function I/O I/O State ==== ============================= ====== =========================================== PA0 Configurable external I/O bus Output High when not driven by I/O bus PA1 Configurable external I/O bus Output High when not driven by I/O bus PA2 Configurable external I/O bus Output High when not driven by I/O bus PA3 Configurable external I/O bus Output High when not driven by I/O bus PA4 Configurable external I/O bus Output High when not driven by I/O bus PA5 Configurable external I/O bus Output High when not driven by I/O bus PA6 Configurable external I/O bus Output High when not driven by I/O bus PA7 Configurable external I/O bus Output High when not driven by I/O bus PB0 Not used Input Pulled-up on core PB1 Not used Input Pulled-up on core PB2 Configurable external I/O bus Input Pulled-up on core when not driven by I/O bus PB3 Configurable external I/O bus Input Pulled-up on core when not driven by I/O bus PB4 Configurable external I/O bus Input Pulled-up on core when not driven by I/O bus PB5 Configurable external I/O bus Input Pulled-up on core when not driven by I/O bus PB6 Not used Output High when not driven by I/O bus PB7 Not used Output High when not driven by I/O bus PC0 Not used Output High PC1 Not used Input Pulled-up on core PC2 TXC Output High when not driven by RS232 PC3 RXC Input Pulled-up on core when not driven by RS232 PC4 TXB Output High when not driven by RS232 PC5 RXB Input Pulled-up on core when not driven by RS232 PC6 TXA Output High when not driven PC7 RXA Input Pulled-up on core when not driven PD0 Realtek RSTDRV Output High when not driven by ethernet PD1 Not used Input Pulled-up on core PD2 Not used (jumper not installed) Output High PD3 Not used (jumper not installed) Output High PD4 Not used Output High PD5 Not used Input Pulled-up on protoboard PD6 Not used (jumper not installed) Output High PD7 Not used (jumper not installed) Output High PE0 Not used (jumper not installed) Output High PE1 Not used Output High PE2 Realtek AEN Output High when not driven by ethernet PE3 LCD device select Output Low PE4 Infrared device speed select Output Low PE5 Not used Output High PE6 External I/O Strobe Output High when not driven by LCD/Keypad PE7 Not used Output High PF1 Not used - future Motor/Encoder Input Pulled-up on protoboard PF2 Not used - future Motor/Encoder Input Pulled-up on protoboard PF3 Not used - future Motor/Encoder Input Pulled-up on protoboard PF4 Not used - future Motor/Encoder Input Pulled-up on protoboard PF5 Not used - future Motor/Encoder Input Pulled-up on protoboard PF6 Not used - future Motor/Encoder Input Pulled-up on protoboard PF7 Not used - future Motor/Encoder Input Pulled-up on protoboard PG0 Switch S3 (normally open) Input Pulled-up on protoboard (PULSANTE 1) PG1 Switch S2 (normally open Input Pulled-up on protoboard (PULSANTE 2) PG2 TXF Output Pulled-down when not driven by infrared PG3 RXF Input Driven by infrared driver (LED3) PG4 Infrared device MD1 Input Pulled-up on protoboard PG5 Infrared device MD0 Input Pulled-down on protoboard PG6 LED LED1 Output High (LED1) PG7 LED LED2 Output High (LED2) */nodebug void brdInit(){ // configure Port A // use SPCR to enable and disable external I/O data bus WrPortI(PADR, &PADRShadow, 0xFF); // set to output all high WrPortI(SPCR, &SPCRShadow, 0x84); // ignore SMODE pins, set to output // configure Port B // use SPCR to enable and disable external I/O address bus WrPortI(PBDR, &PBDRShadow, 0xC0); // set bits 7,6 to output high // bits 5-0 are normally inputs // configure Port C // serial port A communicates with Dynamic C // using serXopen in application code will configure serial ports B and C automatically // so configuration not needed here WrPortI(PCDR, &PCDRShadow, PCDRShadow|0x15); // set bits 4,2,0 high WrPortI(PCFR, &PCFRShadow, PCFRShadow&0xEA); // clear bit 4,2,0 to normal function // bits 5,3,1 normally inputs // configure Port D // using ethernet applications will automatically configure bit 0 for strobe // so not configured here WrPortI(PDCR, &PDCRShadow, PDCRShadow&0x00); // clear all bits to pclk/2 WrPortI(PDFR, &PDFRShadow, PDCRShadow&0x00); // clear all bits to normal function WrPortI(PDDCR, &PDDCRShadow, PDDCRShadow&0x2D); // clear bits 7,6,4,3,2,0 drive high and low WrPortI(PDDR, &PDDRShadow, PDDRShadow|0xDD); // set bits 7,6,4,3,2,0 output high WrPortI(PDDDR, &PDDDRShadow, PDDDRShadow|0xDD); // set bits 7,6,4,3,2,0 to output WrPortI(PDDDR, &PDDDRShadow, PDDDRShadow&0xDD); // clear bits 5,1 to input // configure Port E // using LCD/Keypad applications will automatically configure bit 6 for external I/O strobe // so not configured here // using ethernet applications will automatically configure port bit 2 for strobe // so not configured here WrPortI(PECR, &PECRShadow, PECRShadow&0x00); // clear all bits to pclk/2 WrPortI(PEFR, &PEFRShadow, PECRShadow&0x00); // clear all bits to normal function WrPortI(PEDR, &PEDRShadow, 0xE7); // set bits 7,6,5,2,1,0 output high and // set bits 4,3 output low WrPortI(PEDDR, &PEDDRShadow, PEDDRShadow|0xFB); // set bits 7,6,5,4,3,2,1,0 to output // configure Port F // originally for motor/encoders but for anything here WrPortI(PFCR, &PFCRShadow, 0x00); // clear all bits for pclk/2 WrPortI(PFFR, &PFFRShadow, 0x00); // clear all bits for normal function //WrPortI(PFDCR, &PFDCRShadow, ???); // future bit drive output //WrPortI(PFDR, &PFDRShadow, ???); // future bit output WrPortI(PFDDR, &PFDDRShadow, 0x00); // clear all bits to input // configure Port G // infrared device sample program will configure serial port F/* WrPortI(PGCR, &PGCRShadow, 0x00); // clear all bits for pclk/2 WrPortI(PGFR, &PGFRShadow, 0x00); // clear all bits for normal function WrPortI(PGDCR, &PGDCRShadow, PGDCRShadow|0xC0); // set bits 7,6 drive open drain WrPortI(PGDR, &PGDRShadow, PGDCRShadow|0xC0); // set bit 7,6 output high BitWrPortI(PGDCR, &PGDCRShadow, 0, 2); // clear bit 2 drive output BitWrPortI(PGDR, &PGDRShadow, 0, 2); // clear bit 2 output low WrPortI(PGDDR, &PGDDRShadow, 0xC4); // set bits 7,6,2 to output and // clear bits 5,4,3,1,0 to input PG0 Switch S3 (normally open) Input Pulled-up on protoboard (PULSANTE 1) PG1 Switch S2 (normally open Input Pulled-up on protoboard (PULSANTE 2) PG2 TXF Output Pulled-down when not driven by infrared PG3 RXF Input Driven by infrared driver (LED3) PG4 Infrared device MD1 Input Pulled-up on protoboard PG5 Infrared device MD0 Input Pulled-down on protoboard PG6 LED LED1 Output High (LED1) PG7 LED LED2 Output High (LED2) */ WrPortI(PGCR , &PGCRShadow , 0x00); // clear all bits for pclk/2 WrPortI(PGFR , &PGFRShadow , 0x00); // clear all bits for normal function WrPortI(PGDCR, &PGDCRShadow, 0xC8); // Out 3,7,6 open drain WrPortI(PGDR , &PGDRShadow , PGDCRShadow|0xC8); // set bit 3,7,6 output high WrPortI(PGDDR, &PGDDRShadow, 0xC8); // 3,7,6 = Uscite gli altri = Input }// Definizioni costanti#define LED1 6 // LED 1 port G bit 6#define LED2 7 // LED 2 port G bit 7#define LED3 3 // LED 3 port G bit 3#define PULS1 0 // SWITCH 2 port G bit 0#define PULS2 1 // SWITCH 1 port G bit 1void LedGOn(int led){ BitWrPortI(PGDR, &PGDRShadow, 0, led);}void LedGOff(int led){ BitWrPortI(PGDR, &PGDRShadow, 1, led); }cofunc flashled[2](int led, int ontime, int offtime){ LedGOn(led); waitfor(DelayMs(ontime)); LedGOff(led); waitfor(DelayMs(offtime));}void main(){ auto int sw1; brdInit(); // Initializza il modulo sw1 = 0; for(; { costate { if (BitRdPortI(PGDR, PULS1)) abort; // wait for switch PULS1 press waitfor(DelayMs(10)); // switch press detected if got to here if (BitRdPortI(PGDR, PULS1)) // wait for switch release { sw1=!sw1; // set valid switch BitWrPortI(PGDR, &PGDRShadow, sw1, LED3); abort; } } costate { wfd { // 50 ms on/off flashled[0](LED1,50,50); // flashes LED1 (PG6) } } costate { wfd { // 200 ms on/100 ms off flashled[1](LED2,200,100); // flashes LED2 (PG7) } } }}Mi piacerebbe vedere qualcun altro che ci lavora ... Ciao a tutti Link al commento Condividi su altri siti More sharing options...
Mario Maggi Inserita: 7 settembre 2003 Segnala Share Inserita: 7 settembre 2003 Bravo ifachsoftware!Io non sono in grado ..... ci ero riuscito nel 1978 facendo accendere dei led in sequenza con il primo micro della National, si chiamava SC/MP, poi mi sono ritirato dalla programmazione.Buon lavoro!Mario Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 8 settembre 2003 Segnala Share Inserita: 8 settembre 2003 Grazie Mario , mi auguro solo che dovrai dare del bravo anche ad altri ... Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 ottobre 2003 Segnala Share Inserita: 8 ottobre 2003 Ciao ragazzi, io sono stato in vacanza, ma durante l'assenza non si è mosso niente.Gradirei sapere se siete ancora vivi! Specie coloro i quali hanno acquistato il kit o comunque hanno iniziato a sviluppare qualche cosa.Ho allegato un documento, l'ennesimo, con il riassunto di quanto è stato fatto e dei prossimi passi.Attendo le Vs. risposte, sopra a tutto è necessario stabilire chi fa che cosa. Fatevi sentire! Link al commento Condividi su altri siti More sharing options...
Lupin1000 Inserita: 4 novembre 2003 Segnala Share Inserita: 4 novembre 2003 Ciao a tutti sono un amico di Igor. Ho letto quasi tutti i post che avete fatto e noto con dispiacere che il progetto sta rallentando la sua corsa. Io ho gia comprato tutto il kit del rabbit e sto aspettando con impazienza che arrivi. Nel frattempo mi sto studiando il funzionamento sul sito della rabbit e anche se non ci capisco piu di tanto in quanto non ho mai avuto a che fare con sta roba mi interessa molto e penso che ci si possa davvero tirare fuori qualcosa di tosto. Inoltre sono anche senza software. Sapete per caso se si puo scaricare da qualche parte? Anche un versione demo o shareware. Per il momento vi saluto e alla prossima. Se avete voglia postate per noi Newbie qualche programmino interessante per poter capire un po le basi. Ciao a tutti! Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 5 novembre 2003 Segnala Share Inserita: 5 novembre 2003 Dire rallentato è un pietoso eufemismo. Visto lo scarso interesse ho smesso di mettere on line roba. Comunque io intendo andare avanti anche da solo. Prossimamente, dopo averla, provata metterò on line un'interfaccia analogica e magari aqualche esempio. 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