Go Down

Topic: Topic permanente di programmazione newbie (Read 124798 times) previous topic - next topic

brainbooster

Quote
@ BB: cioè? hai il sito ufficiale perché te la sei dovuta recuperare da un sito giapponese? smiley-eek

perchè è diverso, per esempio quell'avrdude ha la modalità auto per l'autoriconoscimento dei micro, più altre cosette interessanti come serjtag, bitbang ecc..

astrobeed


perché so un po' di giapponese   :D ....


Per il Giapponese parlato un minimo di comprensione l'ho raggiunta a furia di guardare anime in versione originale con i sub, adesso qualche parola riesco a capirla anche senza leggere  :)
Scientia potentia est

brainbooster

è vero anche nel mio caso naruto docet  :smiley-yell: per lo scritto c'è san google ( o google san  :smiley-mr-green:) .

astrobeed


FUNZIONA! con i fuse settati correttamente per il clock interno a 1Mhz, i tre led del mio ISP Programmer lampeggiano a ritmo di 1 secondo, nessun errore, nessuna difficoltà, GRANDI! Se vi serve qualche altra prova di conferma, fattibile, chiedete tranquillamente. :)


Ottimo, a questo punto tocca scrivere una piccola guida su come effettuare l'upgrade del compilatore all'ultima versione di AvrWin e postarla su un topic dedicato.

Scientia potentia est

menniti



FUNZIONA! con i fuse settati correttamente per il clock interno a 1Mhz, i tre led del mio ISP Programmer lampeggiano a ritmo di 1 secondo, nessun errore, nessuna difficoltà, GRANDI! Se vi serve qualche altra prova di conferma, fattibile, chiedete tranquillamente. :)


Ottimo, a questo punto tocca scrivere una piccola guida su come effettuare l'upgrade del compilatore all'ultima versione di AvrWin e postarla su un topic dedicato.


Se sono i passaggi che mi hai detto di fare (installazione e sost.ne di cartelle salvando l'etc), e considerando che la parte relativa ad AVRDUDE.CONF ed al core riguarda solo l'uso del 4313, davvero non serve fare una guida; basta aprire un Topic e spiegare in due parole i passaggi; se vuoi ci penso io (citando i diritti d'autore, naturalmente :D $))
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

astrobeed


se vuoi ci penso io (citando i diritti d'autore, naturalmente :D $))


Se hai voglia di farlo per me va benissimo, io divento molto pigro quando c'è da preparare documentazione  :D
Scientia potentia est

menniti



se vuoi ci penso io (citando i diritti d'autore, naturalmente :D $))


Se hai voglia di farlo per me va benissimo, io divento molto pigro quando c'è da preparare documentazione  :D

Ok, ma ci metto un paio di minuti, semmai poi intervieni per vedere se è il caso di specificare qualcosa.....
Sono riuscito a leggere il lock_bit in modalità HVPP, almeno credo, visto che seguendo la procedura mi restituisce in HEX il valore 0xFF che credo corrisponda all'11 che mi aspettavo (lock bit NON programmati); anche la relativa scrittura è abbastanza facile e ormai anche quella in HVSP, ormai che ho capito il meccanismo di qtutto quel bordello di passaggi, tutto sta nello scrivere le righe XD
Però ora sono stanco e questo è un lavoro che per me richiede mente freschissima, non voglio mettere in piedi un lager per mcu ATMEL :smiley-eek-blue: Comunque penso di implementare almeno i due lock_bit generali, la sub-gestione di area applicativi e area bootloader davvero mi rompe; però ti chiedo di dare un'occhiata al reference per confermarmi che posso tranquillamente sbloccarli, in un modo (HV) o nell'altro(chip_erase); non vorrei davvero piazzare sta cintura di castità a qualche micro per poi accorgermi di non avere la chiave :smiley-roll-sweat:
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

astrobeed


Se ho ben capito, una volta bloccati i lock bit generali non è possibile neppure variare i valori dei fuse, oltre che quelli dei lock bit specifici; infatti c'è una


Si, una volta attivati i lock bits non puoi più tornare indietro e non puoi nemmeno modificare i fuse perché il livello minimo è proprio la protezione in scrittura.
Per rimuovere i lock bit puoi usare solo il comando erase, non c'è programmazione HV che tenga.
Scientia potentia est

menniti



Se ho ben capito, una volta bloccati i lock bit generali non è possibile neppure variare i valori dei fuse, oltre che quelli dei lock bit specifici; infatti c'è una


Si, una volta attivati i lock bits non puoi più tornare indietro e non puoi nemmeno modificare i fuse perché il livello minimo è proprio la protezione in scrittura.
Per rimuovere i lock bit puoi usare solo il comando erase, non c'è programmazione HV che tenga.


Io le procedure di chip_erase le ho già implementate con successo, spariscono i blink che è una bellezza sia in HVPP che in HVSP, quindi posso stare tranquillo che una volta bloccati i lock_bit se do' un chip erase tornano su 11?

Il Topic sul compilatore è aperto serve il Suo regal imprimatur, Sua Realtà :D
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

astrobeed


quindi posso stare tranquillo che una volta bloccati i lock_bit se do' un chip erase tornano su 11?


Yes.
Scientia potentia est

menniti

Bene, la notte porta consiglio, poco saggio secondo me, ma ormai è fatta (si fa per dire....).
Allora appena identifico il micro mediante signature leggo anche i fuse ed i lock bit e mostro tutto a video; nel menu principale (ce ne faremo di risate con l'LCD reale :smiley-eek-blue:), oltre al tipico fine lavoro (potrebbero essere sufficienti le info mostrate) ho previsto il ripristino dei fuse di default, la programmazione personalizzata dei fuse, il chip erase ed ora aggiungerò anche la mcu protection (nome temporaneo), che farà apparire una domanda per scegliere tra read_lock e read-write_lock; inutile aggiungere lo sblocco perché tanto non funziona; come chiarito da Astro l'unico modo possibile per sbloccarli è il chip erase.
Però non so quanto tempo mi leva tutta questa cosa, quindi oggi mi metto a scrivere l'articolo della prima parte hw, visto che per settimana prossima devo consegnarlo e poi mi dedicherò nuovamente al firmware.
Intanto se avete idee e suggerimenti scirvete tranquillamente, ovvio che faccio filtro, ma magari c'è qualcosa su quanto già fatto...
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

menniti

#311
Apr 05, 2012, 06:35 pm Last Edit: Apr 05, 2012, 06:53 pm by Michele Menniti Reason: 1
Quando devo programmare i fuse scrivo i valori sul serial monitor; ho notato che la procedura è case sensitive e a me non va bene, vorrei poter scrivere i valori dia in minuscolo che in maiuscolo ottenendo che alla fine diventino maiuscoli; ai miei tempi :smiley-red: mi pare che sommavo in basic 32 al minuscolo per ottenere il maiuscolo, poi uscirono comandi specifici come ucase e lcase, ma qui?

EDIT: ho risolto, disponevo di una funzione di conversione da HEX a numero, mi è bastato aggiungere le minuscole :)
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

ratto93

Se non hanno cambiato il codice ASCII l'altro giorno dovrebbe funzionare allo stesso modo  XD
Se corri veloce come un fulmine, ti schianterai come un tuono.

menniti

#313
Apr 05, 2012, 07:17 pm Last Edit: Apr 05, 2012, 07:29 pm by Michele Menniti Reason: 1

Se non hanno cambiato il codice ASCII l'altro giorno dovrebbe funzionare allo stesso modo  XD

No, l'ho dovute aggiungere le minuscole e trattarle come le maiuscole, comunque è ok. Invece:
Code: [Select]
while (Serial.available() == 0);   // aspetta il primo carattere
 
  serbuffer[0] = Serial.read();   

tra queste due righe voglio mettere un controllo per rifiutare i caratteri che non rientrano nei range 0÷9 e A/a÷F/f, altrimenti la conversione esadecimale mi dà risultati sconvolgenti. Come posso fare?

In pratica devo poter accettare solo i caratteri con valore decimale tra 48 e 57 (0-9), tra 65 e 70 (A-F) e tra 97 e 102 (a-f); se il carattere rientra in questi range allora esegue la riga successiva, caricando il valore nel buffer, altrimenti dovrebbe restare in attesa del carattere come se non fosse stato premuto alcun tasto.
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

brainbooster

(spazio permettendo) si poteva anche convertire tutto in striga e usare gli appositi operatori
http://arduino.cc/en/Tutorial/StringCaseChanges

Go Up