Arduino: mi avete fatto venir voglia

Il 24/09/2010 15:01, Claudio_F ha scritto:

Basta una macchina a stati finiti.

O più semplicemente in un loop aggiorni la macchina in base agli ingressi e allo stato delle transizioni, poi aggiorni le transizioni stesse (eventualmente nelle isr, ma non ho seguito tutto il thread).

A meno di cose particolarissime non credo proprio siano necessari! Basta dell'aritmetica con interi.

Marco

Reply to
Marco Trapanese
Loading thread data ...

Claudio_F:

Non ti seguo.

Non ti basta un banale flag settato dalla sola routine di interrupt ogni volta che si aggancia allo zero-cross?

Gli ingressi (due tasti) possono benissimo essere controllati ogni 10 ms.

Cosa sarebbero?

Esattamente. Il main() esegue il cambio luminosità e poi si ferma finché non trova il flag dei 10 ms settato.

Il solo problema che ci potrebbe essere è che il main() non riesca ad aggiornare tutte le luminosità entro 10 ms, nel tempo che gli rimane tolta l'esecuzione dell'interrupt. A quel punto o abbassi la risoluzione (scendi da 100 a 64 livelli, 32 potrebbero essere già pochini ma forse no), oppure aggiorni la luminosità ogni 20 o 30 ms.

Cosa sia secondo te un linguaggio ad alto livello, scusami, non conta nulla. Per "linguaggio ad alto livello" c'è una definizione ben precisa e non ha senso inventarsene altre.

Soprattutto se uno se la complica usando processori con architetture balenghe o, per meglio dire, ottimali per applicazioni molto più semplici, tipo quelle per cui è sufficiente il Peripheral Interface Controller di un processore vero e proprio. :p

--
Ma non si può intendere se prima non s'impara a intender la lingua
Reply to
F. Bertolazzi

Marco Trapanese:

Ripeto: il solo stato è il contatore che viene incrementato dalla sola routine di interrupt ogni 10/(numero livelli luminosità) ms.

Aridaje. Ingressi non ce n'è, a parte due tasti morti di sonno e lo zero-cross su cui si aggancia la routine di interrupt.

No, nel main().

Avanza! Basta usare, per la luminosità, un int a 16 bit di cui solo il byte alto viene utilizzato dalla routine di interrupt. Una sottrazione a 16 bit per ogni canale ogni 10-20 ms. Che sarà mai?

--
Ma non si può intendere se prima non s'impara a intender la lingua
Reply to
F. Bertolazzi

F. Bertolazzi ha scritto:

i

Naturalmente si

I diversi scenari necessari all'OP

sa e

Trovo due definizioni, una, la piu' antica, definisce ad alto livello=20 tutto cio' che non e' linguaggio macchina binario (e in senso stretto=20 anche l'assembly sarebbe gia' un primo esempio di linguaggio ad alto=20 livello, benche' operante una semplice traduzione 1:1 tra mnemonico e=20 codice macchina). L'altra, piu' recente, definisce di alto livello tutti i linguaggi=20 orientati fortemente all'utente/problema/astrazione, e di basso livello=20 quelli orientati alla macchina/efficienza, in questa seconda definizione =

il C viene "degradato" a basso livello, pur essendo di livello molto=20 elevato rispetto alla prima definizione. Quindi se vogliamo parlare di "basso, alto, altissimo levissimo e=20 purissimo", oppure di "macchina, basso, alto", e' solo questione di...=20 punto di riferimento.

Claudio_F

Reply to
Claudio_F

Claudio_F:

Meno che banale: incrementi il secondo indice (il primo indica quale faro) della matrice delle luminosità.

Dove?

La definizione è una sola: allocazione automatica o meno delle variabili.

E' la stessa cosa: l'allocazione automatica delle variabili è estremamente comoda, ma abbastanza poco efficiente perché implica almeno un doppio salto (nei P-code che non usano una symbol table, per gli interpretati puri c'è anche da scandire quella) per il recupero del valore.

Quando poi parte il garbage collector non solo ti si ferma il programma, ma in momenti e per tempi non prevedibili.

Già, a parte gli interrupt di sistema che sballano le temporizzazioni, questo è l'altro grosso problema per chi si incaponisse a voler gestire PWM o triac con VB sulla parallela.

--
Ma non si può intendere se prima non s'impara a intender la lingua
Reply to
F. Bertolazzi

Da qualsiasi ricerca con le parole "definizione linguaggio alto/basso livello", saltano anche fuori descrizioni ambigue del tipo il C e' il linguaggio di livello piu' alto tra quelli a basso livello.

i.

Mi sembra appunto una definizione "recente", che degrada a rango di basso livello tutti quei linguaggi, adatti alla programmazione di sistema, che fino ad una ventina di anni fa erano praticamente l'unico alto livello esistente (rispetto all'assembly). E l' "altissimo livello" (java, python, e mettiamoci anche i piu' vecchi lisp, prolog ecc) prende il posto del vecchio alto. In tal caso siamo d'accordo :)

PWM

Il basic non l'ho mai inquadrato bene, non e' mai stato adatto alla programmazione di sistema, forse era un tentativo abbozzato di "altissimo livello" (per l'idea e l'epoca in cui e' nato)... che ha raggiunto "finalmente" l'apice (che brutta fine...) nel VB...

ciao Claudio_F

Reply to
Claudio_F

Claudio_F:

Francamente ricordo poco o nulla di quanto ho studiato, ma mi pare che Fortran (il babbo del Basic) non ci rientri, Algol (il babbo di tutti gli altri esclusi LISP, Eiffel e Prolog, infatti a Pisa si usava l'Algol W, dove W sta per Wirth...) sì.

Mah, quella dell'"altissimo" mi pare una definizione arbitraria. Se per questo intendiamo "a oggetti" ok. Se ben ricordo, tra l'altro, fu proprio il LISP ad introdurre il garbage collector.

Beh, lo dice la parola stessa: Beginner's All-purpose Symbolic Instruction Code. Insomma, Fortran + garbage collector.

Non ci sputerei sopra: dopo un anno passato a studiare i linguaggi più astrusi, il professore terminò il corso di linguaggi di programmazione dicendo che, dopo l'introduzione di Fortran e Algol, la sola cosa che ha migliorato la produttività dei programmatori è stata l'introduzione delle IDE, di cui quella di VB è la migliore.

--
Ma non si può intendere se prima non s'impara a intender la lingua
Reply to
F. Bertolazzi

Il giorno Mon, 27 Sep 2010 12:17:07 +0200, "F. Bertolazzi" ha scritto:

Era quella l'idea, le cose che doveva fare anche complesse per quei tempi.

formatting link

Una delle prime versioni del Basic fu implementata da Bill Gates e soci.

formatting link

Il VB6 con la sua IDE è ancora oggi notevole, lo dimostra il fatto che nonostante il monopolista abbia imposto .NET, c'è ancora molta gente che lo usa (il sottoscritto ad esempio) e qualcuno che ancora lo impara.

E il .NET con il framework e i suoi casini imho non ha migliorato di molto le cose, tanto che per fare cose non eccessivamente complesse va benissimo Python, che tra l'altro è nativamente multipiattaforma.

Poi Py ha il vantaggio che non si deve dichiarare quasi niente :-P

-- ciao Stefano

Reply to
SB

Claudio_F:

Io prenderei per buona la definizione di Kernighan (o era Ritchie?): Il C è solo un asembly strutturato e portabile.

Stavo cercando di confermare la paternità della frase (credo proprio non sia di nessuno dei due) quando mi sono imbattuto in questa:"C just shoots us in the foot if we goof; C++ is a bit meaner: it also stabs us in the back when we don't pay attention for a moment". La trovo splendida, come "Real men can program FORTRAN in any language".

--
Ma non si può intendere se prima non s'impara a intender la lingua
Reply to
F. Bertolazzi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.