Vai al contenuto
PLC Forum


Curiosità Su Arduino


roberto8303

Messaggi consigliati


  • Risposte 57
  • Created
  • Ultima risposta

Top Posters In This Topic

  • walterword

    16

  • Livio Orsini

    15

  • roberto8303

    12

  • Ctec

    7

Ricordo, fra l'altro, che è possibile caricare sulle schede STM32F4 Discovery il MicroFramework 4.2 - 4.3 della Microsoft per programmare la board in C# tramite Visual Studio.

oVVoVe!

Scusa ma mi è venuta spontanea! Non è il voler dare adosso a microsoft sempre e comunque ma conoscendo la linea aziendale probabilmente

cercheranno di imporre una soluzione personale complicatissima e totalmente incompatibile con il resto del mondo. Spero tanto che microsoft rimanga fuori dal mondo embedded.

Link al commento
Condividi su altri siti

si lo spero anche io .....secondo me una soluzione embedded con linux-ubuntu precaricato e' quella della udoo che tra l'altro wrappa anche un arduino due indipendente sulla stessa scheda .....le schede con .net a bordo sono limitata in memoria ram ma possono far girare qualcosa di gia testato , piu o meno , in ambiente ,net .i tempi di risposta poi meglio lasciar perdere , non sono sicuramente idonee per un discorso real time ....

Link al commento
Condividi su altri siti

Mah, e invece il codice dell'MF e' Disponibile su codeplex.

Si, i tempi non sono il massimo...la latenza e' Vergognosa. Però, Ragazzi per prototipare e'. Una cannonata. Aggiungete anche il fatto che per caricare l'hex e debbuggare e' veramente Una sciocchezza!

E il debbugger di Arduino?

Se, invece, e' un discorso di filosofia, va bene Modificato: da dkmorb

Link al commento
Condividi su altri siti

Dici bene dkmorb è una questione di flosofia. Ammetto di aver giudicato senza conoscere e andrò a vedere quello che hai citato

Ti racconto solo l'ultima in cui mi sono imbattuto poco tmepo fa leggendo un libro su protocolli SSL e TLS. nel 1994 Netscape Communications lancia SSL versione 2.0 La cosa prende piede e nel 1995 Microsoft forte della sua posizione dominante decide di mettere in campo un protocollo tutto suo per internet explorer e lo chiama PCT (Private Communicatio Technology) E qui viene il bello: PCT è concettualmente e tecnicamente simile a SSL 2.0 e ha un formato compatibile. PCT è rimasto confinato all'intenro di alcuni prodotti Microsoft per SSL sappiamo com'è andata

Hanno tentato di imporre la loro versione (del tutto simile all'esistente) anzichè sostenere lo sviluppo di SSL2.0.

E anche la penultima:

Aggiornamento Win8.1 da Win8 parte lavora qualche ora (giuro qualche ora) poi esce messaggio impossibile completare l'aggiornamento ripristino la configurazione precedente (qualche ora di lavoro) alla fine riavvio rifaccio l'aggiornamento e stavolta funziona, Non ho la certezza ma sospetto che la procedura abbia prima aggiornato alcuni files e solo dopo il riavvio abbia potuto completare l'operazioen di aggiornamento. Da un sistema operativo evoluto mi aspetto che, se necessario, suddivida in fasi l'aggiornamento e mi informi con messaggi chiari di cosa succede

Non un qualcosa di oscuro e interminabile...ci è voluto un pomeriggio per riavere il controllo del pc.

Modificato: da accacca
Link al commento
Condividi su altri siti

io uso ancora xp e windows7 pro , non cambio per ora

Sto giocando un po con linux ubuntu e devo dire che e' proprio una bella cosa , installi di tutto , driver stampante che con win7 faccio fatica a caricare e configurare (stampante HP che non comprero' mai piu') , in ubuntu il tempo di dire che e' connessa e sei gia in stampa .

Credo valga proprio la pena iniziare a considerare linux e u suoi derivati

Link al commento
Condividi su altri siti

Però stavamo parlando di schede embedded...accacca...non vale! Stiamo derivando...

Ho postato anche il link per CocoxIde che usa un fork del gcc per compilare per STM32 ed è anche gratuito;-)

Non volevo aizzare flame sul solito argomento "questo sistema operativo è meglio di quello..." o "la Microsoft è la madre di tutti i mali...". E' chiaro che ognuno, se può, usa quello che vuole!

Però le tue affermazioni sembrano affermazioni un po' troppo populiste. Se ti riporto un numero N di bug importanti di Linux, cambi SO?

Negli anni, ho dedicato troppo tempo a queste discussioni infruttuose.

Puoi insultarmi liberamente, ma non scrivo più se non si parla di Arduino et similia.

Link al commento
Condividi su altri siti

io uso ancora xp e windows7 pro , non cambio per ora

E fai molto bene! :smile: Io sono arrivato alla conclusione che è meglio non utilizzare le versioni pari di Windows ;) quindi attenderò eventualmente Win9 consolidato.

Complimenti per il tuo 30, Che esame era?

Se ti riporto un numero N di bug importanti di Linux, cambi SO?

Anche Linux ha i suoi bei problemi, però è gratuito o quasi ed a caval donato non si guarda in bocca. :smile:

Quello che infastidisce di MS è l'esagerata protervia, anche se alcune sentenze della magistratura USA hanno un po' calmierato certi eccessi, non perdono occasione per rendersi antipatici.

Piuttosto chi sa se Roberto è riuscito ad ottenere il suo temporizzatore?

Link al commento
Condividi su altri siti

sistemi operativi =30 :)

Linux ha le pecche come windows e mac però la differenza principale e' che se studi e prendi mano con linux puoi creare un OS ad hoc , mirato per una tale applicazione , con windows e mac e' tutto compilato e non puoi fare nulla , ma solo accettare

C'e' una bella differenza tra essere obbligati e tacere ed essere obbligati ma poer parlare e cambiare le cose ;)

Link al commento
Condividi su altri siti

int cnt1 = 10;

void setup() {

noInterrupts(); // disable all interrupts

TCCR1A = 0;

TCCR1B = 0;

TCNT1 = 64911; // preload timer

TCCR1B |= (1 << CS12); // 256 prescaler

TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt

interrupts(); // enable all interrupts

//...........................................................................................

Serial.begin(9600);

}

ISR(TIMER1_OVF_vect) // interrupt service routine

{

TCNT1 = 64911; // preload timer per interrupts ogni 10 ms

if (cnt1 > 0) {

cnt1--; // totalizzatore per 0.5"

}

else {

digitalWrite(13, digitalRead(13) ^ 1); // uscita temporizzata

cnt1 = 50; //trascorso 1", ricarico il contaore

}

}

trovato il problema l uscita 13 non era definita con pinMode(13,OUTPUT);

e non vedevo sull oscilloscopio l onda quadra sul pin13 ora tutto funziona.

E per oggi basta cosi, Buon Natale e buone feste a tutti

Modificato: da roberto8303
Link al commento
Condividi su altri siti

int cnt1 = 10;
int pulsAnalog=A0;
int pulsAnalogValue=0;
unsigned long contatore;
int fittizio;
int tempo;
void setup() {
tempo=contatore;
temporale=contatore;
pinMode(13,OUTPUT);
pinMode(9,OUTPUT);
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 64886; // preload timer
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
//...........................................................................................
Serial.begin(115200);
}
ISR(TIMER1_OVF_vect) { // interrupt service routine
TCNT1 = 64911; // preload timer per interrupts ogni 10 ms
digitalWrite(13, digitalRead(13)^ HIGH); // uscita temporizzata
if (cnt1 > 0) {
cnt1--; // totalizzatore per 0.1"
}
else {
cnt1 =10; //trascorso 1", ricarico il contaore
pulsAnalogValue = digitalRead(pulsAnalog); }
unsigned long int segnale=digitalRead(13);
if(segnale==1){
contatore++;}
}
void loop(){
Serial.println(contatore/50);//stampa ogni secondo//
tempo=contatore;
if (tempo==temporale+1){
digitalWrite(9,HIGH);}
if (tempo==temporale+2){
digitalWrite(9,LOW);
temporale=contatore;}}
Ho modificato il programma di Livio, aggiungendo nel loop un ritardo+1 al contatore di 10ms di base. Quindi un uscita 13 con onda quadra 10ms on/off e un uscita 9 con onda quadra di 10ms+1 on e 10ms+2 off.
Perchè nelle prove ho un onda quadra dell uscita 9 di 20ms on/off?nella foto il canale A è l uscita 13, e il canale B è la forma d onda del pin 9 quello nel loop.
ancora auguri di Buon Natale
Modificato: da roberto8303
Link al commento
Condividi su altri siti

unsigned long int segnale=digitalRead(13);

if(segnale==1){
  contatore++;}
}

Ti manca un "else" perchè se è alto conti, ma se è basso che fai?

Link al commento
Condividi su altri siti

nulla se è basso il contatore non incrementa, se è uno il contatore sale ogni 10ms e cosi funziona. pero non riesco a capire nel loop mi nell uguaglianza, se entrambi i valori sono uguale al contatore la sola differenza è di +1 quindi mi aspettavo un tempo di 1ms, invece mi sa che è di 11ms cioe 10+1ms, ma con il mio oscilloscopio non riesco a vederlo provo ad aumentare il +1 e vedere cosa ottengo...

Link al commento
Condividi su altri siti

contatore -> long

tempo -> int

quindi qunado fai tempo = contatore fai un casting tagliando tutto una parte della variabile contatore, cosa che sin deve fare.

Poi non capisco perchè devi usare una long per leggere un piedino, basta e avanza una int.

Dichiara le variabili correttamente in testa al programma così che siano globali, poi unifica le variabili e riprova.

La via del software è come la via della spada: lunga, difficile e piena di imprevisti :smile:

Link al commento
Condividi su altri siti

questa era facile , se non ci arrvia e' meglio che cambia mestiere ;)

Non fare anche tu come i tutor ed i professori universitari che quando scrivi loro chiedendo una cosa , da disperato , loro rispondono con altre domande spesso fuori luogo :D

La via della spada , per noi aikidoki della katana ,è praticamente la ricerca continua ed infinita ei nostri limiti , cosa che noi occidentali non capiremo mai

Modificato: da walterword
Link al commento
Condividi su altri siti

cosa che noi occidentali non capiremo mai

Credi? ma se tu stesso, da che ti conosco, sei sempre alla ricerca dei tuoi limiti.

(A volte, però, superi i limiti degli altri. :P:lol: )

Link al commento
Condividi su altri siti

purtroppo supero i miei limiti che poi invadono quelli degli altri .Ora che sono cintura marrone un po meno ....e quando prenderò la nera ancora meno

Link al commento
Condividi su altri siti

questa era facile , se non ci arrvia e' meglio che cambia mestiere ;)

un mestiere ce l ho gia e non è questo, se proprio non "volessi" arrivare cosa al quanto difficile conoscendomi...posso sempre cambiare forum... :thumb_yello::lol::P

Modificato: da roberto8303
Link al commento
Condividi su altri siti

Roberto non essere suscettibile, dovresti saberlo che a noi piace scherzare anche quando si fa sul serio.

Poi Walter fa sto mestiere da almeno 20 anni e ogni tanto guarda i novellini con un po' di sufficienza, capita a tutti. :smile:

Link al commento
Condividi su altri siti

si lo so Livio, è che non ho potuto dedicarci molto tempo in questi giorni di festa

era una battuta non te la prendere

;)

si anche la mia walter :thumb_yello:

Comunque voglio esaminare un problema alla volta, ho semplificato il programma

int cnt1 = 20;
void setup() {
pinMode(13,OUTPUT);
pinMode(9,OUTPUT);
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 64911; // preload timer
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
//...........................................................................................
Serial.begin(115200);
}
ISR(TIMER1_OVF_vect) { // interrupt service routine
TCNT1 = 64911; // preload timer per interrupts ogni 10 ms
digitalWrite(13, digitalRead(13)^ HIGH); // uscita temporizzata
if (cnt1 > 0) {
cnt1--; // totalizzatore per 0.1"
}
else {
cnt1 =20; //trascorso 1", ricarico il contaore
}
if (cnt1>10 && cnt1 <20){
digitalWrite(9,HIGH);}
if (cnt1>0 && cnt1<10){
digitalWrite(9,LOW);}
}
void loop(){
Serial.println(cnt1);
}

in questo caso ho sul canale pin 13 un onda quadra di 10ms e sul pin 9 un onda quadra di 100ms. Ho il cont1 che va da 20 a 0 per poi ripartire da 20 a0 all infinito.con un interrupt di 10ms, la durata di una sola unità cont1 è quindi di 10ms? o di 1 ms?e perche?sbaglio qualcosa? aspetto i vostri pareri :smile:

Link al commento
Condividi su altri siti

digitalWrite(13, digitalRead(13) ^ 1); // uscita temporizzata

Questa istruzione legge lo stato del pin13 e lo nega con l'istruzione "^1".

Il tic del counter, se ricordo bene, dovrebbe essere ad 1ms, dovrei fare i conti e non ho voglia, fai prima a vederlo direttamente con l'oscilloscopio.

Link al commento
Condividi su altri siti

si e con l oscilloscopio ho il pin13 che dura 10ms e il cnt1 da 0-10 100ms on e 10-20 100ms off :blink: è questo che non mi spiego. se il cnt1 decrementa di 1, perchè da10a 20 mi ritrovo la durata del pin9 di 100ms? e non di 10ms come mi aspettavo...

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...