Go Down

Topic: Velocizzare l'IO delle porte digitali (Read 22155 times) previous topic - next topic

testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72

Sono file che fanno parte della toolchain e specificano le costanti predefinite per permettere all'utente di specificare PB6 al posto di un indirizzo di memoria per poter accedere al relativo pin. In fase di compilazione, il compilatore sostituirà quella costante con una serie di istruzioni di scrittura a particolari indirizzi di memoria SRAM in cui sono mappate le periferiche interne del microcontrollore, comprese le porte di I/O (difatti la SRAM inizia all'indirizzo $100, anche se l'utente non vede questa cosa, perché le prime locazioni sono riservate).
Ogni famiglia di integrati ha il proprio file delle definizioni perché ovviamente chip diversi hanno risorse diverse e quindi indirizzi diversi.

testato

Yes, tutto chiaro, alla fine dove era definito il valore decimale 6 per PD6 l'ho trovato, resta inspiegabile il perché atmel tenga in disordine queste cose, almeno dal mio punto di vista.
Ripeto PD6 è presente sia sul 328 che sul 2560, capisco che sono micro diversi, ma se io Atmel mi prendo la briga di creare un define per PD6 nei file per 2560, perché non lo faccio anche per 328 e tutti gli altri micro che hanno un PD6 ?

Non è corretto, imho, perché questa scelta, che non è di arduino, deve rompere la portabilità del codice tra due micro che hanno entrambi un PD6
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72

La toolchain non è di Atmel, è di Gnu. Atmel la patcha e la ridistribuisce.
Non so se su AvrStudio PD6 c'è oppure no.

nid69ita


Yes, tutto chiaro, alla fine dove era definito il valore decimale 6 per PD6 l'ho trovato, resta inspiegabile il perché atmel tenga in disordine queste cose, almeno dal mio punto di vista.
Ripeto PD6 è presente sia sul 328 che sul 2560, capisco che sono micro diversi, ma se io Atmel mi prendo la briga di creare un define per PD6 nei file per 2560, perché non lo faccio anche per 328 e tutti gli altri micro che hanno un PD6 ?

Scusa, in quale file l'hai trovato per il 2560 ? Io non lo trovo.
my name is IGOR, not AIGOR

PaoloP

il file è iomxx0_1.h che è incluso da iom2560.h che è incluso da io.h in base al modello di micro.

nid69ita


il file è iomxx0_1.h che è incluso da iom2560.h che è incluso da io.h in base al modello di micro.


azz, che bel nome  :smiley-mr-green:
my name is IGOR, not AIGOR

leo72

Cmq è un comportamento standard dei compilatori. Anche sul compilatore XC8 di Microchip per i suoi PIC devi includere un file che, in base al tipo di chip definito durante la creazione del progetto, carica le definizioni dei pin.

testato


Scusa, in quale file l'hai trovato per il 2560 ? Io non lo trovo.

Ti sei perso una pagina  ;)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

testato


La toolchain non è di Atmel, è di Gnu. Atmel la patcha e la ridistribuisce.
Non so se su AvrStudio PD6 c'è oppure no.

Giusto, quindi si potrebbe aprire un bug o una request, quale e' il sito ufficiale dove viene sviluppata la toolchain ?
Su AtmelStudio non ho provato, ma su WinAVR PD6 c'e' per il 328 (ed e' fermo al 2010)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


Giusto, quindi si potrebbe aprire un bug o una request, quale e' il sito ufficiale dove viene sviluppata la toolchain ?

La pagina ufficiale è questa:
http://www.nongnu.org/avr-libc/

Quote

Su AtmelStudio non ho provato, ma su WinAVR PD6 c'e' per il 328 (ed e' fermo al 2010)

WinAVR cos'è?

testato

#71
Apr 27, 2014, 10:37 pm Last Edit: Apr 27, 2014, 10:40 pm by Testato Reason: 1
e' l'ide ufficiale per windows del GCC
http://www.webring.org/l/rd?ring=avr;id=59;url=http%3A%2F%2Fwinavr%2Esourceforge%2Enet%2F

e' roba ferma al 2010, ma gli include arduinici sono fermi al 2008, ho appena verificato la data dei file, piu' precisamente il gioco viene fatto in portpin.h
quindi le nuove versioni di ide arduinica con la toolchain aggiornata dovrebbero risolvere, certo che non capisco veramente come nel 2014 siamo fermi ancora al compilatore di sei anni fa

se apri portpin.h dell'ide arduino vedrai che alla fine manca questo, che abilita appunto PD6, ed altri, su tutti i micro
Code: [Select]
(239  ) #elif defined(PORTD6) && !defined(PD6)
(240  ) #  define PD6 PORTD6

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


e' l'ide ufficiale per windows del GCC
http://www.webring.org/l/rd?ring=avr;id=59;url=http%3A%2F%2Fwinavr%2Esourceforge%2Enet%2F

IDE ufficiale mi pare una parolona  ;)
Leggendo nella descrizione, pare che sia un gruppo di strumenti messi insieme da utenti di AVRfreaks (penso, eh, perché vedo un sacco di richiami a quel forum).

Quote

e' roba ferma al 2010, ma gli include arduinici sono fermi al 2008, ho appena verificato la data dei file, piu' precisamente il gioco viene fatto in portpin.h
quindi le nuove versioni di ide arduinica con la toolchain aggiornata dovrebbero risolvere, certo che non capisco veramente come nel 2014 siamo fermi ancora al compilatore di sei anni fa

Qui ti rispondo facile. Perché altrimenti avrebbero dovuto rivedere tutto il codice del core, ti ricordi tutti i warning/errori che vengono fuori aggiornando la toolchain? Beh, devono metter mano a tutta quella roba però così facendo c'è il rischio che le modifiche non siano retrocompatibili per cui codice scritto per vecchie versioni della toolchain non girano sulle nuove e viceversa. Nel dubbio.... si sta fermi  ;) Nel senso che non si aggiorna la toolchain: in questo modo tutto funziona oggi come 6 anni fa  ;)

testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

PaoloP

La nuova toolchain con avr-gcc 4.8.3 è in sviluppo in questi giorni. Forse verrà pubblicata con la 1.5.7. Maggiori info nel mio topic specifico.

Go Up