Pages: 1 ... 14 15 [16] 17 18 ... 25   Go Down
Author Topic: programmare il 644 ... ma come????  (Read 15822 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gli do un'occhiata.
Logged


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

ottimo 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

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

Operazioni eseguite dal main del file optiboot.c (versione 4.5 di maniacbug):

1) resetta un paio di registri
2) controlla se il reset è avvenuto per cause esterne (quindi reset per alimentazione assente). In questo caso il chip è stato avviato per la prima volta e viene eseguito lo sketch, saltando il bootloader. Ciò è confermato dal fatto che nel momento in cui si da alimentazione al 1284P, il led sul pin 2 non lampeggia ma lampeggia solo alle successive pressioni del pulsantino di reset
3) se deve far lampeggiare il led, imposta il timer 1 con prescale /1024 (verrà usato come fonte di tempo)
4) se non è definito il flag SOFT_UART, imposta la modalità DOUBLE SPEED per la seriale (la SOFT UART è descritta nell'Application Note AVR305 di Atmel, ma non è il nostro caso).
5) imposta il watchdog per triggerare dopo 500 ms (anche se il valore scelto in realtà direbbe 1s... boh..)
6) imposta il pin del led come output
7) se si usa la SOFT UART, imposta TX come output
8 ) se deve far lampeggiare il led, esegue i lampeggi di saluto
9) ora entra in un ciclo infinito:
9.a) preleva un carattere dalla seriale
9.b) controlla se è il comando di lettura versione (STK_GET_PARAMETER): nel caso spedisce indietro la versione dell'Optiboot
9.c) controlla se è il comando di SET DEVICE (STK_SET_DEVICE): nel caso lo ignora
9.d) controlla se è il comando di SET DEVICE EXT (STK_SET_DEVICE_EXT): nel caso lo ignora
9.e) controlla se è il comando di LOAD ADDRESS (STK_LOAD_ADDRESS): nel caso carica il nuovo indirizzo
9.f) controlla se è il comando di UNIVERSAL (STK_UNIVERSAL): nel caso lo ignora
9.g) controlla se è il comando di SCRITTURA SU FLASH (STK_PROG_PAGE): qui entra in una funzione che carica i dati e poi li scrive nella pagina indicata
9.h) controlla se è il comando di LETTURA DA FLASH (STK_READ_PAGE): qui entra in una funzione che legge la pagina indicata e la spedisce indietro
9.i) controlla se è il comando di LETTURA SIGNATURE (STK_READ_SIGN): qui entra in una funzione che legge la firma e la rispedisce indietro
9.j) controlla se è il comando di USCITA DALLA PROGRAMMAZIONE (STK_LEAVE_PROGMODE): setta il watchdog per 16 ms per far resettare il micro
9.k) per tutti gli altri comandi, risponde un generico "OK" non considerando ciò che riceve
Logged


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

Gran bel lavoro Leo, ora però mi dovresti aiutare nell'interpretazione. Quali sono i passaggi che esegue il bl quando:
1 - micro collegato al Convertitore, collego la porta USB e dò alimentazione (ti confermo che non c'è reset)
2 - apro uno sketch sull'IDE e lo invio al micro (ti confermo che questa operazione inizia con un reset)
vedo i lampeggi del LED sul pin 2, a seguire solo tre lampeggi del TX del convertitore (quello collegato all'rx del micro).
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

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

Gran bel lavoro Leo, ora però mi dovresti aiutare nell'interpretazione. Quali sono i passaggi che esegue il bl quando:
1 - micro collegato al Convertitore, collego la porta USB e dò alimentazione (ti confermo che non c'è reset)
Deduco che arrivi l'alimentazione dal convertitore, giusto?
Allora il punto in questione è il (2). Il registro MCUSR del microcontrollore registra la causa del reset.
Se il riavvio è dovuto ad una causa esterna, viene lanciato lo sketch utente. Il primo avvio ricade in questo caso.
Quindi, collegando il convertitore ma non programmando, il bootloader salta al programma senza mettersi in ascolto sulla seriale.

Quote
2 - apro uno sketch sull'IDE e lo invio al micro (ti confermo che questa operazione inizia con un reset)
vedo i lampeggi del LED sul pin 2, a seguire solo tre lampeggi del TX del convertitore (quello collegato all'rx del micro).
In questo caso il bootloader continua dal punto 3).
Fa quindi lampeggiare i led, apre la seriale e si mette in ricezione.
Le operazioni che seguono sono in risposta ai comandi che il bootloader riceve da avrdude.

Servono altri dettagli?
Logged


0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 2795
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Allora il punto in questione è il (2). Il registro MCUSR del microcontrollore registra la causa del reset.
Se il riavvio è dovuto ad una causa esterna, viene lanciato lo sketch utente. Il primo avvio ricade in questo caso.
Quindi, collegando il convertitore ma non programmando, il bootloader salta al programma senza mettersi in ascolto sulla seriale.

Il problema potrebbe essere legato al fatto che non riesce a distinguere la causa del reset e passi sempre e comunque ad eseguire codice utente.
Potrebbe?

Ciao
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

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

Quote
Allora il punto in questione è il (2). Il registro MCUSR del microcontrollore registra la causa del reset.
Se il riavvio è dovuto ad una causa esterna, viene lanciato lo sketch utente. Il primo avvio ricade in questo caso.
Quindi, collegando il convertitore ma non programmando, il bootloader salta al programma senza mettersi in ascolto sulla seriale.

Il problema potrebbe essere legato al fatto che non riesce a distinguere la causa del reset e passi sempre e comunque ad eseguire codice utente.
Potrebbe?

Ciao
Non credo. Perché quando l'Atmega8U2 spedisce il segnale di reset al chip, il led di stato lampeggia, segno che il bootloader ha letto correttamente il registro. D'altronde, stiamo parlando dell'Optiboot, è lo stesso montato sull'Atmega328, corretto per poter gestire Flash con dimensioni superiori ai 64 kB.
Logged


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

Sì, in queste prove standard l'alimentazione viene dal convertitore, proveniente dall'USB.
Confermo che quando faccio l'upload il reset avviene perché lampeggia il LED messo sul pin 2 del micro, proprio per tale verifica, cosa che non succede all'accensione.
Vorrei sapere questo: posto che tu trovi riscontro in quello che "racconto" seguendo il tuo schema sequenziale, secondo te, nel momento in cui il micro preleva il primo carattere dalla seriale , non dovrebbe chiederglielo?? cioè non dovrei vedere lampeggiare il LED RX del convertitore, segno che il micro sta chiedendo qualcosa? Come sai scrivo da casa, dove non ho nulla per fare prove, poi tutto ciò che esce dalle discussioni diventa oggetto di prova e verifica. Vorrei che tu verificassi il 644 (che lavora senza filtro da te) per darmi conferma di questa cosa, anche se forse i LED di Arduino sono siglati lato micro e non lato 8u2, verifica tu.
In pratica dopo il lampeggio del LED 2 mi aspetterei un flash del led rx del convertitore, seguito da un flash del led tx, e poi tutta la "discussione" con entrambi che lavorano ininterrottamente.
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

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

Michele, te porti male  smiley-lol
Oggi senza filtro RC non riesco a programmare il mio Atmega644P.  smiley-twist

Vabbè.... andiamo avanti  smiley-sweat

Vorrei sapere questo: posto che tu trovi riscontro in quello che "racconto" seguendo il tuo schema sequenziale, secondo te, nel momento in cui il micro preleva il primo carattere dalla seriale , non dovrebbe chiederglielo?? cioè non dovrei vedere lampeggiare il LED RX del convertitore, segno che il micro sta chiedendo qualcosa? Come sai scrivo da casa, dove non ho nulla per fare prove, poi tutto ciò che esce dalle discussioni diventa oggetto di prova e verifica. Vorrei che tu verificassi il 644 (che lavora senza filtro da te) per darmi conferma di questa cosa, anche se forse i LED di Arduino sono siglati lato micro e non lato 8u2, verifica tu.
In pratica dopo il lampeggio del LED 2 mi aspetterei un flash del led rx del convertitore, seguito da un flash del led tx, e poi tutta la "discussione" con entrambi che lavorano ininterrottamente.
Premetto: mi baso su cosa faccia l'Atmega8U2 perché i led dell'Arduino UNO sono pilotati da questo chip.
Detto questo, il bootloader non chiede i dati sulla seriale, semplicemente si mette in attesa. Se arriva qualcosa, lo interpreta. Altrimenti se non arriva nulla il watchdog provvederà al timeout, cioè all'uscita dopo tot periodo senza nulla con un bel reset. Questo lo verifico perché premendo il reset e resettando l'Atmega644P, il led RX sull'Arduino non lampeggia, segno che il bootloader verso il chip non invia nulla.

Questa è la mia analisi dei dati, attendo ora le tue conclusioni.  smiley-wink
Logged


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

Leuccio mio smiley-kiss non ti farei del male nemmeno se tu fossi l'ultimo ostacolo tra me e la Bellucci (sono sicuro che ti scanseresti di tuo smiley-twist)
Se ti può consolare ti ricordo che la mia prima vittima sono me stesso smiley-cool, quindi non chiedermi che ti succede, ma se non hai dimenticato qualcosa, ciò che ti accade non è altro che la prova dell'inaffidabilità di questa comunicazione....
Conclusioni? secondo ciò che dici tutto va bene ed invece non va bene nulla.
Per cui a questo punto, avendo molto più chiari (grazie a te smiley-lol) i meccanismi del dialogo, non mi resta che collegare il DSO, appena sarà possibile..., e fotografare i vari momenti dei pin reset, tx e rx, sia sul 644 che sul 1284, con e senza filtro. Un bel servizio da mandare a mamma ATMEL per farle vedere i sui figlioli quanti capricci fanno, sperando ci capiscano qualcosa, maremma seriale smiley-twist smiley-twist smiley-twist
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

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

Leuccio mio smiley-kiss non ti farei del male nemmeno se tu fossi l'ultimo ostacolo tra me e la Bellucci (sono sicuro che ti scanseresti di tuo smiley-twist)
Manco morto!  smiley-evil

Quote
Se ti può consolare ti ricordo che la mia prima vittima sono me stesso smiley-cool, quindi non chiedermi che ti succede, ma se non hai dimenticato qualcosa, ciò che ti accade non è altro che la prova dell'inaffidabilità di questa comunicazione....
Conclusioni? secondo ciò che dici tutto va bene ed invece non va bene nulla.
Per cui a questo punto, avendo molto più chiari (grazie a te smiley-lol) i meccanismi del dialogo, non mi resta che collegare il DSO, appena sarà possibile..., e fotografare i vari momenti dei pin reset, tx e rx, sia sul 644 che sul 1284, con e senza filtro. Un bel servizio da mandare a mamma ATMEL per farle vedere i sui figlioli quanti capricci fanno, sperando ci capiscano qualcosa, maremma seriale smiley-twist smiley-twist smiley-twist
Ho deciso, per il mio compleanno mi compro un DSO anch'io... mi sento troppo limitato senza  smiley-sweat
Logged


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

Sarebbe ora! fatti consigliare da Astro smiley-wink ti aggiorno appeno potrò fare prove 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

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

Sarebbe ora! fatti consigliare da Astro smiley-wink ti aggiorno appeno potrò fare prove smiley
A me andrebbe bene un DSO come il tuo, non pretendo strumenti professionali: 1) non saprei come usarli, 2) la moglie mi rincorrerebbe  smiley-yell
Logged


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

Sarebbe ora! fatti consigliare da Astro smiley-wink ti aggiorno appeno potrò fare prove smiley
A me andrebbe bene un DSO come il tuo, non pretendo strumenti professionali: 1) non saprei come usarli, 2) la moglie mi rincorrerebbe  smiley-yell
smiley-eek-blue GW-INSTEK GDS2064
« Last Edit: January 24, 2013, 12:33:38 pm by Michele Menniti » 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: 103
Posts: 6589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sarebbe ora! fatti consigliare da Astro smiley-wink ti aggiorno appeno potrò fare prove smiley
A me andrebbe bene un DSO come il tuo, non pretendo strumenti professionali: 1) non saprei come usarli, 2) la moglie mi rincorrerebbe  smiley-yell
smiley-eek-blue GW-INSTEK GDS2064

Leo, questo lo compri per te e a tua moglie il Bimby --> http://bimby.vorwerk.it/it/home/  smiley-wink
Il prezzo è il medesimo.  smiley-eek
Logged

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

Pages: 1 ... 14 15 [16] 17 18 ... 25   Go Up
Jump to: