programmare il 644 ... ma come????

... ho acquistato alcuni atmel 644 .. perchè avevo bisogno di più pin...
ho anche acquistato questo:
http://www.ebay.it/itm/1x-ATMEGA328P-PU-Arduino-UNO-USB-2-0-TO-RS232-UART-KIT-ATMEGA328-/221121384301 ... per simulare la porta COM tramite USB ...

ho letto e scaricato questi.... Aggiungere il supporto per gli Atmega644P/1284P all’Arduino IDE 1.0.x (aggiornato) – Leonardo Miliani..

... ho guardato anche qui: http://arduino.cc/en/Main/Standalone

ma non sono riuscito a programmare questi 644 ....

avete qualche informazione o consiglio da darmi?

Paolo forse dovresti darci tu qualche info in più.... :wink:
Intanto l'acquisto del primo link potevi risparmiartelo, disponendo di un Arduino, potevi tranquillamente programmarlo via ISP
Non ricordo se Leo avesse lavorato ad un bootloader, in caso contrario non potrai mai programmare il 644 con un Convertitore seriale e comunque dovresti prima caricare il bootloader via ISP.
Comunque intanto spiega come hai collegato l'HW e cosa hai tentato di fare e che errori hai ricevuto

Se Paolo ha seguito la mia guida, ha scaricato con pacchetto software contenente non solo i file da aggiungere al core per far riconoscere il micro ma anche un bootloader testato e funzionante.
http://www.leonardomiliani.com/?p=625
Per cui con gli strumenti che ho fornito egli può programmare questi chip sia con la tecnica ISP sia via seriale usando il bootloader.

Mi associo comunque alla richiesta di maggiori info su cosa non funzioni esattamente.

allora adesso non ho il materiale per essere preciso, posso solo dire sommariamente cosa ho fatto:
da qui Contact Support .... ho messo il quarzo, i due condensatore di da 22pf /connessi anche al GND), quello da 100nF tra +5V e GND, la resistenza ed il led sul pin 1.. e basta. Non ho messo il circuito di reset etc..

Ho messo i +5V al pin 30, connesso anche al pin 10, il GND l'ho messo al pin 11 connesso anche al pin 31... come dallo schema di cui sopra.

Poi, sempre dal medesimo schema ho provato a connettere lo schema che lui chiama USB2TTL, che usa i seguenti pin del 644
usando i pin RXD, TXD, GND al convenrtitore seriale che ho acquistato.... naturalmente incrociando tx con rx e viceversa ....

Per michele: .. preferisco usare questo convertirore che un altro arduino.....

naturalmente ho scaricato la libreria di leo e l'ho aggiunta lla IDE 1.01 .... ma non vedo segni di vita ....
....

in linea di principio dovrebbe funzionare???? ...

oppure sto comettendo qualche errore grossolano?

Prima di poter programmare il micro devi inserirgli il bootloader, non l'ho mai fatto con quel micro ma è sicuramente così :slight_smile:
Devi prendere arduino, caricarci lo schetck d'esempio Arduino ISP, collegare tramite interfaccia SPI (MISO,MOSI,SCK e il pin 10 al reset del micro target), poi vai su board, selezioni quella del mega644 e poi fai burn bootloader, così dovrebbe andare, se la procedura va a buon fine puoi passare a programmarlo via seriale

Il bootloader lo devi caricare in ogni caso come giá ti é stato suggerito. Poi, per caricare gli sketch, non devi dimenticarti di mettere una resistenza di pull-up di 10k tra i 5V ed il pin di Reset del 644 (credo debba essere il pin 9) oltre al condensatore, in serie, tra il pin di reset e quello del programmatore (Arduino, oppure convertiore usb/seriale). Per il valore del condensatore prova pure quello da 1uf

Nel pacchetto che ho preparato c'è anche uno schema di collegamento. Vale anche per il 644, l'unica cosa che forse a te non serve è il circuito sulle linee RX/TX se usi il 644 perché quel filtro RC è stato aggiunto per un bug hardware che affligge alcuni lotti di 1284).

Per poterlo programmare via seriale ti serve flashare il bootloader ma prima di fare questa operazione, accertati di riuscire a comunicare con il micro. Senza bootloader, col tuo convertitore è normale che tu non riesca a comunicare via seriale con il 644.

Quindi io preparerei intanto un 644 standalone su una breadboard e ci flasherei sopra il bootloader tramite ISP: connetti i pin 10/11/12/13 di un Arduino UNO (con lo sketch ArduinoISP) rispettivamente ai piedini fisici 9/6/7/8, poi aggiungi ovviamente 5V e GND.
Aprendo l'IDE devi avere la voce "Amtega644 @ 16 MHz w/bootloader". Selezioni questa e poi dai "scrivi bootloader".
Se tutto è andato per il meglio puoi adesso usare il tuo convertitore.

x iscrizione.

.. allora... innanzitutto grazie per i vostri suggerimenti ...

... prima ho caricato sull'arduino da usare come programmatore lo sketc arduinoISP...

... ho eseguito le istruzoini di leo... ho scaricato il suo file.zip .. questo: 644P/1284P core for Arduino 1.0.2
. l'ho installato nella cartella hardware\arduino.. dell'IDE .. come da istruzioni...
ho copiato il contenuto del file new_entrie_for_boards .. nel file boards ...
.. sull'IDE ho seloezionato la board giusta ... (644 a 16 mhz.. for bootloader)..

ho attivato il trasferimento del bootloader .. i led TX, RX ed il led 9 hanno lampeggiato per quasi un minuto... nessun messaggio d'errore, ma solo il messaggio di avvenuto trasferimento del bootloader ...
... quindi ne deduco che il bbotloader sia stato caricato ....

adesso provo a tresferire uno skech ...
carico nell'IDE l'esempio blink... per fare lampegguare il pin 13

seleziono nell'IDE strumenti/tipo di arduino/la board 644 ISP ... (non bootloader)
selezione nell'IDE strumenti/programmatore/arduinoISP
attivo il tarsferimento del file con il pulsante "carica" e mi da errore (non posso scrivere qui il messaggio di errore perchè non ho la pennina dove ho memorizzato il tutto)...

dal menu file do il comando "carica con un programmatore" ....
apparentemente non mi da errore... cè il lampeggio dei led tx rx e il messaggio positivo a fine trasferimento

ma non funziona nulla
il primo problema e che non so la corrispondenza dei pin nel 644 .. li ho provati tutti ... ma niente...

le domande sono queste:
.. in linea di principio vi pare che il procedimento che sto seguendo sia quello giusto??
.. siccome uso l'IDE 1.0.1 .. può essere questo il problema?
.. come faccio a identificare i PIN nel 644??? .. ho guardato il datasheet e non trovo la corrispondenza tra A0, A1, A7 etc.. o i PIN 1,2,.. 10, 13 .. etc.. ho solo capito come sono raggrupati come PORTA, PORTC, PORTD etc....

suggerimenti idee??...

chiedo scusa se sono stato poco preciso ma sono in una pausa lavoro e non ho con me pennina con i risultati delle prove fatte ieri sera.. grazie
ciao

La corrispondenza dei pin la trovi nel file PINS_ARDUINO.H che risiede nella cartella

POSIZIONE DOVE HAI ARDUINO IDE\hardware\CARTELLA DEL CORE CHE HAI SCARICATO DA LEO\variants\VARIANTE CHE STAI UTILIZZANDO

Dove

POSIZIONE DOVE HAI ARDUINO IDE = percorso completo dove hai installato arduino (es. c:\arduino-1.0.1)
VARIANTE CHE STAI UTILIZZANDO = la reperisci aprendo il file BOARDS.TXT presente in POSIZIONE DOVE HAI ARDUINO IDE\hardware\CARTELLA DEL CORE CHE HAI SCARICATO DA LEO, leggendo l'impostazione .build.variant della scheda che hai selezionato)

ES. (nel mio caso uso una scheda che nel menù di arduino si trova con il nome di 'Mighty 1284p 16MHz using Optiboot')

mighty_opt.name=Mighty 1284p 16MHz using Optiboot
....
....
....
mighty_opt.build.core=standard
mighty_opt.build.variant=standard

In questo caso la board in oggetto avrà il suo file PINS_ARDUINO.H in

es.
c:\arduino-1.0.1\hardware\CARTELLA DEL CORE CHE STo UTILIZZANDO\variants\standard

All'interno di detto file ti troverai una parte di codice dove verranno mappati i pin del micro alle porte specifiche della mcu e il relativo bit .
In alcuni file vi è anche una tabella di corrispondenza,nel tuo dovrebbe esserci una cosa di questo tipo:

//                         ATMEL ATMEGA644P/1284P
//
//                               +---\/---+
//            PCINT8/(D0 ) PB0  1|        |40  PA0 (A0 / D24)/PCINT0
//            PCINT9/(D1 ) PB1  2|        |39  PA1 (A1 / D25)/PCINT1
//      PCINT10/INT2 (D2 ) PB2  3|        |38  PA2 (A2 / D26)/PCINT2
//      PCINT11/OC0A (D3 ) PB3  4|~       |37  PA3 (A3 / D27)/PCINT3
//   PCINT12/0C0B/SS (D4 ) PB4  5|~       |36  PA4 (A4 / D28)/PCINT4
//      PCINT13/MOSI (D5 ) PB5  6|        |35  PA5 (A5 / D29)/PCINT5
// PCINT14/OC3A/MISO (D6 ) PB6  7|~*      |34  PA6 (A6 / D30)/PCINT6
//  PCINT15/OC3B/SCK (D7 ) PB7  8|~*      |33  PA7 (A7 / D31)/PCINT7
//                         RST  9|        |32  AREF
//                         VCC 10|        |31  GND 
//                         GND 11|        |30  AVCC
//                       XTAL2 12|        |29  PC7 (D23) TOSC2/PCINT23
//                       XTAL1 13|        |28  PC6 (D22) TOSC1/PCINT22
//       PCINT24/RX0 (D8 ) PD0 14|        |27  PC5 (D21) TDI/PCINT21
//       PCINT25/TX0 (D9 ) PD1 15|        |26  PC4 (D20) TDO/PCINT20
//  PCINT26/INT0/RX1 (D10) PD2 16|        |25  PC3 (D19) TMS/PCINT19
//  PCINT27/INT1/TX1 (D11) PD3 17|        |24  PC2 (D18) TCK/PCINT18
//      PCINT28/OC1B (D12) PD4 18|~       |23  PC1 (D17) SDA/PCINT17
//      PCINT29/OC1A (D13) PD5 19|~       |22  PC0 (D16) SCL/PCINT16
//      PCINT30/OC2B (D14) PD6 20|~      ~|21  PD7 (D15) OC2A/PCINT31
//                               +--------+
//
// *: OC3A/OC3B (and corresponding PWMs) are only present on Atmega1284

Tra parentesi tonde come vedi c'è il pin numerazione arduino corrispondente (D13 = digital 13, A1 = analog1)

Buon lavoro.

grazie niki .. utilissimo ......

per le prime due domande??? .. suggerimenti?????

eppoi ho ancora un'altro dubbio: ... ma quindi con la tecnica ISP si può programmare qyualsiasi microcntrollore senza che ci sia il bootloader?.... dove trovo altre informazoni al riguardo?

Dalla guida di Michele --> http://www.michelemenniti.it/vhd/Elettronica/GPAT_v4.pdf :grin:
D'altronde si chiama "Guida alle tecniche di programmazione dei microcontrollori ATMEL" e non "Guida alla programmazione di ARDUINO". ]:slight_smile:

@Paolo:
il procedimento è giusto, varia comunque in base a come vuoi usare il microcontrollore. Se metti un chip in standalone normalmente il bootloader non si usa, perché con la tecnica ISP puoi programmarlo direttamente, senza bootloader. Info le trovi nella guida del Menniti, è stata scritta inizialmente per programmare un Atmega328 ma i principi valgono per tutti i micro. L'idea di base è quella di usare lo sketch Arduino ISP come emulatore di un programmatore e collegare i pin D10/D11/D12/D13 dell'Arduino programmatore alle linee RESET/MOSI/MISO/SCK del chip di destinazione. MOSI/MISO/SCK sono le 3 linee della comunicazione SPI e le trovi nel datasheet, variano come corrispondenza da micro a micro.

Attenzione ad una cosa: se stai usando l'IDE 1.0.1 devi usare il pacchetto 644_1284 in versione 1.0.1! La versione 1.0.2 è per l'IDE 1.0.2 (e 1.0.3). Sono diversi perché nell'IDE 1.0.1 il supporto per il 644/1284 era incompleto e dovevano essere sostituiti 3 file del core dell'IDE.

Grazie PaoloP e Leo...

.... forse sbaglio, anzi probabilmente sbaglio... ma on mi piace l'idea di avere empre affianco un altro arduino da usare come programmatore...anche perchè il 644 deve lavorare in comunicazione con un altro 328 fa da web server,..... nella mia idea io volevo riservare nella breadboard i pin per la programmazione tramite l'emulatore USB Seriale che ho linkato nel primo post..

.. invece mi interessa la programmazione senza il boot loader direttamemnte dalla porta seriale del pc (o dall'emulatore USB-Seriale) ... ma nella guida di menniti (che ho guardato, anche se superficialmente) nonc'è nessun riferimento all'utilizzo della porta seriale direttamete dal pc e la connessione al microcontrollore ......

comunque adesso me la stampo a colori e stasera me la leggo bene....

Grazie ...

altri suggerimenti???? ... qualche link dove si tratta di questo argomento?

Non è possibile.
Il bootloader è un programma che permette di riprogrammare il microcontrollore dalla porta seriale. Senza bootloader niente programmazione seriale.
A questo punto ti conviene lascialo.

Ti consiglio comunque di prevedere il collegamento ai pin SPI per una programmazione di emergenza.
Se non vuoi usare un Arduino puoi usare un programmatore esterno ISP. C'è ne sono diversi in giro.

Non puoi programmare via serial un chip senza bootloader.
Il bootloader è un particolare programma scritto dal team di Arduino che all'avvio del microcontrollore controlla appunto se sulla seriale sta arrivando un nuovo sketch. Se arriva, lo legge e contemporaneamente lo scrive sulla Flash. Se non c'è nulla, avvia il programma già presente. In questo caso ti serve un convertitore USB/seriale.

Senza bootloader l'unico modo per scrivere il nuovo sketch è appunto la programmazione ISP, che usa la comunicazione SPI del micro. Quindi ti serve o un programmatore o un Arduino che lo emuli.

ok..
allora per la programmazione via seriale, con il mio emulatore USB, devo metterci il bootloadr..e credo che farò così....
.. le indicazioni le trovo nella guida di menniti? ... la tecnica seriale.. mi pare che sia stata chiamata così..!!! .. questa è valida anche per il 644??? come si utilizza?? ... perchè menniti parla del 328 ... mi pare ....

invece la programmazoine ISP è anch'essa trattata da menniti ma per il 328.. dove prende i collegamenti dal connettore ISP... ma come faccio sul 644 standalone????

[quote author=Paolo S link=topic=136740.msg1029964#msg1029964 date=1355316762]
invece la programmazoine ISP è anch'essa trattata da menniti ma per il 328.. dove prende i collegamenti dal connettore ISP... ma come faccio sul 644 standalone????[/quote]

leo72:
@Paolo:
il procedimento è giusto, varia comunque in base a come vuoi usare il microcontrollore. Se metti un chip in standalone normalmente il bootloader non si usa, perché con la tecnica ISP puoi programmarlo direttamente, senza bootloader. Info le trovi nella guida del Menniti, è stata scritta inizialmente per programmare un Atmega328 ma i principi valgono per tutti i micro. L'idea di base è quella di usare lo sketch Arduino ISP come emulatore di un programmatore e collegare i pin D10/D11/D12/D13 dell'Arduino programmatore alle linee RESET/MOSI/MISO/SCK del chip di destinazione. MOSI/MISO/SCK sono le 3 linee della comunicazione SPI e le trovi nel datasheet, variano come corrispondenza da micro a micro.

Attenzione ad una cosa: se stai usando l'IDE 1.0.1 devi usare il pacchetto 644_1284 in versione 1.0.1! La versione 1.0.2 è per l'IDE 1.0.2 (e 1.0.3). Sono diversi perché nell'IDE 1.0.1 il supporto per il 644/1284 era incompleto e dovevano essere sostituiti 3 file del core dell'IDE.

Il ragazzo non legge con attenzione e non si applica. ]:smiley: ]:smiley: ]:smiley:

Datasheet
644A e 644PA --> http://www.atmel.com/Images/doc8272.pdf
644P/V --> http://www.atmel.com/Images/8011S.pdf
644/V --> http://www.atmel.com/Images/doc2593.pdf
Quale hai?

hai ragione ... omonimo!!!!
.. chiedo scusa.

Ho capito che per la programmazione ISP devo usare RESET/MOSI/MISO/SCK del microcontrollare e fin qui ci siamo. Ma se non voglio usare arduino per emulare la seriale ,se volessi usare una seriale vera e propria, la corrisopndenza dei pin della seriale DB9 che mi occorrono li trovo nella guida di menniti?

Stasera riproverò... per i 644 credo di avere i PA.... ma dovrei verificare stasera ...
ciao