Pages: 1 ... 13 14 [15] 16 17 ... 36   Go Down
Author Topic: Topic permanente di programmazione newbie  (Read 22261 times)
0 Members and 1 Guest are viewing this topic.
Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nuova beta release (1.0.4 beta) del display lcd virtuale scaricabile qui.
Oltre ad avere aggiunto tre nuovi comandi alla libreria, vedere sotto il dettaglio, ho rifatto il parser dei comandi rendendolo più affidabile e versatile, inoltre ora è presente il tasto reset, consente di riavviare a piacere Arduino, vengono azionati sia DTR che RTS, e il tasto info che fornisce la versione e altre informazioni.

Elenco dei comandi supportati:

vLcdInit();      // inizializza la libreria e la porta seriale (115200 bps)
vLcdClear();   // cancella il display e posizione il cursore alla prima colonna della prima riga
vLcdSetCursor (Riga, Colonna);  // posizione il cursore sulla desiderata riga e colonna.
vLcdNoDisplay(); // spegnimento del display (sia caratteri che retroilluminazione)
vLcdDisplay();     // accensione del display
vLcdHome();       // posizione il cursore alla prima colonna della prima riga, non viene cancellato il display

La prossima release sarà la 1.0 definitiva e includerà nuovi comandi.

Sketch di esempio, usa tutti i comandi, è allegato nella cartella examples della libreria.
Code:
#include "vLcd.h"; // Libreria vLcd

void setup()
{
  vLcdInit();  // inizializza la porta seriale (115200 bps)
  vLcdClear(); // cancella display

  Serial.print("12345678901234567890");
  Serial.print("abcdefeghijklmnopqrs");
  Serial.print("prova prova prova pr");
  Serial.print("test test test test");
 
  delay(1000);
  vLcdClear();
  delay(1000);
  vLcdSetCursor (1,3);  // sposta il cursore
  Serial.print("123456789012345678");
  delay(1000);
  vLcdHome();
  Serial.print("test test test test");
  delay(1000);
  vLcdNoDisplay();
  delay(1000);
  vLcdDisplay();
}

void loop()
{
 
}
Logged

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

Bene, bene, io purtroppo con gli esami sono piuttosto incasinato, infatti ancora sono in arretrato con l'erase, ma subito dopo farò un po' di test. Grazie Astro!
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

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

Bene, bene, io purtroppo con gli esami sono piuttosto incasinato, infatti ancora sono in arretrato con l'erase, ma subito dopo farò un po' di test. Grazie Astro!

Ieri sera stavo riflettendo sulla possibile evoluzione del vLcd per renderlo qualcosa di più di una semplice emulazione di un LCD alfanumerico reale con tutte le relative limitazioni.
Tra i vari widget che ho a disposizione per la realizzazione di GUI, cosa che faccio spesso come complemento ai miei lavori, ne ho uno che simula un pannello lcd grafico senza limiti, salvo le dimensioni del monitor, ai pixel che lo compongono, mi consente di utilizzare vari effetti speciali come il blinking di un gruppo di caratteri e/o colorarli a piacere e altre cosette.
Una volta chiuso il discorso vLcd, e mi manca poco per farlo, vorrei usare il pannello grafico per realizzare una sorta di monitor virtuale a colori sul quale scrivere tramite Arduino utilizzando una serie di funzioni di uso immediato che consentono di posizionare a piacere scritte e dati, con tanto di caratteri speciali presenti nel font in uso, cosa non possibile con il widget per gli lcd alfanumerici, e relativi effetti speciali.
In pratica sarà una cosa con comandi simili a vLcd, ma con molte possibilità in più e senza limiti di dimensioni, p.e. sarà possibile organizzarlo come 20 righe da 40 caratteri direttamente da Arduino tramite un apposito comando, in questo modo dovrebbe diventare molto semplice realizzare GUI generiche per Arduino senza dover scrivere una sola riga di codice sul PC, cosa che a molti crea non pochi problemi.

Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 414
Posts: 11987
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: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 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: 39
Posts: 5608
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] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 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: 414
Posts: 11987
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: 313
Posts: 21624
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: 39
Posts: 5608
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] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 414
Posts: 11987
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: 414
Posts: 11987
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: 313
Posts: 21624
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


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