Go Down

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

gpb01

#315
Mar 09, 2016, 06:27 pm Last Edit: Mar 09, 2016, 06:27 pm by gpb01
Ho fatto una ricerca all'interno di tutta la toolchain, però non trovo traccia di definizioni o funzioni del tipo "eewr_byte_m328", sembra che non esiste nulla di simile, la ricerca l'ho fatta fare su tutta la cartella "avr" anche nei file .exe.
... nella toolchain originale riesci a trovarlo ? Perché a me sembra di non trovarlo neanche in quella ... :o

Guglielmo
Search is Your friend ... or I am Your enemy !

PaoloP

#316
Mar 09, 2016, 06:27 pm Last Edit: Mar 09, 2016, 06:30 pm by PaoloP
Trovato in //arduino-1.6.7\hardware\tools\avr\avr\lib\avr5\libc.a (6 hits)  :)
Per la ricerca ho usato NotePad++

gpb01

Trovato in //arduino-1.6.7\hardware\tools\avr\avr\lib\avr5\libc.a (6 hits)  :)
... ottimo ... mi sembra contenga SOLO cose relative alla eeprom (guardando dentro) ... ::)

Ho provato a sostituirlo a quello della toolchain 3.5.1 ... e la compilazione va a buon fine ...
... ci sarà da fidarsi ? ? ?

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed

In effetti nella toolchain di Arduino ci sono quei reference, nella Toolchain Atmel non ci sono, io avevo fatto la ricerca nel IDE modificato per il 328PB, dove ho messo la toolchain Atmel.
Tocca provare le funzioni eeprom delle avrlibc con Atmel Studio 7 e verificare se funzionano con il 328PB, se è così tocca capire perché.
Scientia potentia est

astrobeed

... ci sarà da fidarsi ? ? ?
Bella domanda, speriamo che Atmel rilasci una toolchain comprensiva del 328PB senza dover usare l'update per Atmel studio da cui recuperare i file mancanti/modificati, solo in questo modo si può essere tranquilli (forse).
Scientia potentia est

gpb01

#320
Mar 09, 2016, 06:58 pm Last Edit: Mar 09, 2016, 06:58 pm by gpb01
... ottimo ... mi sembra contenga SOLO cose relative alla eeprom (guardando dentro) ... ::)
NO, contiene anche altre cose, ma NON mi sembra che nessuna sia particolarmente legata all'HW ...
... manipolazione strighe, malloc, random, ecc.

Qualcuno vede cose particolari ? ? ?

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

Puoi sperimentare anche la libreria SPI (https://hackaday.io/project/9313-uino-mini-super-atmega328pb). La Wire non è completa.
Paolo, ho un problema ... magari mi manca un pezzo ...
... ho sostituito la SPI con quella ch mi hai indicato ed ho lanciato la compilazione di un loro esempio, ma pare che non riconosca il nome di alcuni registri :

Code: [Select]
/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware" -tools "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/tools-builder" -tools "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr" -built-in-libraries "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/libraries" -libraries "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/portable/sketchbook/libraries" -fqbn=arduino:avr:atmega328pb:speed=16mhz -ide-version=10607 -build-path "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp" -warnings=default -prefs=build.warn_data_percentage=75 -verbose "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino"
/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/arduino-builder -compile -logger=machine -hardware "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware" -tools "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/tools-builder" -tools "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr" -built-in-libraries "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/libraries" -libraries "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/portable/sketchbook/libraries" -fqbn=arduino:avr:atmega328pb:speed=16mhz -ide-version=10607 -build-path "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp" -warnings=default -prefs=build.warn_data_percentage=75 -verbose "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328pb -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/variants/atmega328pb" "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp" -o "/dev/null"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328pb -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/variants/atmega328pb" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI" "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp" -o "/dev/null"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328pb -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/variants/atmega328pb" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI" "/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI/SPI.cpp" -o "/dev/null"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328pb -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/variants/atmega328pb" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI" "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp" -o "/dev/null"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328pb -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/variants/atmega328pb" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI" "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp" -o "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/preproc/ctags_target_for_gcc_minus_e.cpp"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/tools-builder/ctags/5.8-arduino5/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/preproc/ctags_target_for_gcc_minus_e.cpp"
"/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os  -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328pb -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/variants/atmega328pb" "-I/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI" "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp" -o "/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp.o"
In file included from /Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/avr/include/avr/io.h:99:0,
                 from /Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/tools/avr/avr/include/avr/pgmspace.h:88,
                 from /Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:28,
                 from /var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/build324525c4bd877f21735c2c858a009659.tmp/sketch/BarometricPressureSensor.ino.cpp:1:
/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI/SPI.h: In member function 'void SPISettings::init_AlwaysInline(uint32_t, uint8_t, uint8_t)':
/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI/SPI.h:109:17: error: 'SPE0' was not declared in this scope
      spcr = _BV(SPE0) | _BV(MSTR0) | ((bitOrder == LSBFIRST) ? _BV(DORD0) : 0) |
                 ^
/Users/gpb01/Desktop/ATmega328PB/Arduino 328PB.app/Contents/Java/hardware/arduino/avr/libraries/SPI/SPI.h:109:29: error: 'MSTR0' was not declared in this scope
      spcr = _BV(SPE0) | _BV(MSTR0) | ((bitOrder == LSBFIRST) ? _BV(DORD0) : 0) |
                             ^

... e prosegue così per molte righe dando errore su tutti i vari registri ... che mi sono perso per strada ? ? ?

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

... ed in effetti, io quei nomi, dentro ad iom328pb.h di Watterott ... NON li trovo ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed

... ed in effetti, io quei nomi, dentro ad iom328pb.h di Watterott ... NON li trovo ::)
Premesso che il file iom328pb.h è della toolchain Atmel e non di Watterott, c'è il fatto che è leggermente diverso da quello del 328P, in particolare nelle definizioni dei singoli bit dei registri che in alcuni casi non ci sono, p.e. MSTR0 è il bit 4 del registro SPCR0 e in iom328pb non è definito.
Scientia potentia est

gpb01

Aha ... ok ... e ... quindi ?  :smiley-mr-green:

Come mai saltano fuori tutti quegli errori ? Mi sono perso io qualche cosa per strada o ... è un'altro buco della Toolchain 3.5.1 ?

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed

Come mai saltano fuori tutti quegli errori ? Mi sono perso io qualche cosa per strada o ... è un'altro buco della Toolchain 3.5.1 ?
Non l'ho ancora provata, però mi sa tanto che è un errore della libreria che usa quei nomi, probabilmente perché utilizzati nella SPI originale e si sono limitati a sdoppiare le cose con l'aggiunta di 0 e 1 ai nomi (ipotesi mia da confermare).
Scientia potentia est

gpb01

#326
Mar 10, 2016, 10:45 am Last Edit: Mar 10, 2016, 10:45 am by gpb01
Astro ...
... noto un altra cosa ... tra il file iom328pb.h ed il datasheet del 328PB ci sono delle incongruenze ! Nel file sono riportati alcuni nomi, nel datasheet altri !

Prendi proprio i bit del registro SPCR0 (0x4C) ... e confronta i nomi dei bit che trovi nel file con quelli del datasheet (10/2015) ... a me risultano tutti differenti :o

Non solo, ma mi spieghi il valore HEX che si trova sul file iom328pb.h tra parentesi ? Perché NON corrisponde all'Offset del registro come da tabella a pagina 413 del datasheet ... ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed

#327
Mar 10, 2016, 10:58 am Last Edit: Mar 10, 2016, 10:58 am by astrobeed
Astro ...
... noto un altra cosa ... tra il file iom328pb.h ed il datasheet del 328PB ci sono delle incongruenze ! Nel file sono riportati alcuni nomi, nel datasheet altri !
Credo di aver capito cosa hanno fatto in Atmel, per i nomi dei singoli bit hanno omesso il numero 0 o 1, in pratica sia per SPCR0 e SPCR1 si possono usare i simbolici dei singoli bit, p.e. MSTR, come indice dello stesso, ovviamente tramite operazione di shift o mascheratura.
Certo che il fatto che gli address usati sono diversi tra datasheet e file .h è preoccupante, più tardi faccio qualche prova con Atmel Studio 7 per vedere se la SPI 1 e 0 funzionano realmente, tocca verificare se c'è una errata corrige del datasheet, o una edizione più recente.
Si potrebbe risolvere la cosa, per Arduino, con delle #undef e mettere le #define attese dalla libreria standard.
Scientia potentia est

astrobeed

#328
Mar 10, 2016, 11:06 am Last Edit: Mar 10, 2016, 11:07 am by astrobeed
Sono andato a verificare a cosa corrisponde l'address 0x2C, usato dalla SPI nel file .h, sul datasheet e mi dice che è PORTE.
Nel file .h PORTE è 0x0C, dato che PORTE ho già verificato che funziona perfettamente, sia come quattro GPIO che come due ADC e due GPIO, mi sa tanto che è il data sheet ad essere sbagliato.
Scientia potentia est

gpb01

#329
Mar 10, 2016, 11:19 am Last Edit: Mar 10, 2016, 11:23 am by gpb01
.... mi sa tanto che è il data sheet ad essere sbagliato.
Siamo messi bene ... :smiley-confuse: :smiley-confuse: :smiley-confuse:

Mi sa che per cose come SPI, TWI e simili ... tocca aspettare una nuova revisione del datasheet o della toolchain perché al momento non si capisce un bel nulla e nulla corrisponde ... ::)

Guglielmo

P.S.: Il datasheet è sempre quello del 10/2015 ... nessun nuovo aggiornamento :(
Search is Your friend ... or I am Your enemy !

Go Up