Pages: 1 ... 13 14 [15] 16 17 ... 36   Go Down
Author Topic: Topic permanente di programmazione newbie  (Read 31325 times)
0 Members and 1 Guest are viewing this topic.
Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12573
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E chi ti ferma più? smiley-grin
Nel mio piccoletto ho una buona notizia ed una un pò meno, ma credo rimediabile.

Sono riuscito ad implementare la nuova routine ed ora riesco a far sparire in un istante il blink dal mio 328P smiley-mr-green l'ERASE funziona!!! Ora devo aggiungere il necessario per le altre modalità di programmazione.

invece mi sono accorto che in HVPP il primo fuse che leggo (ho provato ad invertirli, ecco perché sono certo) me lo restituisce in FF anche se in realtà ha un altro valore, che vedo regolarmente se resetto e rileggo; la cosa strana è che la questione è alterna, cioè ad ogni reset una volta lo legge una volta non lo legge; poiché il reset riavvia il firmware ma non cambia i valori memorizzati nel micro ho iniziato una dolorosa ricerca; per ora ho scoperto che se disabilito il comando iniziale (parto per default con la modalità HVSP) SDO=LOW (l'SDO è il RDY in modalità HVSP) il problema svanisce; ho un paio di soluzioni in mente, Vi aggiorno.
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

BG (I)
Offline Offline
Full Member
***
Karma: 0
Posts: 202
Usus plura docet
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eh si, ormai astro non si ferma più, ottima idea sarebbe proprio un grosso aiuto per GUI generiche su PC e per ora fermati qui   smiley-grin
Logged

BG (I)
Offline Offline
Full Member
***
Karma: 0
Posts: 202
Usus plura docet
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E osando di più dotare Arduino di un display standalone non virtuale ma reale, usando uno shield tipo questo:
http://microvga.com/arduino
costa circa 30 dollari
in vga ?   per ora ??
dal virtuale al reale
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 129
Posts: 9494
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E osando di più dotare Arduino di un display standalone non virtuale ma reale, usando uno shield tipo questo:
http://microvga.com/arduino
costa circa 30 dollari

Bell'oggetto, però utilizza cinque pin di Arduino e la libreria è veramente minimale, non la vedo di semplice utilizzo.

Funzioni supportate:

_cputs
_kbhit
_putch
_getch
clrscr
clreol
textbackground
textcolor
gotoxy

Logged

0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5903
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bell'idea sto coso, peccato non sia open
Cmq si puo' usare anche in seriale, quindi solo 2 pin

Code:
Q: Can I use MicroVGA in UART mode?
Answer:
Yes, however we highly recommend using SPI mode for two reasons: UART is usually used for bootloader and the MicroVGA Arduino library uses natively SPI mode.
« Last Edit: March 13, 2012, 05:39:08 am by Testato » Logged

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

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 129
Posts: 9494
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bell'idea sto coso, peccato non sia open

Dipende da cosa intendi per open, è un prodotto finito con un suo datasheet e relativi manuali d'uso, come hardware sopra c'è un video controller a bassa risoluzione e un micro di interfaccia, nulla di strano e visto il costo non ha alcun senso tentare di farselo in casa  smiley
Logged

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

Ultimo aggiornamento per oggi, poi sedute d'esami smiley-twist

Problema lettura FUSES: risolto, ho verificato che il problema esisteva anche nel firmware scritto da mightyohm; in pratica loro ritenevano di poter "impunemente" passare dalla modalità HVSP alla HVPP e viceversa, senza chiudere e reinizializzare i comandi di programmazione; nel loro caso, poiché si svolgeva una sola operazione di lettura e scrittura, dopo aver fornito manualmente tutti gli elementi, il problema si poteva verificare più raramente, da un punto di vista statistico.
Invece il mio firmware si basa tutto sull'automatismo del recupero delle informazioni dal micro; ho risolto mettendo, subito dopo la prima lettura del micro, che mi fornisce anche la modalità specifica di programmazione, una reinizializzazione, nel caso si tratti di HVPP o HVP13 (ricordo che questa sigla l'ho inventata io, in realtà è una variante della HVPP per i tiny a 20pin), invece se il micro è un HVSP, che è il mode di default resta tutto com'è; comunque sto commentando praticamente ogni riga, lo sketch ha fini didattici per Elettronica In, quindi devo proprio spiegarlo passo-passo.

TEST ERASE: i passaggi che mi ha dato Astrobeed provengono dal DS del 328, ho scritto la routine e funziona benissimo in HVPP; ho verificato che dovrò implementare un'ulteriore routine per i tiny 84/85, un po' più complessa, ma dovrei farcela, ormai la lettura di quelle tabelle e la loro traduzione in firmware mi è abbastanza familiare  smiley-lol. Invece dovrei testare l'ERASE sui tiny 2313 e 861, se non ricordo male il core tiny dovrebbe avere almeno i dati del 2313, non so se ha quelli dell'861, ma la differenza tra i due sta solo nella pinature; ormai ho certezza che se funziona con uno funziona anche con l'altro. C'è ancora da lavorare.... smiley-sweat
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: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ha l'861, al momento. Non c'è neanche nella versione 1.0.
Logged


0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5903
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

due domande didattiche, scusa se forse le hai gia' risposte

1- ogni micro puo' avere solo un tipo di programmazione hv, oppure ci sono quelli che la supportano entrambe sp-pp ?
2- l'erase cancella anche la eprom ?

Idee al volo:
1- non so se ci hai pensato, ma io farei un sottomenu' di scelta sull'erase
.. cancella solo flash
.. cancella solo eeprom
.. cancella flash+eeprom
.. cancella solo bootloader (questa e' un'idea nuova  smiley a scopo puramente didattico, la potresti chiamare quick format, perche' cosi' come sugli HD ti perdi il primo carattere del file ma il file e' presente, sul micro ti perderesti il boot, quindi lo sketch non parte, pur essendo presente il programma)

2- si potrebbe fare un menu' di gestione delle protezioni, non ho studiato la materia quindi magari dico sciocchezze, ma si puo' proteggere un micro in secondo momento (proteggere da lettura per non farsi copiare) dopo il caricamento dello sketch ? oppure lo si deve decidere per forza all'inizio ?
Se si puo' fare, sarebbe bello un menu' Anticopia, in qualsiasi momento prendi un micro gia' programmato e lo passi nel rpogrammatore per la protezione
« Last Edit: March 13, 2012, 04:27:11 pm by Testato » Logged

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

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

due domande didattiche, scusa se forse le hai gia' risposte

1- ogni micro puo' avere solo un tipo di programmazione hv, oppure ci sono quelli che la supportano entrambe sp-pp ?
ogni micro richiede un SOLO tipo di programmazione: HVPP o HVSP, poi c'è una variantr dell'HVPP (che io ho ribattezzato HVP13) che serve per i tiny a 20pin

Quote
2- l'erase cancella anche la eprom ?
ovviamente ti riferisci a quella interna, la risposta è: dipende dall'impostazione dei fuse, c'è una combinazione che permette di proteggere l'EPROM durante le operazioni di chip_erase, nei valori di default l'impostazione è Eprom_protected; quindi puoi decidere se cancellare solo la flash o anche l'eprom; le altre modalità che suggerisci come idee sono impraticabili, per quanto ho letto e compreso fino a questo momento.

Quote
ma si puo' proteggere un micro in secondo momento (proteggere da lettura per non farsi copiare) dopo il caricamento dello sketch ? oppure lo si deve decidere per forza all'inizio ?
Se si puo' fare, sarebbe bello un menu' Anticopia, in qualsiasi momento prendi un micro gia' programmato e lo passi nel rpogrammatore per la protezione
non serve un'opzione, tu puoi cambiare il lock bit senza danneggiare il firmware contenuto, quindi credo sia sufficiente caricare il firmware e poi cambiare il lock bit in modo da impostare la protezione dell'area di meomoria flash; il reference spiega che dopo non puoi più riprogrammare  il lock bit, per cambiarlo bisogna fare per forza un chip_erase.
Ho studiato parecchio in questi giorni smiley-wink ma potrei aver scritto qualche inesattezza, considera questa risposta come un chiarimento iniziale da approfondire 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

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

@ Leo: grazie del chiarimento, mi basta il 2313 per le prove.

Stamattina ho dedicato un'oretta al chip_erase HVSP ma il mallitto blink continua a blinkare sine pietatis  smiley-cry stasera al rientro altre prove, domani giornata definitiva, devo chiudere assolutamente, sono troppo in ritardo; tutto il resto (erase HVPP compreso) ora funziona a meraviglia, per essere la mia prima vera programmazione sono estremamente soddisfatto, soprattutto perché ho implementato tantissima roba che lo sketch di riferimento iniziale ora sembra davvero banale al confronto; ma naturalmente è stato fondamentale averlo, non a caso ho riportato nelle note iniziali il doveroso ringraziamento alla mightyohm e le loro note riguardo la licenza.
Per non tacere del grandissimo aiuto che mi avete dato, almeno ho approfittato per imparare, non faccio più errori con le "(", ")" e i ";"  smiley-mr-green
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: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Specifico un paio di cose, approfondendo il discorso cancellazione del micro e protezione.

EEPROM
il bit EESAVE, che protegge la EEPROM funziona solo durante la cancellazione del contenuto del chip ("chip erase") effettuato con la tecnica che sta usando Michele. Puoi sempre forzare da terminale la cancellazione della EEPROM usando l'opzione "-e" di avrdude.

LOCK BIT
ii lock bit si possono modificare senza alterare il contenuto della Flash ma solo in una direzione, ossia si può solo aumentare il fattore di protezione ma non diminuirlo. Quindi se i lock bit sono impostati per permettere la sola lettura ma non la riscrittura (protezione media), è possibile impedire anche la lettura (protezione massima) ma non è possibile disattivare la protezione in scrittura (protezione assente).
Logged


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

Specifico un paio di cose, approfondendo il discorso cancellazione del micro e protezione.

EEPROM
il bit EESAVE, che protegge la EEPROM funziona solo durante la cancellazione del contenuto del chip ("chip erase") effettuato con la tecnica che sta usando Michele. Puoi sempre forzare da terminale la cancellazione della EEPROM usando l'opzione "-e" di avrdude.
lasciando perdere il terminale, è sufficiente cambiare lo stato del bit prima di fare l'operazione di chip_erase, cosa che si fa tranquillamente con l'opzione 2 del mio menu (inserimento fuse personali)

Quote
LOCK BIT
il lock bit si possono modificare senza alterare il contenuto della Flash ma solo in una direzione, ossia si può solo aumentare il fattore di protezione ma non diminuirlo. Quindi se i lock bit sono impostati per permettere la sola lettura ma non la riscrittura (protezione media), è possibile impedire anche la lettura (protezione massima) ma non è possibile disattivare la protezione in scrittura (protezione assente).
grazie per l'approfondimento, il succo quindi resta quello che ho detto, cioè una volta impostato il lock bit per proteggere la flash, l'unico modo per rimbuovere la protezione è fare un chip_erase che rimuove sì la protezione ma contestualmente cancella il contenuto rendendo efficace la protezione.

Invece questa cosa mi ha fatto riflettere sul fatto che mentre l'EESAVE è programmabile via fuse, lo stesso non si può dire del lock bit, mi pare; se è così forse dovrei prevedere l'opzione di variazione del lock bit con una voce tipo "proteggi micro", dite che vale la pena? mannaggia, ste cose sono come le ciliegie, una tira l'altra! smiley-sweat
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: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie per l'approfondimento, il succo quindi resta quello che ho detto, cioè una volta impostato il lock bit per proteggere la flash, l'unico modo per rimbuovere la protezione è fare un chip_erase che rimuove sì la protezione ma contestualmente cancella il contenuto rendendo efficace la protezione.

Invece questa cosa mi ha fatto riflettere sul fatto che mentre l'EESAVE è programmabile via fuse, lo stesso non si può dire del lock bit, mi pare; se è così forse dovrei prevedere l'opzione di variazione del lock bit con una voce tipo "proteggi micro", dite che vale la pena? mannaggia, ste cose sono come le ciliegie, una tira l'altra! smiley-sweat
Come ho detto, puoi modificare i lock bit solo in un verso, ossia per aumentare il livello di protezione.
Potresti prevedere l'opzione, potrebbe essere carina, ma prima io ti consiglio di terminare la parte che hai ancora in fase di sviluppo, per non mettere troppa carne al fuoco.
Logged


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

Se risolvo rapidamente la questione dell'ERASE provo a dargli un'occhiata, altrimenti abbandono proprio l'idea, una volta che chiudo devo scrivere l'articolo e non posso più fare variazioni, tratto il sw come se fosse hw, altrimenti rischio di fare casini; semmai, con tutto il tempo si potrà pensare di proporre una versione 2 con altre implementazioni, vedremo....
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

Pages: 1 ... 13 14 [15] 16 17 ... 36   Go Up
Jump to: