Go Down

Topic: programmare il 644 ... ma come???? (Read 25 times) previous topic - next topic

Augusto Picciani

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

leo72

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.

superzaffo


Paolo S

#8
Dec 12, 2012, 09:04 am Last Edit: Dec 12, 2012, 09:17 am by Paolo S Reason: 1
.. 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



niki77

#9
Dec 12, 2012, 09:31 am Last Edit: Dec 12, 2012, 09:34 am by niki77 Reason: 1
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.

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Go Up