Reset RS232 con MAX232

Buonasera, avrei un dubbio su uno stampato che sto disegnando.
Nel circuito ho un ATmega328P che si deve collegare ad un PC mediante RS232, come traslatore di livello adopero un MAX232 collegato ai pin UART e fino qui tutto bene. Vorrei però includere un sistema di reset identico a quello di arduino che sfruttti il pin DTR. Ora mi chiedo, visto che il pin reset dell'ATmega328P puo sostenere 12V posso collegare direttamente il pin DTR in serie con un condensatore da 0.1uF al pin reset oppure devo sfruttare una linea del MAX232 per abbassare la tensione applicata dal pin DTR?

Grazie

Non ho capito bene, ma se alimenti il chip MAX232 a 5V (e non vedo perchè non dovresti farlo) non hai nessun problema di livelli di tensione.

Il segnale DTR che esce dalla seriale DB9 del PC deve entrare dentro un buffer rimasto libero del MAX232 (è un transceiver doppio) la cui uscita è già compatibile con la bassa tensione a 5V.
Per esempio, nello schema a tergo, entrare nel piedino 8 con il DTR a livelli RS232, e prelevare il segnale a livello CMOS/TTL dal piedino 9

Il valore del condensatore non è critico, ma è obbligatorio (è un segnale transitorio, un impulso). Nel senso che puoi usare un 0.1uF ma anche un 1uF e anche un 10uF, ma DEVI metterlo.

Neanch io non capisco perché vuoi risparmiare un canale del MAX232 che comunque c'é.
Ciao Uwe

Solo per la posizione dei componenti che aggiungendo il passaggio nel MAX232 mi obbliga ad inserire un ponte, niente di tragico ma visto che il reset i 12V li regge bene ho pensato che si postesse evitare il passaggio di livello per il DTR.

BaBBuino:
Il valore del condensatore non è critico, ma è obbligatorio (è un segnale transitorio, un impulso). Nel senso che puoi usare un 0.1uF ma anche un 1uF e anche un 10uF, ma DEVI metterlo

Non l'ho specificato bene ma si il condensatore so di doverlo mettere in ogni caso, l'unica differenza è passare o meno dentro il MAX232 con il DTR.

il 12V sul pin reset serve per entare in "parallel programming", non credo che tu lo voglia.
Quindi visto che hai due canali liberi sul MAX232, usali

Brunello:
il 12V sul pin reset serve per entare in "parallel programming", non credo che tu lo voglia.

Ricevuto, questo proprio non lo sapevo, sapevo solo che servisse in caso di disabilitazione del pin di reset.
Va bene allora passerò per il MAX232.

Grazie mille.

Esatto , se per sbaglio viene attivato il bit che attiva il pin di RESET per utilizzarlo come I/O , il pin RESET non è più disponibile e non si riesce più ad accedere in ISP quindi solo con un particolare programmatore parallelo che quasi nessuno ha.

Io speravo di cavarmela con un normale programmatore ISP con un innalzatore di tensione sul pin reset.
Ricordo che Guglielmo tempo fa postò in un topic creato da me il link ad una shield per Arduino che permetteva il reset del fuse in caso di reset disabilitato, peccato che fosse un progetto Americano e la shield con spese di spedizioni arrivasse a superare i 30$ di costo.

Neanche programmatori come l'AVR dragon permettono di risolvere?

PS Il circuito è stato modificato includendo il passaggio per il MAX232 del DTR e aggiungendo un solo jumper sul piedino reset del connettore ISP.

No, nemmeno il dragon, ci vuole qualcosa tipo il stk600

Peccato, finalmente mi ero persuaso all'acquisto del AVR Dragon.

Si poteva pensare di usare un partitore di tensione, abbinato al condensatore, e questo avrebbe consentito di avere i corretti livelli, MA:

  1. Lo standard 232 funziona con livelli di tensione che scendono sotto lo zero e diventano negativi.

  2. Funziona a livelli con fasi opposte. Con un valore positivo hai lo zero e con valori negativi hai uno.

Quindi nada in ogni caso.

icio:
No, nemmeno il dragon, ci vuole qualcosa tipo il stk600

Chi lo ha detto ? ? ? :o

L'AVR Dragon mette a disposizione sia la programmazione parallela che, per i chip più piccoli che non hanno pin sufficienti, quella seriale, fornendo i 12v sul pin di reset.

Trovate descritta la PP (Parallel Programming) QUI mentre trovate descritta la HVSP (High Voltage Serial Programming) QUI.

Come potete leggere, in entrambe le sezioni è chiaramente indicato

In addition the AVR Dragon will apply 12V to the reset pin, so it is important that the target board is designed to handle 12V on this line.

Guglielmo

P.S. : La schedina di programmazione di cui parlava Roberto è QUESTA :wink:

gpb01:
Chi lo ha detto ? ? ? :o

L'AVR Dragon mette a disposizione sia la programmazione parallela che, per i chip più piccoli che non hanno pin sufficienti, quella seriale, fornendo i 12v sul pin di reset.

Confermo, l'AVR Dragon permette anche la programmazione HV, sia parallela che seriale, è un ottimo acquisto in quanto è uno strumento completo per la programmazione e il debug hardware dei micro Atmel.

Mi sono sbagliato, ho risposto senza controllare mi fidavo della mia memoria, anche il Dragon può programmare in parallel prog

Ok ma al di fuori del Dragon come si forza la HVSP al posto della HVPP? In precedenza è stato detto che il reset a 12V porta l'AVR in programmazione parallela.

ho detto una mezza castroneria. Pero' sinceramente nemmeno conoscevo l 'HVSP

Brunello:
ho detto una mezza castroneria.

Sai non ne sono poi cosi tanto convinto:
Dal datasheet del ATmega328P

The following algorithm puts the device in Parallel (High-voltage) Programming mode:

  1. Set Prog_enable pins listed in Table 28-14 on page 292 to “0000”, RESET pin to 0V and VCC to 0V.
  2. Apply 4.5 - 5.5V between VCC and GND.
    Ensure that VCC reaches at least 1.8V within the next 20 μs.
  3. Wait 20 - 60 μs, and apply 11.5 - 12.5V to RESET.
  4. Keep the Prog_enable pins unchanged for at least 10μs after the High-voltage has been applied to ensure
    the Prog_enable Signature has been latched.
  5. Wait at least 300 μs before giving any parallel programming commands.
  6. Exit Programming mode by power the device down or by bringing RESET pin to 0V.

In effetti viene detto che i 12V servono per portare l'AVR in programmazione parallela.
Qualcuno potrebbe gentilmente chiarire questa storia del HVSP? Magari Guglielmo :slight_smile:

Grazie

si, e' quello che sapevo anche io, poi mi hanno confuso con l' HVSP e allora ho controllato

http://support.atmel.no/knowledgebase/avrstudiohelp/mergedProjects/AVRDragon/AVRDragon_Device_Support.htm

Solo i tiny hanno questo tipo di programmazione ( chiaramente perche' sono carenti di pin )

Non è che la forzi. E' un'opzione presente sui chip che NON hanno sufficienti pin. Su un Atmega 328P vai di programmazione parallela, d'altronde ha una ventina di pin di I/O. Provaci invece con un Tiny85... che di pin liberi, tolti i due dell'alimentazione, ne ha solo 6, e di questi uno è quello del reset :wink:

Quindi niente HVSP su ATmega e va beh ce ne faremo una ragione, ma colgo l'occasione per chiedere... Ma quali vantaggi offre la programmazione parallela con dei dispositivi cosi piccoli, normalmente so che viene usata per ridurre velocità sui singoli cavi oppure aumentare la velocità di trasferimento totale ripartendo i dati su piu linee, ma parlando di dispositivi con apice nei 512kB di flash quali vantaggi offre e quindi perché preferirla?