Lupin1000 Inserita: 5 novembre 2003 Segnala Share Inserita: 5 novembre 2003 Ok intanto vedo cosa riesco a tirarci fuori... Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 22 dicembre 2003 Segnala Share Inserita: 22 dicembre 2003 E' ARRIVATO FINALMENTE!!!! Mi e' arrivato il tool di sviluppo ... dopo tante peripezie....Per motivi di urgenza dovro' gia' iniziare ad usarlo .Il mio primo obbiettivo ( a parte capire come funziona ) e' di preparare una rete 485 per comunicare con stazioni che saranno dotate di un PIC .Il secondo di interfacciare una memoria COMPACT FLASH per avere un archivio di eventi.Il terzo di interfacciare il tutto con un PC , a questo punto le strade sono due : usare le potenzialita' di rete del rabbit o creare un interfaccia tipo scada con VB ... allaciandosi al progetto di Livio.In tutti i modi , io credo molto in questi moduli per la loro potenza e versatilita'.Spero che i vecchi adepti di questo progetto siano ancora in attivita' per poter scambiare idee ....Io ho anche avuto fortuna ... comprandolo qui in Brasile ... ho ricevuto anche l'alimentatore Chissa' se possiamo aprire un direttorio per depositare i risultati delle esperienze...Saluti Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 22 dicembre 2003 Segnala Share Inserita: 22 dicembre 2003 Non siamo rimasti in tanti. Io sto preparando qualche cosa sia HW che SW. Avevo anche ipotizzato, nel prosiego del lavoro sugli scada, di interfacciare il Rabbit in ethernet usando VB, sulla falsariga dell'esempio di Tanzilli.Comunque i miei tempi non hanno certo l'urgenza dei tuoi. Io ho già sperimentato alcune cosa, anche se al momento sono un po' fermo. Sono comunquue disponibibile per scambi di idee.Auguri di Buon Natale e Felice 2003 (tra l'altro dalle tue parti dovrebbe essere piena estate o sbaglio?) Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 22 dicembre 2003 Segnala Share Inserita: 22 dicembre 2003 Nei prossimi giorni dovrei incontrare Igor & co e vediamo di definire una qualche linea per procedere.Io delle prove le ho fatte sia come gestione I/O che come gestione di Web Server.Il problema e' sempre quello del tempo.Ciao a tutti Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 22 dicembre 2003 Segnala Share Inserita: 22 dicembre 2003 Pochi ma buoni... io iniziero propio in queste ferie a studiare e realizzaree qualche cosa in pratica.Il mo progetto e' collegare un carsosello in rete 485 per scambiare dati tra un master e 26 stazioni .Questo master ha il compito di gestire il movimento e la priorita' di ogni stazione .In piu' come ultimo stadio , poter interfacciare il master con una rete locale , per mostrare allarmi e lo stato delle stazioni nel PC della manutenzione.Per rendere le cose piu', difficili , dovro' fare un ponte radio tra il master e i PC , putroppo il master e' sempre in movimento....Ma sara una bella sfida...Buon Natale e felice anno nuovo ... si qui siamo in estate , infatti la notte del 31 e' in progetto di fare il " tradizionale " bagno al mare quando scatta la mezzanotte ....Saluti Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 23 dicembre 2003 Segnala Share Inserita: 23 dicembre 2003 Ti stai ponendo degli obiettivi abbastanza importanti , speriamo di venire a capo anche della documentazione del Rabbit che e' vasta ma purtroppo non troppo chiara ed approfondita.Io in queste feste spero di riuscire a provare finalmente la comunicazione in RS232 (figli permettendo) ...Ciao Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 23 dicembre 2003 Segnala Share Inserita: 23 dicembre 2003 Io sto preparando L'HW degli out analogici ed i relativi driver, oltre al disaccoppiatore opto per gli ingressi encoders.Spero di aver pronto qualche cosa a fine gennaio, cmq sentiamoci periodicamente.PS per ifach: salutami IGORBuone Feste a Tutti Link al commento Condividi su altri siti More sharing options...
LazyBoy Inserita: 29 dicembre 2003 Segnala Share Inserita: 29 dicembre 2003 (modificato) Ciao a tutti,Sono un analista/programmatore software, ma con una passione sfrenata (anche se poco applicata, purtroppo) per l'elettronica digitale.Le mie prime esperienze con i microcontrollori sono state scolastiche, ma molto interessanti e pratiche, grazie ad un ottimo docente. Una basetta di programmazione con uno Z80 e' stata la mia scuola.Un amico mi ha di recente parlato dei microcontrollori della Rabbit e di questo progetto e il tutto mi ha subito entusiasmato. Ci stiamo apprestando ad ordinare il kit e, sebbene i nostri obiettivi iniziali siano leggermente diversi da quelli che vi proponete in questo progetto, credo si possa instaurare una buona collaborazione.In queste ferie ho gia' letto buona parte della documentazione scaricabile dal sito Rabbit, per cui spero di riuscire ad essere operativo appena il kit arrivera' nelle mie mani :-)A risentirci presto,Stefano Carboni Modificato: 29 dicembre 2003 da NULL Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 30 dicembre 2003 Segnala Share Inserita: 30 dicembre 2003 Una basetta di programmazione con uno Z80 e' stata la mia scuolaAllora ti do una bella notizia , li set di istruzioni del Rabbit e' derivato dallo Z80 !Anche io ho iniziato con questo processore , addirittura ho costruito in micro di NE , il primo quello in esadecimale!Se leggi il manuale d'uso del rabbit 3000 vedrai che ci sono molte analogie con lo z80.Anche io sono immerso nella lettura dei manuali , la gestione della memoria non e' una cosa semplicissima , ma per fortuna il dinamic C aiuta un bel po'Per i moderatori , potremmo aprire un "sottoforum" per il rabbit . cosi avremmo un punto di rifeimento dove depositare i risultati delle nostre peripezie .... potrebbe essere nella sezione ELETTRONICA.Coraggio Livio , vedi che non e' del tutto morto questo progetto!!... poi ora che so che e' il nipote dello Z80 , mi sembra di tornare alla mia giovinessa boia ve' Link al commento Condividi su altri siti More sharing options...
LazyBoy Inserita: 30 dicembre 2003 Segnala Share Inserita: 30 dicembre 2003 Se leggi il manuale d'uso del rabbit 3000 vedrai che ci sono molte analogie con lo z80.E' proprio questo che mi piace. Ed anche la programmazione in C e' un fattore che mi attrae.Ho notato anch'io che la gestione della memoria non e' molto semplice. Neppure la gestione della Flash e' semplicissima, sebbene la possibilita' di vederla come file system puo' semplificare le cose a seconda del tipo di applicazione.Appena arrivera' il kit cerchero' di fare qualche prova soprattutto in questo senso, visto che altri stanno gia' facendo prove di I/O.Un buon 2004 a tutti :-)Saluti,Stefano Carboni Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 30 dicembre 2003 Segnala Share Inserita: 30 dicembre 2003 Coraggio Livio , vedi che non e' del tutto morto questo progetto!!Io ci spero; se siamo in tanti potrebbo ottenere buoni risultati con minor faticaPer i moderatori , potremmo aprire un "sottoforum" per il rabbit ....Questo forum è specifico per rabbit, anche se è nato per un progetto on line indefinito, si è oramai stabilizzato, lo dice anche il nome del forum: "Rabbit".Sembra che il 2004 sia foriero di novità positive!LazyBoy ("lazzarone") potresti raccontare, brevemente, gli obbiettivi che ti proponi di realizzare con rabbit? Magari potremmo trovare qualche obbietivo comune e così potremmo risparmiare energie. Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 30 dicembre 2003 Segnala Share Inserita: 30 dicembre 2003 (modificato) Vi comunico che sono riuscito a gestire la seriale con modulo autocostruito.Nel codice che allego c'e' un esempio di gestione lampeggi + send seriale su porta B con convertitore autocostruito che allego come schema nell'area download + gestione antirimbalzi (Debounce).Spero che uploadi anche qualcun altro del codice ....Ciao a tutti /* IFACH Software - Calpe , Costa Blanca ------------------------------------- Program name : ProvaRS232.C Last Update : 30/Dec/2003 Language ... : Dynamic C SE Edit by .... : Claudio Rossi ... Rouge (I love when a software comes together !) Features ... : Test Uscite RCM3010 07/Sep/2003 Versione con Out funzionanti (Finalmente !) 30/Dec/2003 Prova Seriale */ //#use rcm3000.lib // Libreria da includere per gestire la seriale #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 MyBrdInit() { // 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) A PG1 Switch S2 (normally open Input Pulled-up on protoboard (PULSANTE 2) B 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 1 #define BINBUFSIZE 15 // Dimensione Rx Buffer RS232 Port B #define BOUTBUFSIZE 15 // Dimensione Tx Buffer RS232 Port B void 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; auto int Debounce; MyBrdInit(); // Inizializza il modulo serBopen(115200); // Setta Baudrate serBparity(PARAM_NOPARITY); // Parity None serBdatabits(PARAM_8BIT); // 8 Bit di Dati serBwrFlush(); // Svuota Buffer Trasmissione serBrdFlush(); // Svuota Buffer Ricezione sw1 = 0; Debounce = 1; // Pulsante di Debounce for(;;) { costate { if(!Debounce) { if (!BitRdPortI(PGDR, PULS2)) abort; // Controlla se PULS2 e' Premuto serBputs("IFACH Software - Calpe , Costa Blanca\n"); // Invia s sulla seriale B serBputs("Welcome to the Rabbit !\n"); // Invia s sulla seriale B Debounce = 1; // Attiva debounce } else // Se Debounce attivo { if (!BitRdPortI(PGDR, PULS2)) // Controlla pulsante rilasciato { Debounce = 0; } } } costate { if (BitRdPortI(PGDR, PULS1)) abort; // wait for switch PULS1 press waitfor(DelayMs(5)); // 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) } } } } Modificato: 30 dicembre 2003 da Gabriele Corrieri Link al commento Condividi su altri siti More sharing options...
LazyBoy Inserita: 31 dicembre 2003 Segnala Share Inserita: 31 dicembre 2003 LazyBoy ("lazzarone") potresti raccontare, brevemente, gli obbiettivi che ti proponi di realizzare con rabbit? Magari potremmo trovare qualche obbietivo comune e così potremmo risparmiare energie.L'idea e' quella di realizzare un sistema modulare di home automation.Lo so, in commercio ce ne sono tanti, ma a qualcuno manca qualcosa, altri costano un occhio nella testa.Inoltre, se si sceglie un sistema, si deve fare tutto con i pezzi forniti da quella casa.Facendo qualche conto ci siamo resi conto che, progettando un sistema del genere in casa, si risparmierebbe parecchio ed inoltre si potrebbe fare tutto quello che ci passa per la testa.L'obiettivo principale e' quindi progettare un sistema con il core del rabbit che consenta l'aggiunta semplice di schede I/O.Per aumentare le capacita' I/O del rabbit e vista la relativamente bassa velocita' di risposta necessaria in un sistema home, ho pensato di multiplexare gli I/O per aumentarli, visto che da un rapido calcolo eseguito i punti necessari avrebbero superato quelli forniti dal controllore.Direi che in questo progetto, la parte maggiore la dovra' fare il software perche', a parte l'utilizzo di qualche ADC o DAC, il resto sono parti elettronicamente semplici.Il tutto dovra' essere ovviamente progettato utilizzando componenti economici e facilmente reperibili.La ricerca e' gia' cominciata e alcuni punti li abbiamo gia' risoliti e/o decisi.L'applicare poi tutto questo a livello industriale e' sicuramente interessante, ma vista la non abbondante richiesta in questo campo nella nostra zona, e' un obbiettivo che dobbiamo ahime' posticipare :-)Il secondo obiettivo e' poi quello di interfacciare il sistema di gestione con un modem gsm o gprs per la gestione remota. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 31 dicembre 2003 Segnala Share Inserita: 31 dicembre 2003 Bel colpo Ifach, chiudi bene il 2003! Penso di sfruttare presto le tue routines per fare delle prove di comunicazione.Per LazyBoy.I tuoi obbiettivi coincidono in buona parte con lo scopo iniziale del progetto: realizzare un controllore per ambiente industriale.Un paio di appunti sulle tue ipotesi di soluzione. Si è vero che i tempi di risposta, richiesti della domotica ,sono più lunghi dei corrispettivi medi richiesti dall'automazione industriale, questo però non implica che la scelta di multiplexar gli I/O sia la migliore.Multiplexare significa avere comunque un bus parallelo; un bus parallelo diminuisce l'immunità ai disturbi. Il sistema non opera in uno stabilimento dove sono presenti inverter, motori ed altri generatori di disturbi, ma anche in casa non si scherza: basta accendere un macinacaffè e rischi di mandare in blcco il controllore.Io ti consiglerei di pensare seriamente all'uso di bus seriale come I2C e/o SPI. Tra l'altro è l'espansione di I/O che sto implementando: parto con i D/A C e proseguo con A/D C e digitali. In commercio esistono numerosi dispositivi che convertono I2C eSPI in linee di In Out. Sto provando Philips, ma ce ne sono anche prodotti da Motorola, Maxim, ST, etc.Tra l'altro i bus di espansione della Siemens S7-200 e 300 sono di tipo seriale proprio per aumentare l'immunità.Prova a pensarci sopra e facci sapere, potremmo sviluppare assieme l'I/O.Felice 2004 a tutti Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 31 dicembre 2003 Segnala Share Inserita: 31 dicembre 2003 Io ti consiglerei di pensare seriamente all'uso di bus seriale come I2C e/o SPIAggiungerei anche la RS485 per poter remotare in giro dei moduli intelligenti con magari a bordo dei micro piu' a buon mercato quali i PIC , avendo il vantaggio di andare fino a 2Km con solo 2 fili twistati.Ciao Link al commento Condividi su altri siti More sharing options...
LazyBoy Inserita: 31 dicembre 2003 Segnala Share Inserita: 31 dicembre 2003 Io ti consiglerei di pensare seriamente all'uso di bus seriale come I2C e/o SPI. Tra l'altro è l'espansione di I/O che sto implementando: parto con i D/A C e proseguo con A/D C e digitali. In commercio esistono numerosi dispositivi che convertono I2C eSPI in linee di In Out. Sto provando Philips, ma ce ne sono anche prodotti da Motorola, Maxim, ST, etc.Ho pensato anch'io ai disturbi, ma non avendo ancora il kit sottomano (quanto vorrei che il tempo 0 non fosse solo teorico) non ho potuto fare alcuna prova.L'I2C non l'ho mai usato e nonostante ci abbia pensato mi prefiggevo di fare qualche prova sul campo sulle prestazioni di velocita'.comunque sono aperto ad ogni soluzione e confronto, vista anche la mia poca esperienza in campo elettronico.Appena arrivera' il kit vorrei fare (come gia' sta facendo ifach) qualche prova con il software, per stabilire limiti e velocita' operative. A quel punto si dovra' combinare con l'hardware per ottenere prestazioni accettabili.Per quanto riguarda il multiplexer credo che i disturbi si potrebbero limitare con qualche accorgimento, ma mi riservo di fare qualche prova sul campo :-)Il bus I2C lo sfrutterei sicuramente per una periferica opzionale ma quasi indispensabile in un sistema di domotica serio: un tastierino/display per la modifica delle opzioni del sistema e il controllo degli stati, come anche la segnalazione di allarmi. In quel caso userei un PIC (o un altro Rabbit, tanto per non cambiare sistema di sviluppo... magari un 3110 che e' abbastanza economico) per gestire il tutto, collegandolo al Rabbit di controllo attraverso bus I2C o un'altra delle seriali che ha a disposizione.Per quanto riguarda il display ci sono tante opzioni: testo, grafico, grafico a colori. C'e' solo da scegliere. Ho trovato dei bellissimi display a colori che, compresi di controllore, hanno un costo abbordabile.Diciamo che l'inizio del nuovo anno (e l'arrivo tardivo della mia tredicesima) daranno sfogo allo sperimentatore elettronico che giaceva in letargo nel mio cervellino :-) Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 31 dicembre 2003 Segnala Share Inserita: 31 dicembre 2003 Sul medesimo bus I2C o SPI puoi mettere molte periferiche. Per la velocità ne hai da vendere. Con un Pic 16F876 acquisisco 8 canali A/D ad 1 ms. senza stress. Link al commento Condividi su altri siti More sharing options...
ELMO Inserita: 2 gennaio 2004 Segnala Share Inserita: 2 gennaio 2004 Salve ragazzimi sono appena letto tutta la lunga discussione e dovrei dire che è molto interessante.Ho solo un dubbio come mai sono stati inseriti due progetti quasi identici (quello di Dario e questo "Rabbit") e con anche gli stessi obbiettivi o simili?Anche perchè unire tutti gli sforzi dei singoli si può ottenere un prodotto veramente GRANDE. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 2 gennaio 2004 Segnala Share Inserita: 2 gennaio 2004 Non sono due progetti quasi identici, anzi hanno molte differenze; inoltre i tempi sono molto diversi: questo progetto è iniziato nel primo trimestre dello scorso anno poi, verso la fine dell'anno è arrivato il progetto di Dario. Il progetto di Dario propone, come scopo primario, l'acquisizione di conoscenze per sviluppare e progettare con i microprocessori, infatti ha realizzato una scheda con funzioni di sistema di sviluppo.Il progetto con Rabbit si basa sull'adozione di un HW consolidato con caratteristiche ben precise, su del FW consolidato e preciso. Su queste basi si intende sviluppare un sistema di controllo, costruendo le periferiche di campo e sviluppando il SW necessario.E' altresì evidente che ci sono punti di ricopertura, come ci sono punti di ricopertura con il progetto SCADA; ebbene queste ricoperture si cercherà di sfruttarle al meglio.Siamo sempre molto contenti se vengono avanzate proposte concrete. Link al commento Condividi su altri siti More sharing options...
ELMO Inserita: 2 gennaio 2004 Segnala Share Inserita: 2 gennaio 2004 (modificato) Grazie Livio per la delucidazionevedo molto interessante ambedue i progetti e...però vorrei a provare a darvi una mano con il rabbit (anche se non ho più preso in mano il C da molto tempo).Per reperirlo (siccome ami serve la fattura) posso fare riferimento ad AreaSX? Modificato: 2 gennaio 2004 da ELMO Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 2 gennaio 2004 Segnala Share Inserita: 2 gennaio 2004 Io l'ho acquistato da Esprinet (il sito lo trovi sul webb), la persona di riferimento è Michele Conti che è il product manager di Rabbit (info di Luglio 03). A suo tempo avevamo negoziato un prezzo scontato per gli iscritti a PLCForum. Puoi acquistare anche da areasx: le info che ho la danno come società seria. Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 2 gennaio 2004 Segnala Share Inserita: 2 gennaio 2004 siccome ami serve la fatturaLa fattura te la fanno tutti , il vantaggio principale di AreaSx e' che in 2-3 giorni hai in mano il tutto e che vende anche a privati , mentre Comprel vende solo a societa' , se devi acquistare come privato ti gira ad una consociata con naturalmente prezzi differenti ...Considera che AreaSX e' leggermente piu' cara di Comprel.Ciao Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 2 gennaio 2004 Segnala Share Inserita: 2 gennaio 2004 Eccovi l'esempio con gestione in ricezione della seriale con time-out se non vengono processati i caratteri per piu' di 2 secondi./* IFACH Software - Calpe , Costa Blanca ------------------------------------- Program name : ProvaRS232.C Last Update : 02/Jan/2004 Language ... : Dynamic C SE Edit by .... : Claudio Rossi ... Rouge (I love when a software comes together !) Features ... : Test Uscite RCM3010 07/Sep/2003 Versione con Out funzionanti (Finalmente !) 30/Dec/2003 Prova Seriale 02/Jan/2004 Versione con capito il Fronte con i costate + gestita ricezione seriale */ //#use rcm3000.lib // Libreria da includere per gestire la seriale #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 MyBrdInit() { // 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) A PG1 Switch S2 (normally open Input Pulled-up on protoboard (PULSANTE 2) B 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 1 #define BINBUFSIZE 15 // Dimensione Rx Buffer RS232 Port B #define BOUTBUFSIZE 15 // Dimensione Tx Buffer RS232 Port B void 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; auto int nEntrambi; auto char Buff[80]; auto unsigned long int timer; auto int OldNChars; MyBrdInit(); // Inizializza il modulo serBopen(115200); // Setta Baudrate serBparity(PARAM_NOPARITY); // Parity None serBdatabits(PARAM_8BIT); // 8 Bit di Dati serBwrFlush(); // Svuota Buffer Trasmissione serBrdFlush(); // Svuota Buffer Ricezione sw1 = 0; nEntrambi = 0; timer = 0; OldNChars = 0; for(;;) // Main Loop { // Premendo il Puls1 viene fatto un toggle sul Led3 costate { if(!BitRdPortI(PGDR, PULS1)) abort; // Se ho la condizione di attivazione annullo perche' non e' un fronte waitfor(DelayMs(5)); // Aspetto il fronte entro 5ms if(!BitRdPortI(PGDR, PULS1)) // Se ho la condizione e' un fronte ! { sw1=!sw1; // Inverte lo stato dell'uscita BitWrPortI(PGDR, &PGDRShadow, sw1, LED3); // Scrive l'uscita } } // Premendo il Puls2 viene inviata una stringa con la seriale costate { if(BitRdPortI(PGDR, PULS1) &! BitRdPortI(PGDR, PULS2)) abort; // Se ho la condizione di attivazione annullo perche' non e' un fronte waitfor(DelayMs(5)); // Aspetto il fronte entro 5ms if(BitRdPortI(PGDR, PULS1) &! BitRdPortI(PGDR, PULS2)) // Se ho la condizione e' un fronte ! { serBputs("IFACH Software - Calpe , Costa Blanca\n"); // Invia s sulla seriale B serBputs("Welcome to the Rabbit !\n"); // Invia s sulla seriale B } } // Lampeggio 50ms On / 50ms Off costate { wfd { // 50 ms on/off flashled[0](LED1,50,50); // Fa lampeggiare il LED1 (PG6) } } // Lampeggio 200ms On / 200ms Off costate { wfd { // 200 ms on/200 ms off flashled[1](LED2,200,200); // Fa lampeggiare il LED2 (PG7) } } // Invia messaggio se premuti contemporaneamente Puls1 e Puls2 costate { if(!BitRdPortI(PGDR, PULS1) &! BitRdPortI(PGDR, PULS2)) abort; // Se ho la condizione di attivazione annullo waitfor(DelayMs(5)); // Se Non avevo la condizione di attivazione ma arriva entro 5ms allora ho un fornte di salita ! if(!BitRdPortI(PGDR, PULS1) &! BitRdPortI(PGDR, PULS2)) // Se ho la condizione { sprintf(Buff,"Premuti Entrambi [%d]\n",++nEntrambi); // Preparo la stringa da inviare serBputs(Buff); // Invia s sulla seriale B } } // Gestione seriale con time-out costate { if(timer == 0) // Se ci sono caratteri in attesa nel Buffer { if(serBrdUsed() > OldNChars) // Se e' aumentato il numero di dati Resetta il time-out { OldNChars = serBrdUsed(); timer = MS_TIMER; // get current time in milliseconds } else { OldNChars = serBrdUsed(); if(!OldNChars) timer = 0; } } if(serBrdUsed()) { if(MS_TIMER > (timer + 2000)) // Se time-out a 2 sec { timer = 0; OldNChars = 0; serBrdFlush(); // Svuota Buffer Ricezione serBputs("\nTime-Out RS232 Port B !"); } } if(serBrdUsed() > 3) // Se ci sono > di 3 caratteri in attesa nel Buffer { if(!serBread(Buff,4,200)) // Se c'e' errore nella lettura { serBputs("\nErrore Lettura Buffer !"); } else { serBputs("\nBuffer Letto = "); Buff[4] = '\0'; // Termina il Buffer serBputs(Buff); } serBrdFlush(); // Svuota Buffer Ricezione } } } }Ciao a tutti Link al commento Condividi su altri siti More sharing options...
ELMO Inserita: 3 gennaio 2004 Segnala Share Inserita: 3 gennaio 2004 (modificato) Grazie per l'informazione Livio e IfachPer Comprel mi sono registrato ma per fare l'ordine mi manca il codice cliente (te lo forniscono tramite e-mail la prima volta?)Volevo chiedere se con questo tool di sviluppo si possono poi programmare anche le cpu più piccole(o piu grandi) o solo quelle della serie 3000?Io avrei intenzione di utilizzarlo per controllare temperatura e umidità in processi alimentari (quindi anche utilizzare diversi I/O ) per poi collegarli in una rete tra loro (RS485) per acquisire i vari dati di lavoro da PC (progetto SCADA) Modificato: 3 gennaio 2004 da ELMO Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 3 gennaio 2004 Segnala Share Inserita: 3 gennaio 2004 Volevo chiedere se con questo tool di sviluppo si possono poi programmare anche le cpu più piccole(o piu grandi) o solo quelle della serie 3000?C'e' la versione Premiere che programma tutti i moduli , anche se i kit di sviluppo sono dedicati al core che scegli.Inoltre devi considerare che ci sono Cavi di programmazione differenti per la serie 2000 , 3000 e 3400.Il modulo che stiamo usando per le prove e' l'RCM3010 che e' lo stesso fornito con il kit.Ciao 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