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

Il 644P ha 2 seriali (il 644 non P ne ha 1 sola).

@Paolo:
scusa, perché altrimenti ci perdiamo per strada....
facciamo (anzi, facci) un riassunto di cos'hai fatto fino ad ora?
L'HW che hai provato, il SW che stai usando ecc..

A me la programmazione dei 644P via ISP o seriale funziona, quindi c'è un problema da te che dobbiamo individuare, ma se continuiamo a fare proposte senza capire come tu ti stia muovendo mi sa che non arriviamo a nulla :wink:

Quindi, io partirei dal caricare lo sketch ArduinoISP sull'Arduino UNO. Poi chiudi l'IDE.
Ora il mio core 644_1284: scaricalo (prendi la versione per IDE 1.0.2 sia per l'IDE 1.0.2 che per l'IDE 1.0.3) ed installalo.
Avvia l'IDE, seleziona "Atmega644 @ 16 MHz w/bootloader" e poi scrivi il bootloader sul microcontrollore (così imposti anche i fuse corretti per lavorare a 16 MHz e riservare l'area al bootloader) con la tecnica ISP usando l'ArduinoISP come programmatore.
Adesso prenditi l'Arduino (lasciamo per ora da parte il tuo convertitore USB/seriale), staccagli il chip e fai questi collegamenti:
Arduino ---> 644P
Pin RST ---> pin 9
Pin RX ---> pin 15
Pin TX ---> pin 14
Pin 5V ---> pin 10 e 30
Pin GND ---> pin 11 e 31

Collega l'Arduino, apri l'IDE, poi scegli la voce "Atmega 644 @ 16 MHz w/bootloader", carica lo sketch Blink e spedisci con l'icona di upload. Adesso prendi un LED + R e collegali al pin 19 del 644: se il bootloader ha svolto il suo compito, lo sketch Blink dev'essere sul micro ed il LED deve lampeggiare.

leo72:

[quote author=Michele Menniti link=topic=136740.msg1034614#msg1034614 date=1355670909]
2 - Ad ognuno dei tre pin TX delle tre seriali del 644 collega una R da 330 ohm o maggiore (non superiore a 1kohm)

Il 644P ha 2 seriali (il 644 non P ne ha 1 sola).

[/quote]
sì, grazie, una svista, ho scritto "tre pin TX delle tre seriali

leo72:
Questo funziona solo se usi un convertitore USB/seriale altrimenti i dati tra il PC ed il micro non puoi gestirli.
Basterebbe anche l'Arduino, basta sfilare l'Atmega328.
.....
.....
Senza bootloader sul chip non puoi farlo. ....

Ho provato usando il convertitore USB seriale con i collegamenti come dal post precedente di Michele..
Ho anche provato usando la tecnica seriale della guida di Michele;
Ho anche provato usando arduino uno, caricando uno script quasi vuoto, cioè con il setup imposto i pin 0 e 1 come input, e poi faccio eseguire un loop vuoto. collegando tx --> rx e rx <-- tx (644 - 328). Lo usavo er ricevere le stringhe NMEA dal ricevitore GPS e funzionava ... ma niente .. qui appare qualcosa nel serial monitor ma sembrano solo bestemmio. Naturlmente ho settato e provato con tutti i valori di bps. Ho anche verificato che il quarzo del 644 fosse da 16 Mhz... (sull'involucro cè stampigliato 16).

Credo che il bootloader ci sia... ho fatto anche la modifica da te suggerita per fare flashare il 2 pin .. ho messo uil valore 5 (credo 5 flash) .. ma è rapidissimo.... si vede che flasha ma non saprei dirti se sono 5 ....

Per le prove che mi hai suggerito di fare non potro farle prima di stasera ....

.. starera michele... poi scrivo dei risultati.. .. interessante comunque la tecnica per vedere se cè attivita tx RX ... : Magari si potrebbe inserire in modo stabile nel prpgetto???... potrebbe essere utile per il debug etc... ???.. che ne dici?

leo72:

[quote author=Michele Menniti link=topic=136740.msg1034614#msg1034614 date=1355670909]
2 - Ad ognuno dei tre pin TX delle tre seriali del 644 collega una R da 330 ohm o maggiore (non superiore a 1kohm)

Il 644P ha 2 seriali (il 644 non P ne ha 1 sola).
[/quote]

io ho il 644PA .. ma sto usando sempre le rx0 e tx0 (pin 14 e 15 del micro 644)

leo72:
@Paolo:
scusa, perché altrimenti ci perdiamo per strada....
facciamo (anzi, facci) un riassunto di cos'hai fatto fino ad ora?
L'HW che hai provato, il SW che stai usando ecc..

Ardware usato: -arduino UNo con botloader origianle; -644PA
software: IDE 1.0.2 aggiornato con il tuo package per il 644

leo72:
Quindi, io partirei dal caricare lo sketch ArduinoISP sull'Arduino UNO. Poi chiudi l'IDE.
Ora il mio core 644_1284: scaricalo (prendi la versione per IDE 1.0.2 sia per l'IDE 1.0.2 che per l'IDE 1.0.3) ed installalo.
Avvia l'IDE, seleziona "Atmega644 @ 16 MHz w/bootloader" e poi scrivi il bootloader sul microcontrollore (così imposti anche i fuse corretti per lavorare a 16 MHz e riservare l'area al bootloader) con la tecnica ISP usando l'ArduinoISP come programmatore.

.. direi che tutto questo l'ho fatto e funzione .. ho anche fatto flashare il pin 2 come detto prima ..
aggiungo anche che faccio l'upload dello script così:

  • carico lo script nell'IDE
  • seleziono la scheda di destinazoine: Atmega644 @ 16 MHz w/ISP ...
  • seleziono programmatore: arduino as ISP
    poi faccio l'upload .. dal menu file --> carica con un programmatore. Qui evidenzio che se uso il tasto per l'upload sulla barra dei comandi mi dà un errore e non carica. Non sò forse questa informazione è rilevante ..

leo72:
Adesso prenditi l'Arduino (lasciamo per ora da parte il tuo convertitore USB/seriale), staccagli il chip e fai questi collegamenti:...
......

in realtà ho già provato.. stasera riprovo.

aggiungo questa infomarzione:
Tra le varie prove che ho fatto, solo sull'arduino UNO (non sul 644) ... ho provato ad eseguire lo schetc
esempi--> communication--> ASCIItable.. e non mi funziona sull'ide 1.02 e nenche sull'1.01. ma fuunziona sull'ide 022..
non sò forse è rilevante??.. bho=???
più tardi vedro le vs risposte...

ciao e grazie

Guarda che "Atmega644 @ 16 MHz w/Arduino as ISP" non è la stessa cosa di quello che ti ho detto io, "Atmega644 @ 16 MHz w/bootloader".
Nel primo caso non viene riservato spazio al bootloader per cui riflashando il micro il bootloader potrebbe venir sovrascritto.
La voce che ti ho invece consigliato riserva 1 kB di Flash per il bootloader, quindi questo resta protetto anche nelle successive scritture

leo72:
Guarda che "Atmega644 @ 16 MHz w/Arduino as ISP" non è la stessa cosa di quello che ti ho detto io, "Atmega644 @ 16 MHz w/bootloader".
Nel primo caso non viene riservato spazio al bootloader per cui riflashando il micro il bootloader potrebbe venir sovrascritto.
La voce che ti ho invece consigliato riserva 1 kB di Flash per il bootloader, quindi questo resta protetto anche nelle successive scritture

si,, ho sbagliato scrivendo....
Atmega644 @ 16 MHz w/bootloader ... l'ho utilizzato per tasferire il bootloader
Atmega644 @ 16 MHz w/Arduino as ISP ... lo stavo utilizzando per trasferire gli schetc

Comunque in tutto questo marasma di problemi con il 644 ci sono anche note positive.
Ho convertito tutto lo schetch ed ora funziona tutto (eccezion fatta per il serial monitor .. che usavo per il debug)...
.. insomma ho convertito tutto il lavoro fatto e funziona benissimo anche sul 644, ora ho i pin in più per aggiungere le altre implementazioni ...

Ma hai provato ad usare l'Arduino smontando il chip come ponte USB/seriale come ti avevo detto?

Rispondo solo per la mia parte.... L'uso dei LED come "monitor" dei segnali TX/RX è comune soprattutto nei convertitori USB-Seriale, quindi puoi tranquillamente decidere di adottarli sia per RX che per TX, l'importante è che le R siano di valore più alto del normale in modo che le linee non siano caricate troppo.
Nello specifico stiamo solo cercando di capire se la (e quale) seriale sta rispondendo alle tue richieste, ecco perché usiamo solo la linea TX del 644.

Il bootloader usa la seriale su RX0/TX0.
Io comunque sono convinto che lui sbagli qualche passaggi perché a me funziona sia il 644 che il 1284 con il bootloader che ho postato.
Casomai potrebbe provare a mettere il filtro RC dello schema allegato al package sul pin RX, magari sta sperimentando gli stessi problemi che ebbi io a suo tempo con il 1284P. Non dovrebbe, perché non ho sentore di questo sui 644P, però tentare non nuoce.

leo72:
Ma hai provato ad usare l'Arduino smontando il chip come ponte USB/seriale come ti avevo detto?

.. su questo punto mi sta venendo il dubbio che forse NON ho settato la scheda da programmare come Atmega644 @ 16 MHz w/bootloader quendo facevo questa prova ...appena a casa riprovo...

per adesso vi ringrazio.. inserirò anche i led monitor per l'attività RX DX .. con una resistenza da 1 k o un po meno, giusto per evidenziare (anche se poco) l'attività sulle linee...

ciao

..

leo72:
Ma hai provato ad usare l'Arduino smontando il chip come ponte USB/seriale come ti avevo detto?

confermo quanto detto prima.. provato e non funge lo stesso.....

Bene, allora andiamo ancora più a ritroso:

  1. foto del circuito
  2. schema dei collegamenti

Ricorda che nel caso di Arduino usato come Convertitore devi collegare TX a TX e RX a RX, oltre ovviamente al RESET

ok... adesso vado a casa e RIprovo.... compreso il reset come dice michele....

farò anche qualche foto...
ciao a domani

grazie...

Fai riferimento alla Guida, c'è un apposito capitolo su questa cosa, con tanto di descrizioni e foto

@Leo

leo72:
Bene, allora andiamo ancora più a ritroso:

  1. foto del circuito
  2. schema dei collegamenti

le foto sono queste ...




relativamente ai collegamenti cè ben poco da evidenziare.
ho disconesso quesi tutto...

Riferendosi alla prima foto:
l'integrato in alto a destra è il decoder dtm, che connetto alla porta B. Funziona perfettamente. Ho tolto tutte le connessionì perchè disturbavano la foto.

I tre integrati nella parte bassa sono gli shift register, anche quelli li ho disconessi, ma ho già sperimentato che funzionano perfettamente connessi alla porta A del 644...
tra i collegamenti del micro si vedodo i collegamenti 10 -30 e 11-31 filo blu e filo bianco. Il quarzo con i due suoi condensatori ... più l'atro condensatore tra +5v e GND

i valori dei componenti sono tutti verificati.

i collegamenti sulla porta C ( in alto a sinistra), quattro fili bianchi uno verde ed uno azzurro sono i controlli del display LCD che anche questo funziona benissimo ....
i tre fili bianchi con la resistenza push down in alto a sinistra sono i input digitali sulla porta A...
io non rilevo errori di collegamento

ma confermo che non và in programmazine seriale ...

@michele
Ho messo il led sul tx del 644 ed ho riscontrato l'attività tx. In trasmissione và sicuramente bene...
Ho anche fatto di più... ho decodificato con un'analizzatore di stati logici la qualità della trasmissione seriale ed è tutto ok. Correttamente decodificata a 9600 bps.
Ti allego le immagini ottenute



.. vede l segnale sulla seriale, con i pacchetti intervallati da un delay(1000), ed anche gli stessi pacchetti decodificati (prima foto) ....

.. attendo le vs opinioni...
saluti

Ma i segnali corrispondo a ciò che ti aspetti dallo sketch che hai caricato sul 644? Se è così sul serial monitor dovresti vedere i dati. Usando Arduino come convertitore (quindi senza il micro) dovresti vedere la stessa attività sul LED RX. Chiaro che csì sei senza bootloader, se hai caircato lo sketh via ISP il bl non funziona più, però la comunicazione seriale deve funzionare a prescindere, per me è un problema di connessioni.

Mi viene da pensare la stessa cosa.

leo72:

[quote author=Michele Menniti link=topic=136740.msg1036762#msg1036762 date=1355837081]
la comunicazione seriale deve funzionare a prescindere, per me è un problema di connessioni.

Mi viene da pensare la stessa cosa.
[/quote]
e se guardi le foto, anche se non è facile seguire le connessioni, ti accorgi intanto che c'è qualcosa che non va sul RESET, sempre che dove finisca il filo gialla sia proprio il pin di RESET del 644, ora sono al lavoro e non ho modo di controllare; tanto per cominciare NON vedo la R di pull-up....