Go Down

Topic: ATmega328PB (Read 96676 times) previous topic - next topic

PaoloP

#270
Feb 28, 2016, 03:22 pm Last Edit: Feb 28, 2016, 03:28 pm by PaoloP
Astro, questo è il mio file pins_arduino.
A differenza del watterott ci sono le definizioni della seconda I2C e della seconda SPI, oltre ai timer corretti eccetto il timer4B che messo sullo stesso pin del timer3A.

Ho aggiunto anche definizioni mancanti nel file iom328pb.h ma spero di liberarmene appena si modifica il core Arduino con i giusti nomi dei registri.

Inoltre il file di watterott mappa solo 20 pin digitali il mio 24. :-)
C'è da controllare comunque la corrispondenza delle formule per bit e mask.
Code: [Select]
#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 23) ? (&PCICR) : ((uint8_t *)0))
#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
#define digitalPinToPCMSK(p)    (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 23) ? (&PCMSK1) : ((uint8_t *)0))))
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))

#define digitalPinToInterrupt(p)  ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))

astrobeed

Astro, questo è il mio file pins_arduino.
A differenza del watterott ci sono le definizioni della seconda I2C e della seconda SPI, oltre ai timer corretti eccetto il timer4B che messo sullo stesso pin del timer3A.
Il file pins_arduino ha una importanza secondaria, comunque anche in quello di Watterott sono definiti tutti i 24 pin, provati e funzionano, ci sono pure tutti i canali pwm.
Per la I2C e la SPI non serve a nulla dichiarare i pin in pin_arduino per il semplice motivo che ci pensano le relative librerie ad inizializzare i pin come serve.
Intanto confermo che la seconda I2C funziona con la modifica che ho fatto, adesso sto cercando di sistemare le cose in modo da farle andare tutte e due usando "wire" per quella standard e "wire1" per la seconda, in questo modo dovrebbe essere possibile usare la I2C del 328PB anche con vecchi sketch/librerie semplicemente sostituendo "Wire.h" con "WirePB.h".
Scientia potentia est

PaoloP

Puoi usare le tue SPI.h e la Wire.h sostituendole a quelle del core.
Crea una directory libraries dove c'è il file board.txt e l'IDE prende le tue invece che quelle standard di Arduino.

PaoloP

#273
Feb 28, 2016, 07:02 pm Last Edit: Feb 28, 2016, 07:03 pm by PaoloP
Ho caricato sul Google Drive il mio core senza core per il 328PB
--> https://drive.google.com/file/d/0B-r72Ke08DpxSkFndU4tZm1oU0k/view?usp=sharing
In pratica c'è la toolchain 3.5.0 con i file modificati, i file board.txt e platform.txt, pins_arduino e le librerie spi.h e wire.h.
Questa versione funziona solo con 1 spi e 1 wire.
Astro ha detto che per la seconda seriale non bisogna modificare niente...  :)  :)

Il file è un .7z (12MB), il .zip veniva circa 39MB.

astrobeed

In pratica c'è la toolchain 3.5.0 con i file modificati, i file board.txt e platform.txt, pins_arduino e le librerie spi.h e wire.h.
Ti sei scordato che va modificato anche twi.h della toolchain altrimenti non appena compili per la I2C va in errore.
Per il momento l'ho sistemato così per la TWI0, poi vedo come adattarlo per tutte e due le I2C.

Code: [Select]
/**
 * \ingroup util_twi
 * \def TW_STATUS
 *
 * TWSR, masked by TW_STATUS_MASK
 */
#if defined (__AVR_ATmega328PB__)
  #define TW_STATUS (TWSR0 & TW_STATUS_MASK)
#else
  #define TW_STATUS (TWSR & TW_STATUS_MASK)
#endif
Scientia potentia est

PaoloP

#275
Feb 28, 2016, 07:14 pm Last Edit: Feb 28, 2016, 07:15 pm by PaoloP
eheh  :)  ho messo un undef e un nuovo define in twi.c della lib wire.
Così non tocco i file della toolchain.

Infatti non ho toccato neanche io.h, sfrutto la composizione del nome del file.

PaoloP

#276
Feb 28, 2016, 07:21 pm Last Edit: Feb 28, 2016, 07:45 pm by PaoloP
C'è la toolchain 3.5.1 --> http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.5.1/

Adesso vedo se hanno messo il Pb!!  :)

EDIT: C'è il 328PB!!!  :smiley-mr-green:  :smiley-mr-green:  :smiley-mr-green:  :smiley-mr-green:

EDIT2: :'(  :'(  :'(  :'(  :'(  Non è per Windows.

EDIT3: Non solo... manca il file delle definizioni iom328pb.h e c'è solo il file specs-atmega328pb.
Il compilatore lo riconosce ma poi si pianta...

Ma perché fanno le cose a metà?

boschi

#277
Feb 29, 2016, 07:20 pm Last Edit: Feb 29, 2016, 07:21 pm by boschi
peccato capiti nel periodo sbagliato, ma nel caso ne facciate una seconda revisione, potreste aggiungere una fila di header "giusti", stile fishino UNO, in modo tale da poter prototipare direttamente su millefori?

comunque state facendo un ottimo lavoro!

PaoloP

Pare che il progetto di una nuova scheda abbia fatto la stessa fine del lancio del Falcon 9. Abortito!
Ci stiamo concentrando sulla parte software.

uwefed

peccato capiti nel periodo sbagliato, ma nel caso ne facciate una seconda revisione, potreste aggiungere una fila di header "giusti", stile fishino UNO, in modo tale da poter prototipare direttamente su millefori?
Watterott sta preparando di produrre una MINI PRO col 328PB. Non so quando sará disponibile, forse quando il IDE di Arduino possa gestire le nuove funzionalitá del PB. https://github.com/watterott/wattuino
Ciao Uwe


testato

ma la mini pro che senso ha se rimane con la vecchia pedinatura ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

PaoloP

Non ho visto se ha pin aggiuntivi.  :)

Comunque sto combattendo con la Wire. La sto modificando seguendo l'esempio della hardwareserial.h.
Gli ho integrato i file twi e creato un file Wire0.cpp e Wire1.cpp.

Vi farò sapere...

uwefed

#282
Mar 01, 2016, 10:13 pm Last Edit: Mar 01, 2016, 10:53 pm by uwefed
ma la mini pro che senso ha se rimane con la vecchia pedinatura ?
hanno aggiunto i 4 nuovi pin (A6 e A7) e PE0 e PE1


Ciao Uwe


testato

Ok, ottimo
Avrà successo, o meglio avranno successo i cloni cinesi a 2€  :D

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

uwefed

Ok, ottimo
Avrà successo, o meglio avranno successo i cloni cinesi a 2€  :D
Dipende tutto se sará inglobato nel ArduinoIDE.

Ciao Uwe

Go Up