Show Posts
Pages: 1 ... 140 141 [142] 143 144 ... 187
2116  International / Generale / Re: Interrupt Via Software on: October 01, 2011, 08:35:42 am
Quote
DOMANDA:
Nell'ATMEGA 328P c'è una distinsione fra modo utente e modo sistema?
Ossia dagli sketch "normali" posso fare quello che mi pare ,od ho bisogno appunto di passare
in modo sistema grazie ad un interrupt ?

Cioè dici protect mode e NON protect mode, non no c'è e quindi no kernel space, questa è prerogativa dei microprocessori.

Poi non c'è MPIC (masquerable ecc..) ci sarà su ARDUINO 2 che monta un ARM cortex C3.
Non c'è DMAC.

Insomma è microcontrollere non un microprocessore.

@LEO
Quote
Ad esempio, sui vecchi x86 mi ricordo che si usava la chiamata all'interrupt $21 per l'accesso al disco.

Era un interrupt software del dos, un servizio cioè.

Ciao.

ps: hot topic
2117  International / Generale / Re: Interrupt Via Software on: October 01, 2011, 08:24:08 am
Quote
Elenca mini RTOS che, specifici oppure no, girano anche su Arduino.

Mi hai tolto la parola dalla tastiera (bocca). smiley

Quote
secondo me agisci suli registri disattivando tutti gli interrupt
con sei() e cli() abiliti e disabiliti globalmente gli interrupt, ma nell doc di avr-libc mi pare consiglino di usare altre macro per proteggere
porzioni di codice non interrompibile.

Mi interessa molto capire se ho interpretato bene ciò che c'è scritto nel datasheet, cioè posso impostare il PD2 come output e abilitare l'interrupt su questo pin, e poi per saltare alla routine mi basta impostare il PD2 alto o basso a seconda di come è impostato. La stessa cosa con i PINCHANGED, cioè ogni volta che vogli saltare alla routine, da software mi basta cambiare lo stato di un pin.

Se ho capito bene allora la cosa è fattibile giocandosi però un pin.

Ciao.
2118  International / Generale / Re: Interrupt Via Software on: October 01, 2011, 06:51:52 am
A pagina 79 nel datasheet del ATmega168 c'è scritto questo:
The External Interrupts are triggered by the INT0 and INT1 pins or any of the PCINT23..0 pins.
Observe that, if enabled, the interrupts will trigger even if the INT0 and INT1 or PCINT23..0 pins
are configured as outputs. This feature provides a way of generating a software interrupt.

Vedi se pui approfondire, perchè io non sono sicuro aver capito.

Il problema che i vettori sono predefiniti e aggiungere un nuovo vettore software non credo si possa fare. Se c'è modo di scatenare un interrupt hardware via software allora potresti creare un registro un vettore e tutto ciò che serve per gestire degli interrupt software, ma questo lo devi creare tu ed il micro non ti fornisce alcuno aiuto.

L'argomento è interessante, mi piacerebbe leggere la tesi.

Ciao.
2119  International / Generale / Re: Interrupt interrompibili? on: October 01, 2011, 06:25:04 am
Quote
Mmmmmm, a quanto pare non mi era granché chiaro il funzionamento degli interrupt... Qual è la differenza fra i pin INT7:0 e i pin PCINT23:0? Inoltre, allora, l'arduino mega ha molti più interrupt di quelli gestibili con la funzione attachInterrupt, giusto? Se si, perché ne hanno previsti solo 6?

Faccio notare che janos si riferisce ad arduino MEGA, quindi andrebbe consultato il datasheet del 2560/2561/1281 dipende quale Arduino Mega hai.

i micro montati sulle mega hanno più porte (non ricordo quante). Gli interrupt INT:X hanno un predefinito indirizzo a cui il micro salta per eseguire la routine preposta, questo indirizzo è mappato in memoria grazie ad una macro ISR(vector_name, attr). I vector_name che hanno questo nome INTX_vect (dove X è un numero) corrispondono a interrupt trigerabili, possono richiedere una IRQ sul fronte/discesa/entrambe del segnale presente nel pin. Nota che ogni pin ha un suo vector_name. Gli altri interrupt sono attivabili su tutti i pin (compresi quelli che hanno il vector_name separato) ma non sono trigerabili in quanto sono PinChanged cioè sono sensibili su entrambe i fronti, in più non hanno un vector_name separato per ogni pin, ma ne hanno uno per ogni porta a cui corrisponde quel pin.

Qui dovresti capirci qualcosa: http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html

Quote
Se vuoi ridurre i tempi di inizio della routine, allora devi passare o altro compilatore C (tipo IAR), oppure passare all'Assembly.
Che tradotto vuol dire che la routine la scrivi in assembly inline ed il resto in C.

Ciao.

2120  International / Generale / Re: Interrupt interrompibili? on: September 30, 2011, 07:35:19 am
4m/sec????

Cioè in 10 secondi fai fuori 40 mt di carta, oppure c'è un errore ed è 4cm/s.

Deduco che la carta ha sia a destra che a sinistra dei fori allineati e lo spazio minimo tra questi e di 0.5 mm.
I fori quanto saranno grandi?
Poi in più è possibile che il foro a destra coincida con quello a sinistra.

devi attivare entrambe gli interrupt e quando entri nella ISR_(A) fai un test su B se positivo azzeri la richiesta di interrupt scatenata da B, se entra prima in B fai la cosa contraria. Questo da per sconstato che le richieste di interrupt avvengano a distanza minima di 4 cicli di clock, questo è il tempo che che impiega il micro per saltare alla ISR.

Dovresti anche darci più info sul aggegio che stai sviluppando, una foto della carta, che sensori usati per rilevare i fori ecc.

Ciao
2121  International / Generale / Re: Input/Output analogici 0-10VCC on: September 29, 2011, 05:29:18 pm
Quote
Per esperienza diretta (ti ricordi ci provai sulla stazione meteo?) posso dire che ho provato a pilotare una ventolina tramite un transistor azionato da un segnale PWM per variarne la velocità ma, anche con filtro R-C, la ventolina "ronzava", segno che comunque il transistor "sente" che è un segnale PWM e non un analogico vero.

Si ricordo l'episodio. Ma qui io intendevo un segnale analogico non uno di potenza. Se rifai la prova e filtri con un OP (ma anche il transistore potrebbe andare) e dopo un'altro transistor riesci a ricavare un segnale più robusto forse sufficiente da pilotare la ventola.

In realta il problema non è la corrente ma il fatto che il carico (ventola) non fa lavorare correttamente il filtro, per questo si usa filtrare con OP.

Un esempio di filtro passivo è quello usato negli amplificatori "digitali" dove il segnale di uscita è un PWM modulato dal segnale audio, il filtro qui serve solo a ridurre le armoniche generate dagli spigoli dell'onda quadra.

Ciao.
2122  International / Generale / Re: Progetto Domotica on: September 29, 2011, 05:21:28 pm
Quote
Voglio appunto dire che se parliamo di cancelli automatici e' talmente facile aprirlo, non dimentichiamo che basta anche aspettare che esca una macchina e mettersi sulle fotocellule, che preoccuparsi del livello di sicurezza sui arduino e' puro allenamento

Si si confermo, non fatelo con me, perchè io aspetto che si chiude poi vado, se qualcuno ci prova lo stampo al muro in retromarcia. smiley-evil

Sono daccordo con pittuso, poi le cose vanno fatte bene. Se è un test non importa ma......

Ciao.
2123  International / Generale / Re: Input/Output analogici 0-10VCC on: September 29, 2011, 05:06:48 pm
Ciao, lupusimprobus, ma di solito non è lupus in fabula. smiley-razz

Come l'ha messa Menniti anche se corretto sembrerebbe non ci sia possibilità di fare una conversione.
L'atmega328 ha 6 pin PWM, questi se si trova il modo di alzare la frequenza del PWM (possibilissimo manipolando i registri) si ottiene un segnale PWM ad alta frequenza che opportunamente filtrato con un OP approssima una tensione continua.

Leggi un pò sugli OP e cerca integratore (sono arruginito) non so darti info più dettagliate.

Ciao.

In extremis:
Quote
le uscite "analogiche" di arduino sono uscite PWM. Puoi pilotare con quelli un transistore che porta il segnale a 10 V e far passare un filto passabasso. Cosí ottieni una tensione continua. l' ighippo é che le variazioni vanno abbastanza lente.

Si la velocità di risposta dipende dalla frequenza del PWM, maggiore frequenza = maggiore velocità
Se non si hanno variazioni repenti ne che devono essere seguite anche frequenze del KHZ dovrebbero andare, con un filtro attivo del 1° ordine
centrato sotto i 1000 HZ -3db
2124  International / Generale / Re: avrdudequi funzionaaaaaaaaaa on: September 26, 2011, 11:51:03 pm
Aggiornato il repo https://gitorious.org/avrdudequi

Nella wiki ci sono le istruzioni per scaricare e compilare.

Mi servono i dati per inserire altri programmatori compatibili con avrdude.
in particolare mi serve il risultato di questo comando digitato da root:

lsusb -v

Ciao.

2125  International / Generale / Re: Arduino 2009 extended fuse on: September 25, 2011, 06:43:22 pm
Quote
Io ci accedo con -P /dev/ttyACMx, tale e quale all'Arduino UNO.
ok allora dovresti avere il modulo cdc-acm caricato, quindi con arduino disconnesso il seguente comando dovrebbe ritornarti qualcosa:
lsmod | grep cdc-acm.

Ciao.
2126  International / Generale / Re: Arduino 2009 extended fuse on: September 25, 2011, 06:14:36 pm
Quote
Adesso sono con Xubuntu 11.04 e HAL non c'è, e manco c'è sul mio portatile dove ho Arch.
Però se ti interessa, il mio USBtinyISP restituisce questi ID al sistema, che poi Udev usa per i permessi:

Ok, quindi lo vede come usb e non come usb-serial, questo vuol dire che tu usi l'argomento -P usb giusto, oppure
c'è un modulo del kernel e quindi c'è anche un device file tipo ttyUSBx o altro.

Se è così, lo vede come vede avrisp mkii, e quindi lo aggiungo subito.

Ciao.
2127  International / Generale / Re: Arduino 2009 extended fuse on: September 25, 2011, 05:50:06 pm
Quote
Su differenti micro l'efuse controlla differenti cose.
Ad esempio sui 328 e sui 644 controlla il BOD, mentre sui Tiny84/85 controlla l'autoprogrammazione (SELFPRGEN). In pratica, infatti, sui Tiny io non li tocco mai. Li ho toccati per test sul 328 per attivare/disattivare la funzione BOD
Azz, io avevo capito che alcuni micro considerano un bit fuse programmato quando posto a 1 anzichè a zero come consueto.
Ripeto la logica è sempre quella: 1 non programmato Zero programmato, o no?

Ok, avrdudequi funziona con AVRISP MKII, vorrei iserire anche il programmatore che hai tu (adafruit) e poi aggiorno il repo, così ti do la possibilità
di provarlo (non hai scuse).

Ma non ho idea cosa accade quando colleghi il tuo programmatore, mi servirebbe l'output di hal-device, sempre che c'è sulla tua distrò.

Ciao.
2128  International / Generale / Re: Arduino 2009 extended fuse on: September 25, 2011, 04:48:20 pm
Quote
Comprendo la tua perplessità e il tuo ragionamento logico, ma io le prove le ho fatte su 7 diverse famiglie di micro e il polacco mi ha fornito solo i 328, alcune addirittura mi sono arrivate direttamente da ATMEL, ma naturalmente il problema riguarda solo quelle che hanno un E_Fuse, quindi mi pare solo gli ATmega.

Comunque era una battuta, non penso seriamente che ci siano delle differenze tra i tuoi micro ed il mio.

Ho dato uno sguardo veloce al software http://mightyohm.com/files/hvrescue21/HVRescue_Shield212_sketch.zip
e non  mi pare ci sia conversione di valore, però ho guardato molto velocemente. Io dico che c'è una conversione, cioè vengono
modificati i primi 3 bit e gli altri sono fissi ad uno.

Quote
alcuni micro vogliono i valori opposti di quelli che dice FuseCalc, quelli segnati in rosso per capirsi. Ad esempio, se prendi gli Attiny85 e cerchi di programmare l'efuse con $FF otterrai un errore da parte di avrdude che ti informerà che la verifica dell'efuse non è andata a buon fine. Se invece programmi il micro con il valore in rosso, $05, $07 ecc... l'operazione va a buon fine.

Ok questo non lo sapevo, quali sono questi micro almeno le sigle che conosci tu, cosi modifico logica altrimenti,
faccio un programma che funziona con alcuni micro e con altri nisba.

Ok, ciao.



2129  International / Generale / Re: Arduino 2009 extended fuse on: September 25, 2011, 02:42:50 pm
Quote
Il programmatore HV a cui sto lavorando, se programmo l'EFuse a 0x05, alla successiva lettura dei valori memorizzati mi restituisce in effetti 0xFA e se mando 0x07 (ma anche altri valori che ora non ricordo) mi restituisce 0xFF, ma poiché io via software non glielo sto dicendo di sicuro credo che sia il micro che si auto-imposti questi valori come hai appena spiegato, quindi non serve stare lì a studiare metodi di conversione perché secondo me se la vede lui.

Ciao Manny, io però se tramite avrdude scrivo 0x5 poi questo leggo, quindi non ci ho capito più niente chi è che fa la conversione nel tuo caso?
Perchè se non la fai tu tramite codice sorgente la fà il micro? boooo
E se la fà il micro com'è che il mio non la fà, non è che il polacco ti ha dato dei micro intelligenti? smiley-grin
PS: non ti fare prendere la mano perchè se no da un discorso proficuo va a finire a chiacchere e barzellette, io farò il possibile.

Io ora ho questo problema d'affrontare:
dopo avere letto i fuse, devo aggiornare la GUI in modo che mi mostri i checkbox marcati correttamente.
Ancora non ho provato a mandare alla GUI il valore 0x5, ma sono quasi certo che mi mostrera i fuse bit marcati al contrario.

Ciao.
2130  International / Generale / Re: avrdudequi funzionaaaaaaaaaa on: September 25, 2011, 02:11:10 pm
Quote
pocherrimo, ho una rognaccia terrificante con il min-Pci di una scheda
hai presente quelle cose che prevedi che vadano lisce
perche' ti dicono una cosa, lavori confidende di quanto ti hanno detto
ma quando ti arriva il lavoro altrui e sei pronto per fare integrazione
guardi i sorgenti, guardi l'hw, e al dunque dunque dovrai dire al capo:
"ripianifica, abbiamo un grosso problema" ? ecco, sto pensando a come dirglelo =P

Io un modo per dirglielo c'è l'ho:
Quando ti chiede; allora come andiamo?
Tu gli quardi i piedi e gli dici; capo stia attento si arrotoli i pantaloni
Lui; Perché
Tu; Siamo nella merda. smiley-grin

Se il livello è molto alto allora digli di stare con la bocca all'insù smiley-mr-green

Quindi alla fine tocca sempre a mè sbattermi, pure per la lib. smiley-roll

Ho in mente di implementare l'intera applicazione in modo per me rivoluzionario, solo che a livello pratico non ho mai
affrontato questo tipo di implementazione. Ho studiato il codice di una applicazione totalmente basata sui plugin, incredibile
il main non fà altro che avviare dei plugin in base ad una lista delle dipendenze, poi questi una volta in memoria cominciano a
scambiarsi oggetti di qualunque tipo. Il bello (c'è altro) è l'object pool, che mi permette di registrare oggetti e di estrarli.

Devo ancora studiare per avere una vista d'insieme, specie per avrdude e protocolli perchè se un programmatore marca cavallo usa il protocollo STKxx, devo dare la possibilità agli sviluppatori di ereditare il protocollo, se invece usa STKxx.personalizzato devo dare la possibilità di ereditare la classe astratta, insomma non so bene come fare, sono al buoi tranne qualche bagliore in lontananza.

Ciao.

ps:
Comunque ho risolto, il problema non era direttamente imputabile ad avrdude (forse si), il fatto è che quella classe QProcess è event drive, si vede che quella riga anche se ci sono gli endline viene scritta in stderr tutta nello stesso momento e questo scatena l'evento di qprocess che mi legge ciò che è stato scritto ultimamente in stderr.
Pages: 1 ... 140 141 [142] 143 144 ... 187