Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 15 aprile 12, 08:17   #41 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
bene

grazie Gawain..

la tua osservazione è stata preziosa.. .. come accennato è da poco tempo che smanetto su Arduino.. ..al momento faccio riferimento solo agli esempi che trovo sull'IDE di arduino. ..bene la discussione sta prendendo una direzione "costruttiva" penso che chi legge o leggerà in futuro.. avrà modo di apprendere.. mi pare che comunque questo problema degli interrupt me lo facessero anche i Microchip per esempio il Pic16F628..

a presto

Citazione:
Originalmente inviato da gawain Visualizza messaggio
a supporto di quanto sopra
allego il PPM.h che contiene un decoder ppm molto configurabile con validazione del frame, un driver pr 6 servi con risoluzione 1000 o 2000 count a seconda che si usi un 8 o 16 mhz, il driver è sincronizzato col ppm in ingresso per minimizzare la latenza..
il sistema è assolutamente glitch free perche:
1- sono disbilitati gli iterrupts primpostati dalla piattaforma arduino
2-è implementato un anticollisione fra i 2 interrupts del driver e quello di scansione dell'ingresso ppm
l'ingresso ppm è testato periodicamente tramite interrupt in modo da non risentire della lunghezza del programma utente (es. autopilota)
faustog_2 non è collegato   Rispondi citando
Vecchio 16 aprile 12, 07:59   #42 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
datasheet

OK ho capito.. è arrivato (immediatamente) il momento di mettersi a studiare il datasheet! cercando di capire il software.. immediatamente sorge l'esigenza di conoscere i nomi dei registri e i bit relativi agli interrupt

http://www.atmel.com/Images/8271S.pdf

man mano faremo interventi sugli argomenti PWM, interrupt, Timer.

PEr esempio per leggere il segnale PPM da una ricevente serve appunto saper usare il Timer1 attraverso la lettura partendo dal valore LOW.. aspetta che esso diventi HIGHT.. appena cambia di stato.. comincia a contare.. fino a quando appunto non ritorna a valore basso LOW..

a dopo
fausto
faustog_2 non è collegato   Rispondi citando
Vecchio 16 aprile 12, 08:59   #43 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
OK ho capito.. è arrivato (immediatamente) il momento di mettersi a studiare il datasheet! cercando di capire il software.. immediatamente sorge l'esigenza di conoscere i nomi dei registri e i bit relativi agli interrupt

http://www.atmel.com/Images/8271S.pdf

man mano faremo interventi sugli argomenti PWM, interrupt, Timer.

PEr esempio per leggere il segnale PPM da una ricevente serve appunto saper usare il Timer1 attraverso la lettura partendo dal valore LOW.. aspetta che esso diventi HIGHT.. appena cambia di stato.. comincia a contare.. fino a quando appunto non ritorna a valore basso LOW..

a dopo
fausto
in realta conta sempre in continuo e l'igresso non fa che memorizzare di volta in volta tul registro il valore del contatore dopo ricavii n maniera asincrona(tanto c'e tutto il tempo) la differenza tra due memorizzazioni successive.
il vantaggio di non resettare mai il contatore permette di poterlo usare anche per il driver dei servi, e per eventualmente generare un ppm in uscita sul pin 9.
non bisogna dimenticare che sul 328 cè solo un contatore 16 bit.
p.s. nota che facendo la differena tra unsigned no c'è bisogno di testare quando si attraversa lo zero perche la diiff sara sempre corretta
gawain non è collegato   Rispondi citando
Vecchio 16 aprile 12, 09:34   #44 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

Il registro TFR1 è il timer 1 appunto da 16 bit ICF1 è il bit del registro in causa

il seguente controllo sapresti commentarmelo?

if (TIFR1 & (1<<ICF1)) {

leggendo il datasheet mi sono accorto che è corredato di esempi in assembler.. meglio dei datasheet dei Pic.. il problema che in questi gg ho poco tempo libero.. cci vuole tempo per leggere con attenzione .. mi viene facile capire perchè faccio riferimento al lavoro fatto con i Pic.. molte cose coincidono cambiano solo i nomi dei registri.. mi sono accorto che ci sono istruzioni in assembler che sommano e sottraggono su registri a 16 bit si distinquono perchè finiscono queste istruzioni con la W ..fantastico.. poi scopro cose che per farle con i Pic devi sudare! anche i PWM hanno prescaler da 1023 !
faustog_2 non è collegato   Rispondi citando
Vecchio 16 aprile 12, 10:28   #45 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
Il registro TFR1 è il timer 1 appunto da 16 bit ICF1 è il bit del registro in causa

il seguente controllo sapresti commentarmelo?

if (TIFR1 & (1<<ICF1)) {

leggendo il datasheet mi sono accorto che è corredato di esempi in assembler.. meglio dei datasheet dei Pic.. il problema che in questi gg ho poco tempo libero.. cci vuole tempo per leggere con attenzione .. mi viene facile capire perchè faccio riferimento al lavoro fatto con i Pic.. molte cose coincidono cambiano solo i nomi dei registri.. mi sono accorto che ci sono istruzioni in assembler che sommano e sottraggono su registri a 16 bit si distinquono perchè finiscono queste istruzioni con la W ..fantastico.. poi scopro cose che per farle con i Pic devi sudare! anche i PWM hanno prescaler da 1023 !
ICF1 è una costante numerica che rappresenta il valore posizionale del BIT ICF1,
1<<ICF1 esegue un left shift di 1 di ICF1 posizioni, a quel punto viene fatto un & con il registro del timer e se il risultato è vero (!=0) viene eseguito il codice.

PS: Consiglio, lascia perdere l'assembler con gli AVR usa il C e un buon compilatore (AVR-GCC 4.7.0) il codice risultante è meglio di quello che puoi fare tu....
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 16 aprile 12, 15:26   #46 (permalink)  Top
User
 
L'avatar di Tom_1971
 
Data registr.: 23-04-2008
Residenza: Firenze
Messaggi: 1.108
Citazione:
Originalmente inviato da gawain Visualizza messaggio
a supporto di quanto sopra
allego il PPM.h che contiene un decoder ppm molto configurabile con validazione del frame, un driver pr 6 servi con risoluzione 1000 o 2000 count a seconda che si usi un 8 o 16 mhz, il driver è sincronizzato col ppm in ingresso per minimizzare la latenza..
il sistema è assolutamente glitch free perche:
1- sono disbilitati gli iterrupts primpostati dalla piattaforma arduino
2-è implementato un anticollisione fra i 2 interrupts del driver e quello di scansione dell'ingresso ppm
l'ingresso ppm è testato periodicamente tramite interrupt in modo da non risentire della lunghezza del programma utente (es. autopilota)
Capisco che il codice che hai scritto prende gli input di una rx e a sua volta comanda dei servi, giusto? Ovviamente la cosa ha senso se uno fa delle operazioni sul comando ricevuto dalla rx prima di mandarlo ai servi, no? Ad esempio in base agli input di certi sensori o altro. Altrimenti si possono risparmiare i 20 Euro di Arduino Ho capito bene?
Oddio, si potrebbe anche usare l'Arduino ad es. per realizzare dei mix "creativi" fra i canali oppure delle curve (esponenziali o di giri/passo per un eli) personalizzate al di là delle possibilità offerte dalla radio che si usa. Potrebbe funzionare?
__________________
1) Honey Bee FP 2) Mini Titan (V1 e V2) 3) Paracopter 4) Ultra-Micro J-3 Cub 5) Blade msr 6) Ultra-Micro T-28 Trojan 7) Team Losi Mini T 8) Blade mcpx 9) Turnigy 1/16 Nitro Buggy 10) Basher Nictro Circus 1/10 SCT
Tom_1971 non è collegato   Rispondi citando
Vecchio 16 aprile 12, 15:40   #47 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da Tom_1971 Visualizza messaggio
Capisco che il codice che hai scritto prende gli input di una rx e a sua volta comanda dei servi, giusto? Ovviamente la cosa ha senso se uno fa delle operazioni sul comando ricevuto dalla rx prima di mandarlo ai servi, no? Ad esempio in base agli input di certi sensori o altro. Altrimenti si possono risparmiare i 20 Euro di Arduino Ho capito bene?
Oddio, si potrebbe anche usare l'Arduino ad es. per realizzare dei mix "creativi" fra i canali oppure delle curve (esponenziali o di giri/passo per un eli) personalizzate al di là delle possibilità offerte dalla radio che si usa. Potrebbe funzionare?
infatti...in mezzo ci metti tutta l'elaborazione che vuoi...
gawain non è collegato   Rispondi citando
Vecchio 16 aprile 12, 16:03   #48 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
Citazione:
Originalmente inviato da Tom_1971 Visualizza messaggio
Capisco che il codice che hai scritto prende gli input di una rx e a sua volta comanda dei servi, giusto? Ovviamente la cosa ha senso se uno fa delle operazioni sul comando ricevuto dalla rx prima di mandarlo ai servi, no? Ad esempio in base agli input di certi sensori o altro. Altrimenti si possono risparmiare i 20 Euro di Arduino Ho capito bene?
Oddio, si potrebbe anche usare l'Arduino ad es. per realizzare dei mix "creativi" fra i canali oppure delle curve (esponenziali o di giri/passo per un eli) personalizzate al di là delle possibilità offerte dalla radio che si usa. Potrebbe funzionare?
Scusa ma secondo te fra un Arduino e una Turnigy9x che monta un ATMEGA64A o una gruvin 4.1 (scheda modificata della turnigy9x) che monta un ATMEGA2560 ci passa molta differenza ???
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 16 aprile 12, 16:28   #49 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
Scusa ma secondo te fra un Arduino e una Turnigy9x che monta un ATMEGA64A o una gruvin 4.1 (scheda modificata della turnigy9x) che monta un ATMEGA2560 ci passa molta differenza ???
infatti..
io elaboro sensori...
una delle applicazioni è il cambio automatico in fase di lancio in f3k tramite acc centrifuga
o il calcolo del AoA tramite sensore di press diff. HCLA
AoA proporzionale a (Carico alare *G)/Pa
e cosi via...
in f3k non si puo usare il gyro....
pero ci sono applicazioni bellissime..
esempio la compensazione di cabra in virata se si fa qualche conto si scopre che è proporzionale alla velocita angolare di imbardata...
gawain non è collegato   Rispondi citando
Vecchio 16 aprile 12, 16:35   #50 (permalink)  Top
User
 
L'avatar di gawain
 
Data registr.: 18-04-2008
Residenza: milano
Messaggi: 405
hcla

sensori HCLA spettacolari
Products | Pressure Sensors and Transmitters | Amplified Pressure Sensors | HCLA | Sensortechnics: Pressure sensors, level sensors, flow sensors
gawain non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Coassiale mixed controller con arduino catman Circuiti Elettronici 12 01 aprile 11 23:17
quadricottero con arduino 2009 sailormann26 Aeromodellismo Progettazione e Costruzione 0 27 dicembre 10 23:12



Tutti gli orari sono GMT +2. Adesso sono le 08:13.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002