Pages: 1 2 [3] 4 5 ... 11   Go Down
Author Topic: Core Atmega 644P 1284P  (Read 6751 times)
0 Members and 1 Guest are viewing this topic.
MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La piedi natura a memoria mia passa per io.h che poi per il chip specifico viene prelevata da iom1284.h (basta aprire e leggere io.h).
La seriale suppongo Che ne vada di conseguenza,perlomeno la Serial, la 1 2 e compagnia bella non le ho provate.
Anche Il timer funziona,perlomeno quello usato da delay, altrimenti non avrebbe funzionato il blink.
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@nik77:
Siccome mi suona strano che ci siano in circolazione diversi core da aggiungere all'IDE di Arduino per supportare il 1284, se, come dici tu, basta creare una scheda nel file boards.txt per fare andare tutto, potresti per favore darci ciò che hai aggiunto al tuo boards.txt nei tuoi test?
Logged


MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora, i test che ho fatto oggi consistono in questo:
Preso ide arduino 1.0.1, creata una entry in boards.txt che avesse come build.core=arduino e come build.mcu=atmega1284p e come build.variant=standard
Avviato ide arduino, preso sketch blink e modificato aggiungendo Serial.begin(57600) su setup e Serial.println("bing") tra lo spegnimento e l'accenzione del led dello sketch penso più famoso del mondo.
Prelevato il file hex dalla cartella temporanea creata, caricato nel simulatore (non faccio nomi ma non il giocattolo), collegato un virtual terminal al 1284p ed un analizzatore di segnali avviata la simulazione e ottenuto onda quadra ad 1 hz e messaggi bing che popolavano lo schermo del virtual terminal.
Spero di essere stato abbastanza chiaro.

Ora veniamo alle cose serie.
Mi sono preso uno dei famosi core che dovrebbero fare il mestiere di supportare il famoso atmega1284p.(QUESTA)
Analizzando il codice di tutti i file ho riscontrato che vi sono in molti file differenze illusorie, ovvero righe di codice scritte in maniera diversa ma che alla fine danno lo stesso risultato.
Vi sono anche differenze che non sono illusorie, e ho riscontrato anche che nelle librerie dedicate al 1284p vi sono mancanze (es. in quella che ho io non è definita la costante INPUT_PULLUP, forse perchè  è derivata da una versione arduino core più vecchia).

Alcune cose mi hanno incuriosito, e ve le riporto sotto :

File Arduino.h
Nel codice arduino core
 extern const uint16_t PROGMEM port_to_mode_PGM[];

Nel codice 1284p   core
 extern const uint16_t port_to_mode_PGM[];

File Wstring.h
Nel codice arduino core
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal)))

Nel codice 1284p   core
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))

File Print.cpp
Nel codice arduino core
size_t Print::print(const __FlashStringHelper *ifsh)
{
  const char PROGMEM *p = (const char PROGMEM *)ifsh;
  size_t n = 0;
  while (1) {
    unsigned char c = pgm_read_byte(p++);
    if (c == 0) break;
    n += write(c);
  }
  return n;
}

Nel codice 1284p   core
size_t Print::print(const __FlashStringHelper *ifsh)
{
  const char *p = (const char PROGMEM *)ifsh;
  size_t n = 0;
  while (1) {
    unsigned char c = pgm_read_byte(p++);
    if (c == 0) break;
    n += write(c);
  }
  return n;
}

Alla fine secondo me si riduce tutto a questo, ma perchè manca PROGEMEM??

e questo è quanto.

Anche wiring_analog.h sembra contenere sostanziose differenze ma se si analizza bene il flusso logico del codice (e se non ho le travecole) è praticamente lo stesso funzionamento.
Ora datemi il tempo di indossare il casco e la tuta che sono pronto a ricevere tutte le vostre mazzate!!


P.S. poi di interessante ho letto pure QUESTO
« Last Edit: October 08, 2012, 05:17:58 pm by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Parto dal fondo: perché non hanno usato PROGMEM? Perché, secondo me, sul 1284 è una cosa meno necessaria rispetto al 328. Quest'ultimo ha 2 kB di SRAM, il primo ne ha ben 16. Quindi capisci come occupare qualche byte sul 328 abbia un peso maggiore rispetto al 1284. L'accesso alla Flash comporta poi operazioni maggiori rispetto alla normale gestione delle variabili in RAM.

Questione core. Io personalmente con l'IDE 1.0.1 ho usato proprio il core che hai linkato. Ma se, come dici tu, la toolchain Avr supporta di suo il 1284p, mi spieghi il motivo per cui tutti usano core alternativi? Secondo me risiede nel modo in cui l'IDE gestisce le informazioni sui vari core. Ad esempio, prova ad usare un pin PWM oppure utilizza un interrupt, per capire se tutto fila liscio con il sistema che hai detto di usare tu. Io al momento non posso sperimentare (adesso sono al lavoro ma anche oggi a casa sono bloccato perché ho tutte le breadboard occupate da altre cose).
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 415
Posts: 11996
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La spiegazione di Leo riguardo la questione PROGMEM mi sembra assolutamente plausibile; i test di Niki sono certamente attendibili (togliti pure il casco smiley-mr-green), però giustamente potremmo essere ancora nel campo delle similitudini tra il 1284P ed il 328P. Quindi una prova importante consiste appunto nell'usare quei "segnali" che il 328P NON ha: p.es. i timer aggiuntivi, i pwm aggiuntivi, i pin ADC e DIGITALI aggiuntivi, le seriali hw aggiuntive. Ecco forse il core "esterno" si rende necessario per tutte queste funzioni. Se così non fosse direi che Niki77 ha fatto una scoperta coi zz, che ci permetterebbe di riprendere un discorso lasciato in stand-by un po' di mesi fa. Ma sono prove che vanno fatte ed anch'io, ormai in piena attività UNI, sono inguaiato, quindi o Niki o morte smiley-grin!
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6626
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

File Wstring.h
Nel codice arduino core
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal)))

Nel codice 1284p   core
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
Questa è una correzione effettuata a causa di un bug nel core più recente --> http://code.google.com/p/arduino/issues/detail?id=866&can=1&q=__FlashStringHelper
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@Paolo:
non la sapevo questa  smiley-wink
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6626
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Paolo:
non la sapevo questa  smiley-wink

Tranquillo... di maniaco che va a splulciare tutte le issue solo per curiosità ne basta uno.  smiley-roll-blue
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

File Wstring.h
Nel codice arduino core
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal)))

Nel codice 1284p   core
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
Questa è una correzione effettuata a causa di un bug nel core più recente --> http://code.google.com/p/arduino/issues/detail?id=866&can=1&q=__FlashStringHelper

Questa si che è interessante... ora il cerchio è praticamente chiuso.  smiley-cool

Quote

La spiegazione di Leo riguardo la questione PROGMEM mi sembra assolutamente plausibile;


plausibilissima ma da me non condivisa, se miri a fare un core quanto più simile come comportamento all'originale non puoi fare una cosa diversa perchè ti fa comodo !

Per il resto se non vi arrendete nemmeno davanti all'evidenza bhe, vi lascio pure tutto il tempo di sperimentare di persona, quando avrete tempo e con comodo, tanto per me non c'è altro da chiarire !  smiley-mr-green





Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21669
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Di evidente ci sono solo le tue parole scritte su un forum  smiley-wink
A parte gli scherzi, hai giustamente detto tu che non siamo qui per litigare. Cerco solo di capire com'è che tutti si sbattono per scrivere un core quando poi l'IDE supporta il 1284 attraverso la toolchain Avr. Se così fosse allora qualunque micro Atmel potrebbe essere programmato tramite l'IDE semplicemente creando la relativa board?
Hai provato con i Tiny, senza usare il core Tiny? Osservando il core Arduino ho spesso incontrato diverse volte definizioni per i Tinyx5 e Tinyx4.
Cmq mi pare troppo facile per essere vero. Ma siccome io provo tutto, appena posso voglio replicare il tuo esperimento.
Logged


MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Di evidente ci sono solo le tue parole scritte su un forum  smiley-wink
E ti pare poco?  smiley-mr-green smiley-mr-green

Cerco solo di capire com'è che tutti si sbattono per scrivere un core quando poi l'IDE supporta il 1284 attraverso la toolchain Avr
Mhh forse perchè prima della 1.0.1 quel supporto non c'era?
Comunque stai facendo confusione tra toolchain e core di arduino .

Se così fosse allora qualunque micro Atmel potrebbe essere programmato tramite l'IDE semplicemente creando la relativa board?
Hai provato con i Tiny, senza usare il core Tiny? Osservando il core Arduino ho spesso incontrato diverse volte definizioni per i Tinyx5 e Tinyx4.
No , non qualunque micro Atmel, tra loro alcuni sono profondamente diversi quindi non generaliziamo, ma potenzialmente tutti i micro che hanno gli stessi timer alla stessa risoluzione e supportano le stesse feature utilizzate nel core , ma in tutti i casi NON senza effettuare modifiche.
Quello che vorrei farti capire è che non è per magia che il 1284p funziona con il core di arduino originale, ma perchè qualcuno ci ha messo le mani per farlo funzionare!


P.S. MA PERCHè non ve ne nnate a ff........ !!! smiley-eek

LINK

LEGGERE NOOO???  smiley-mr-green

« Last Edit: October 09, 2012, 09:33:42 am by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 415
Posts: 11996
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Niki, sei una persona in gamba, ma ogni tanto ti scappa la lingua, la perfezione non è di questa terra; mi pareva di aver chiesto una cosa diversa dalla risposta che ho ottenuto, che comunque mi farò bastare, non vorrei doverne fare due di viaggi smiley-sweat

Leo, visto il cortese ed accorato invito di Niki, che dici, partiamo assieme? così gli si manda una cartolina....smiley-grin

Bene, io non sono in condizioni di continuare la discussione perché non ho le competenze, pensavo di aver sollevato una questione importante, ma a quanto pare ho detto una minch..., allora continuo a seguire con interesse e, quando sarà possibile, farò qualche prova visto che la cosa mi interessa. Grazie smiley
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Michele ma il vaffa era gratis!
Mi dispiace che ti sei offeso, ma mi si sono svegliate cosi tante madonne appena ho trovato quella issue...
Vado dietro la lavagna ...
smiley-zipper
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 415
Posts: 11996
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Michele ma il vaffa era gratis!
Mi dispiace che ti sei offeso, ma mi si sono svegliate cosi tante [] appena ho trovato quella issue...
Vado dietro la lavagna ...
smiley-zipper
non mi sono offeso, tant'è che ho deciso di partire smiley-wink e di quella issue non c'ho capito niente; ho solo voluto dire che il livello dei miei dubbi è troppo più basso di quello delle tue risposte, quindi non capisco se i miei dubbi sono dissipati o meno, e siccome stai già interloquendo con uno con cui ti puoi capire, semplicemente aspetto la fine della discussione per rifare le stesse domande a lui che, conoscendomi meglio di te, sa come rispondermi.
Una metafora per spiegarmi meglio: io non so cucinare e sto aspettando che sia pronto un uovo bollito, chiedo a mia moglie se è pronto e lei mi risponde "è sul fuoco da 6 minuti", che per me non significa niente mentre per lei significa tutto, le sarebbe bastato rispondermi (forse, non so cucinare sul serio smiley-mr-green) "tra 1 minuto è pronto" ed a me avrebbe levato il dubbio. Scusa se ti ho paragonato a mia moglie ma non sapevo come peggio offenderti per vendicarmi smiley-yell scherzo smiley-lol
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Certo però Michele che la metafora dell'uovo bollito col tuo avatar....

Fammi strare zitto và   smiley-yell  smiley-yell
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Pages: 1 2 [3] 4 5 ... 11   Go Up
Jump to: