Come mappare pin hardware - pin logici Arduino ?

Sto tentando di capire come funziona l'ide Arduino Numerose domande si accatastano in attesa di sbroglio Elora servirebbe qualche espertone in materia che mi mettesse a disposissione almeno 28 secondi del suo tempo ahhhh (a gratis s'intende):

-1 indove l'e' che l'ide va a cercare i file include? (chiedo questo perche' sembra li trovi anche se non si vedono) (esiste un solo percorso preferenziale o se non trova qua' va a vedere la' e cosi' via?)

-2 como mai alcune volte nei progetti si usa un #include mentre altre si trova un #include "Toni.h" ?

-3 quando si trova una roba di questo tipo #include si intende che la directory avr e' presente nella stessa directory del progetto (lo scketch come lo chiameno loro) o si intende altro?

-4 alcuni file include prevedono l'uso di direttive del tipo #if defined(__AVR_ATmega8__) .... Ma quel __AVR_ATmega8__ chi e' che glielo passa? Potrebbe essere il compilatore che, in base alla scheda impostata, passa la costante/variabile in modo che i vari file prendano il percorso adatto alla scheda, ma come fare per sapere quali di queste costanti7variabili sono possibili, ad esempio per un Arduino Due qual'e' il valore passato, e indove l'e' che si pol vedere?

-5 in duve l'e' che si indica al sistema l'associazione tra pin fisico e pin logico (come visto dentro l'ide, come usato dal pinMode() per capirci), ad esempio per l'Arduino Due chi e' che associa il pin fisico

27 col pin logico 0 ?

Ringrazio in anticipo tutti gli espertoni che risponderanno

Reply to
RobertoA
Loading thread data ...

"RobertoA" ha scritto nel messaggio news:p8eadr$p15$ snipped-for-privacy@virtdiesel.mng.cu.mi.it...

provo a darti alcune risposte, poi vediamo come va :-)

questo e' parte del linguaggio C tra le 2 formule cambia il percorso in cui i file da includere vengono cercati #include si usa per gli header di libreria standard, quelli che stanno nella cartella lib del compilatore #include "" si usa per gli header tuoi, quelli del tuo progetto, che stanno nella cartella dei sorgenti del tuo progetto. quando si usa #include "", il compilatore prima cerca il file specificato nella cartella del progetto, se non lo trova lo cerca nella cartella lib del compilatore quindi #include e #include "stdio.h" sono identiche invece #include

delle librerie standard del compilatore

no in C standard "avr" e' una sottocartella del percorso per le lib del compilatore, perche' hai usato #include

se non si trova in .h, e' un valore definito sulla linea di comando data al compilatore non so che valore abbia per un Arduino 2, ma perche' ti interessa ? quel tipo di cose e' da usarsi per scrivere codice che vada bene per tutte le piattaforme, sei sicuro che ti serva ?

in realta' non l'ho capita, ti risponderei che e' un assunto fatto dal progettista, ma e' meglio che mi riformuli diversamente la domanda. :-)

Reply to
alfio

Il 15/03/2018 19:46, alfio ha scritto:

Ringrazio molto per i chiarimenti E dov'e' la directory lib del compilatore? C'e' modo di vederlo dall'ide di Arduino? Quindi se volessi tenere TUTTI i file include (pure lo stdio.h e company) dentro la mia directory progetto (per renderla facilmente trasportabile da un pc ad un altro) potrei usare sempre una roba del tipo #include ".." giusto? Il valore passato dal compilatore per indicare la scheda usata mi interessa perche' all'interno di un include viene segnalato che la scheda non viene trovata E quindi volevo capire come aggiungere la sezione relativa alla scheda usata, in questo caso una Arduino Due, ma anche con una Olimex Stm32 mi dava lo stesso problema Il progetto che mi da problemi e' questo

formatting link
Dopo aver scaricato il file zip e averlo decompresso dentro la mia c:\users\...\documents\arduino\libraries mi ritrovo la directory GP22-master che dovrebbe contenere tutto Dentro examples/TDCtalk c'e' l'esempio in wiring, ma usando una Arduino Due quell'esempio non passa, mi da' un "Arduino pin mapping not defined for this board" Per questo stavo tentando di capire come 'ragiona' l'ide quando deve cercare qua' e la le robe per compilare il tutto Per quanto riguarda l'ultima domanda, dentro l'ide Arduino si usa pinMode(0,output) per indicare il pin 0 come uscita, ma qual'e' a bordo scheda il pin 0 se riferito al chip usato (il pin 1, il 2, il 3...?) ?

Reply to
RobertoA

Il 16/03/2018 11:27, RobertoA ha scritto:

gli headers standard sono in C:\Program Files\Arduino\hardware\tools\avr\avr\include\

poi ci sono quelli delle lib esterne in C:\Users\AAA\Documents\Arduino\libraries

non e' una strada da seguire il tuo progetto sara' utilizzabile da chi usa l'IDE Arduino, per cui le lib standard le avra' gia' nel posto giusto, non c'e' bisogno che tu le duplichi nel tuo progetto. tu distribuirai il tuo sketch con, se vuoi, la _copia_ delle librerie esterne che chi usa il tuo sketch dovra' installare. questo perche' le librerie standard o esterne non le devi modificare

ho visto ho compilato per Arduino Uno, e ci sono una serie di warning da mettere a posto. per Arduino Due da il messaggio che hai detto tu io non conosco Arduino Due, ma ho visto che usa un microprocessore diverso, e' un ARM, mentre la lib GP22 e' scritta per gli AVR sicuro che puo' funzionare ? o necessita di pesanti modifiche ?

non basta vedere le specifiche della scheda ?

formatting link

se stai cercando il pin fisico del microprocessore, non ti resta che incrociare i dati della tabella precedente con il datasheet:

formatting link

Reply to
alfio

Il sistema Arduino numera i pin delle porte a modo suo. Nel caso di Arduino Uno (non ho mai usato il Due):

Pin fisico 2 - Porta D pin 0 - I/O 0 Pin fisico 3 - Porta D pin 1 - I/O 1 ... Pin fisico 6 - Porta D pin 4 - I/O 4

Pin fisico 11 - Porta D pin 5 - I/O 5 Pin fisico 13 - Porta D pin 7 - I/O 7

Pin fisico 14 - Porta B pin 0 - I/O 8 ... Pin fisico 19 - Porta B pin 5 - I/O 13

ecc.

formatting link

--
Canale Youtube: http://goo.gl/522kv4
Reply to
LAB

Il 16/03/2018 21:42, alfio ha scritto:

Ringrazio molto per l'aiuto fornito

Per quale motivo non e' una strada da seguire? Mettendo nella directory progetto tutte le dichiarazioni e librerie necessarie al progetto stesso, lo si renderebbe portabile da una macchina all'altra Viceversa, 'fidandosi' delle librerie standard, rischierei di andare su altro pc e non riuscire a ricompilare correttamente per la mancanza o differenza rispetto alle librerie standard su installazione originale L'unico vantaggio che vedrei nel seguire la prassi standard (usare librerie standard su directory Ide/Compilatore) e' nel risparmio di spazio su disco, evitando di duplicare ad ogni progetto lo spazio impiegato per gli stessi file, ma coi pc attuali non e' un problema, personalmente propenderei volentieri per una sicura trasportabilita' del progetto rispetto al risparmio spazio disco

Per quanto riguarda la compilazione dell'esempio, si il Due e' un architettura Sam, non Avr, e quindi come si dovrebbe operare per il Due? Non mi sembra ci sia un percorso equivalente agli avr, del tipo ..\arduino\sam\libraries Ho posto la domanda di come far capire all'ide Arduino che il pin 2 logico (come 'visto' dall'ambiente Arduino) e' in realta' il pin PB25 ovvero il numero 100 del chip (sto parlando del Sam3X8C), perche' volevo capire come vengono realizzate le mappature come nel file arduino_io.h dell'esempio indicato In quell'esempio c'e' la mappatura per diverse schede ma per il Due non c'e' e quindi mi serviva sapere cosa metterci sul #elif defined( ******* ) e poi come completare il #define digitalPinToPortReg(P) ed il #define digitalPinToBit(P)

Reply to
RobertoA

Il 16/03/2018 22:31, LAB ha scritto:

Si questo era chiaro Ma l'associazione "pin_fisico/pin_logico" dov'e' che sta scritta?

Reply to
RobertoA

Il 17/03/2018 17:54, RobertoA ha scritto:

si chiamano librerie standard perche' sono standard, ossia ben definite e uguali per tutti. gli header poi vanno in coppia con i .o (in questo caso) che sono nella cartella lib lascia stare le lib standard cosi' come sono, tanto il tuo progetto e' fatto per l'IDE di Arduino e sull'IDE di Arduino verra' compilato da chi lo vuole usare.

quella e' una mappatura che serve alla lib GP22 per scavalcare la funzione standard DigitalWrite(). in pratica hanno scelto di scrivere direttamente i registri del micro

guardando in C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\boards.txt

mi verrebbe da pensare che il simbolo per la scheda Arduino Due sia __SAM3X8E__

la cosa e' confermata da questo semplice test:

void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: #ifdef __SAM3X8E__ qui_deve_dare_errore; #endif }

Reply to
alfio

Il 17/03/2018 21:53, alfio ha scritto:

Si hai ragione, non conoscevo la presenza in AppData Quindi c'e' una terza directory che fa parte del 'sistema Arduino', almeno dell'ide ultima versione che e' la 1.8.5

C:\Program Files (x86)\Arduino C:\Users\utente_ciccio_miccio\AppData\Local\Arduino15 C:\Users\utente_ciccio_miccio\Documents\Arduino

Ce ne sono altre? Esiste documentazione per capire come funziona esattamente l'ambiente software Arduino? Voglio dire, quando indichi all'Ide scheda Arduino Leonardo, cosa implica questo? Quando indichi la com10 dov'e' che usa questa informazione? I percorsi di ricerca dei files (librerie, include, ecc..) quali sono? Quando si aggiunge una scheda nuova, dove vanno i file relativi e come vengono usati dal sistema? Quando si aggiunge una libreria con 'gestione librerie' in duve l'e' che va a finire? E se la aggiungo a mano? Come fa l'Ide a mostrarmi le librerie aggiunte a mano, spazzola tutta la C:\Program Files (x86)\Arduino\libraries ? Ed entra nelle sottodirectory oppure no? Portate pazienza per l'ignoranza iniziale, e le domande da niubbo Spero il periodo sia breve

Reply to
RobertoA

Il 18/03/2018 08:20, RobertoA ha scritto:

porca paletta quante domande! :-O tu dici di essere niubbo, ma io non sono mica un esperto, giusto mezzo gradino sopra di te. :-) hai provato ad iscriverti al forum inglese ?

formatting link
li troverai sicuramente gente piu' esperta di me

AppData fa parte di Windows, i programmi sono ora (a partire da Vista) obbligati a scrivere li, al posto di scrivere nella loro cartella sotto c:\programmi

non lo so. tieni presente che sotto AppData ci sono 3 possibili strade che puo' usare una app.

non lo so, dovresti cercare a partire da qui:

formatting link

da un po di versioni a questa parte, l'IDE Arduino e' diventato estensibile, ossia ora si puo' aggiungere il supporto a nuove schede di sviluppo senza dover aggiornare l'IDE stesso, mentre prima ad ogni nuova scheda, usciva una nuova versione di IDE. quindi ora l'IDE e' configurabile attraverso definizioni esterne, che non sta a noi utenti capire dove sono, e come sono fatte, noi scegliamo il tipo di scheda e lui si predispone per compilare il codice per quel tipo li, e anche per gestire il download.

sicuramente per il download del progetto sulla scheda, poi anche per il serial monitor.

oltre quelli gia' detti, non ne conosco altri

ma a che ti serve saperlo ? come nel caso di Arduino Due, credo finisca tutto in qualche cartella sotto AppData/Local/Arduino/...

qui spiegano tutto:

formatting link
leggi la nota finale: "Please note: Arduino libraries are managed in three different places: inside the IDE installation folder, inside the core folder and in the libraries folder inside your sketchbook. The way libraries are chosen during compilation is designed to allow the update of libraries present in the distribution. This means that placing a library in the ?libraries? folder in your sketchbook overrides the other libraries versions."

Reply to
alfio

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.