Compatibilità pins D0 e D1

Sezione dedicata al sistema di sviluppo BASCOM-AVR per i micro AVR
At90s, Attiny, Atmega e Xmega

Compatibilità pins D0 e D1

Postby mario59 » 12 Jun 2014, 17:43

Ciao Pier,
hai ragione per l'OT.
Ma leggendo il tuo post e nel momento che ti sto scrivendo sono arrivato ad una conclusione simile.
I pins PD0 e PD1 sono dedicati alla comunicazione durante la programmazione.
però sono in un certo qual senso "distaccati" dalla porta seriale tramite due resistori R8 e R9.
In allegato trovi lo schema elettrico del mio arduino 2009.
Se fai lo zoom in basso a dx dell'immagine vedi vicino al connettore J1 questi due pins "OR-WIRED" con il circuito della seriale.
Anche a me sembra che il problema risieda qui.
Penso che dovrei "dire" in qualche maniera al micro che dopo la programmazione, da quel momento in poi, i due pins sono dei comune I/O ed usarli come tali.
Ovviamente non ho idea di come questa cosa sia possibile perchè non mi è mai capitato di dover usare quei due pins.
Però l'uso dei resistori da 1K, in fondo, non dovrebbero influenzare, perchè se ad. es. il pin della seriale è a "0" il micro ponendo a 1 (5v) l'uscita, la stessa è sovraccaricata con 1kohm soltanto..
Lo stesso penso sia per il contrario.
Mentre, quello che noto io è che questi due pins NON SI MUOVONO neanche a vuoto, come avviene invece quando simulo.
Secondo me è qualche istruzione che devo dare al compilatore.
chissà se è solo una mia fantasia... :roll: :?: :?:
Attachments
Immagine 1.jpg
Immagine 1.jpg (135.77 KiB) Viewed 36245 times
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 12 Jun 2014, 19:45

Beh, mi pare che dopo il carico del programma da parte del bootloader di Arduino il sistema dovrebbe resettarsi e partire con il sw caricato a patto che non senta "traffico" di programmazione al riavvio. Le sole istruzioni di configurazione sono quindi le solite (almeno ddrd.0 e ddrd.1 messi a 1 per farli out).
Se i pin non si muovono neanche a vuoto potrebbe derivare dalla configurazione TX/RX nonostante le resistenze da 1K
Per essere certo io staccherei l'usb dopo la programmazione e proverei così.
Un tentativo che puoi fare (per sicurezza) posto come vedo che non vuoi usare l'Uart, potresti inserire i comandi Reset Txen e Reset Rxen anche prima di settare i DDRDx.
Inoltre, seppure la prova a vuoto lo escluderebbe, proverei anche a spostare D0 e/o D1 su altro/i input della sk relè ora funzionante/i per vedere se per caso fosse un problema della sk relè.
Se non risolvi e vuoi, prova a postare il codice
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby deluca » 12 Jun 2014, 20:21

@Mario59,
Screenshot 2014-06-12 21.14.46.png
Screenshot 2014-06-12 21.14.46.png (26.07 KiB) Viewed 36236 times


come vedi ho postato sostanzialmente il tuo ipotetico schema... ovviamente è incompleto.
Completalo, editandolo come vuoi, e ripostalo insieme all'ultima versione del tuo codice.
Cercheremo di vedere dove stà l'inghippo.

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Compatibilità pins D0 e D1

Postby mario59 » 12 Jun 2014, 21:39

salve ragazzi E GRAZIE per questa "task force" inusitata!!!! :D :D :D
Allora, ecco qui il codice. E' rivisitato dall'ultima volta, per inserirgli tutte le modifiche che pian piano ho trovato e che mi avete così gentilmente suggerito!
Code: Select all
'$sim
$regfile = "m328pdef.dat"
'$regfile = "m328def.dat"
$crystal = 16000000
$hwstack = 50
$swstack = 32
$framesize = 40

'
'
'
'                    MAX_R       11  21    Load MAX_R
'                     ./         ====     +-----+
'   144v ------------  --------    -----|     |--------/
'                                           +-----+        |
'                                                          |
'                                31  41      Load MAX_N    |
'                     ./         ====     +-----+        |
'   144v ------------  --------    -----|     |--------
'                    MAX_N                  +-----+        |
'                                                          |
'                                                        -----
'
'                    COIL_N
'                     ./                    +-----+
'             /------  -------------------|  N  |--------/
'             |                             +-----+        |
'    24v -----                                            |
'             |       ./                    +-----+        |
'             \------  -------------------|  R  |--------
'                    COIL_R                 +-----+        |
'                                                          |
'                                                        -----
'
'                                19  29      10 kO
'                                ====     +-----+
'                + 5V    --------    ----|     |--------
'                                        |  +-----+        |
'                                        |                 |
'                       Ok_N ------------/               -----

'                                39  49      10 kO
'                                ====     +-----+
'                + 5V    --------    ----|     |--------
'                                        |  +-----+        |
'                                        |                 |
'                       Ok_R ------------/               -----




Ddrb = &B00110111                                           'definizione direzione pins porta B: 0=IN, 1=OUT
Ddrc = &B11110000                                           'definizione direzione pins porta C: 0=IN, 1=OUT
Portc = &B00001111                                          'attiva pullup PORTC
Ddrd = &B11110011                                           'Definizione Direzione Pins Porta D: 0=IN, 1=OUT
Portd = &B11111111                                          'attiva pullup PORTD

Config Lcd = 16 * 2                                         'configure lcd screen
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.1 , Rs = Portb.0

Displ_on Alias Portb.2                                      'DEFINISCE IL PIN CONTR. il led display 0=Off, 1=On
Set Displ_on                                                ' accende il display

'definizione tastiera
Star_t Alias Pinc.0
Paus_e Alias Pinc.1
Sto_p Alias Pinc.2
Bypass Alias Pinc.3

'definizione pins I/O !!!

Max_r Alias Portc.4                                         'relè abil.carico 5A x 1121 0=Aperto, 1=Chiuso
Max_n Alias Portc.5                                         'relè abil.carico 5A x 3141 0=Aperto, 1=Chiuso

Coil_r Alias Portd.0                                        'eccitazione bobina R; 0-1-0 tempo di accitazione 500 ms
Coil_n Alias Portd.1                                        'eccitazione bobina N; 0-1-0 tempo di accitazione 500 ms

' definizione pins test x verifica avvenuto scambio
Ok_r Alias Pind.2                                           'check stato rele' R
Ok_n Alias Pind.3                                           'check stato relè' N

'pins riservati contatore esterno
Cnt Alias Portb.4                                           'conta impulsi esterno
Res_cnt Alias Portb.5                                       'reset conta impulsi
Set Cnt
Set Res_cnt
Reset Coil_r
Reset Coil_n


Dim Count As Long                                           'definizioni variabili
Dim Key As Byte

Cursor Off
Set Displ_on                                                ' accende il display

Cls                                                         ' SPLASH SCREEN
Lcd "* RELAIS FS-58 *"
Locate 2 , 1
Lcd "*FUNCTION TEST *"
Wait 2
Locate 2 , 1
Lcd "* INITIALIZING *"
Wait 2
Cls
Lcd "*INSERT RELAIS *"
Locate 2 , 1
Lcd " & PRESS START "

Comincia:                                                   'inizializzazione

Reset Res_cnt                                               'azzero il contatore esterno
Waitms 100
Set Res_cnt                                                 'relè in posizione di inizio test
Set Coil_r                                                  'eccita la bobina "R"
Waitms 500                                                  'alimenta la bobina per 500 ms
'If Ok_r = 0 Then Goto Fine_loop                   'test se scambio avvenuto: 0=non avvenuto ->ALARM!!
'If Ok_n = 1 Then Goto Fine_loop                   'test se scambio avvenuto: 1=non avvenuto ->ALARM!!
Reset Coil_r                                                'spegne la bobina "R"


Count = 0                                                   'azzero il contatore interno
Key = 0                                                     'azzero la variabile tastiera
Reset Max_r                                                 'apre i rele della 144v x R
Reset Max_n                                                 'apre i rele della 144v x N

Inizio:                                                     'inizio programma
                                                            'routine di controllo tastiera
If Star_t = 0 Then Waitms 20                                'debounce
If Star_t = 0 Then Key = 1                                  'key=1 inizio/continua test
If Star_t = 0 Then Goto Ciclo

If Paus_e = 0 Then Waitms 20                                'debounce
If Paus_e = 0 Then Key = 2
If Paus_e = 0 Then Goto Pausa                               'key=2 pausa test

If Sto_p = 0 Then Waitms 20                                 'debounce
If Sto_p = 0 Then Key = 3                                   'key=3 fine test test
If Sto_p = 0 Then Goto Fine_test

'If Bypass = 0 Then Waitms 20                                'debounce
'If Bypass = 0 Then Key = 4                                  'key=4 al galoppo e poi torna qui
'If Bypass = 0 Then Cls
'If Bypass = 0 Then Gosub Galoppo

If Key = 1 Then Goto Ciclo                                  'loop dopo il primo start
Goto Inizio                                                 'nessun tasto premuto: aspetta ancora


Ciclo:                                                      'inizio ciclo di test
'Cls
'Lcd "ciclo n." ; Count;

'step 1
Locate 2 , 1
Lcd "    Test #1     "
Gosub Apertura3141                                          'apre3141 a vuoto

'step 2
Locate 2 , 1
Lcd "    Test #2     "
'Waitms 3000                                                 'aspetta 3 sec.
Set Max_n                                                   'attiva il carico x 3141
Gosub Chiusura3141                                          'chiude3141  sotto carico

'step 3
Locate 2 , 1
Lcd "    Test #3     "
'Waitms 1500                                                 'aspetta 1,5 sec.
Gosub Apertura3141                                          'apre3141  sotto carico
Reset Max_n                                                 'disattiva il carico x 3141

'step 4
Locate 2 , 1
Lcd "    Test #4     "
'Waitms 10500                                                'aspetta 10,5 sec.
Gosub Chiusura3141                                          'apertura1121

'step 5
Locate 2 , 1
Lcd "    Test #5     "
'Waitms 3000
Set Max_r                                                   'attiva il carico x 1121
Gosub Apertura3141                                          'chiude 1121

'step 6
Locate 2 , 1
Lcd "    Test #6     "
'Waitms 1500                                                 'aspetta 1,5 sec
Gosub Chiusura3141                                          'apre 1121
Reset Max_r                                                 'disattiva il carico x 1121

' step 7
Locate 2 , 1
Lcd "    Test #7     "
'Waitms 10500                                                'aspetta 10,5 sec
Gosub Apertura3141                                          'apre3141 a vuoto

Count = Count + 1                                           'incrementa contatore
Reset Cnt                                                   'incremento il contatore esterno
Waitms 10
Set Cnt
'Lcd "conteggio" ; Count
If Count > 150000 Then Goto Fine_test


Goto Inizio

End                                                         'end program

Apertura3141:                                               'con conseguente CHIUSURA 1121
Locate 1 , 1
Lcd "  TEST lato R   "
Set Coil_r                                                  'eccita la bobina "R"
Wait 1                                                      'alimenta la bobina PER 1s
'If Ok_r = 0 Then Goto Fine_loop                   'test se scambio avvenuto: 0=non avvenuto ->ALARM!!
'If Ok_n = 1 Then Goto Fine_loop                   'test se scambio avvenuto: 1=non avvenuto ->ALARM!!
Reset Coil_r                                                'spegne la bobina "R"
Return

Chiusura3141:                                               'con conseguente APERTURA 1121
Locate 1 , 1
Lcd "  TEST lato N   "
Set Coil_n                                                  'eccita la bobina n
Wait 1                                                      'alimenta la bobina "N" per 1s
'If Ok_r = 1 Then Goto Fine_loop                   'test se scambio avvenuto: 1=non avvenuto ->ALARM!!
'If Ok_n = 0 Then Goto Fine_loop                   'test se scambio avvenuto: 0=non avvenuto ->ALARM!!
Reset Coil_n                                                'spegne la bobina "N"
Return


Fine_loop:
Cls:
Lcd "*** ALLARME! ***"
Lcd "CONTATTO APERTO!"
Wait 10
Goto Fine_loop

Fine_test:
Locate 1 , 1
Lcd "Fine Test:>>OK<<"
Locate 2 , 1
Lcd "START:RICOMINCIA"
If Star_t = 0 Then Waitms 20                                'debounce
If Star_t = 0 Then Key = 1                                  'key=1 inizio/continua test
If Star_t = 0 Then Goto Comincia
Goto Fine_test

Pausa:
Locate 1 , 1
Lcd "START: per Cont."
Locate 2 , 1
Lcd "STOP: Fine Ciclo"

If Star_t = 0 Then Waitms 20                                'debounce
If Star_t = 0 Then Key = 1                                  'key=1 continua test
If Star_t = 0 Then Goto Inizio

If Sto_p = 0 Then Waitms 20                                 'debounce
If Sto_p = 0 Then Key = 3                                   'key=3 fine test test
If Sto_p = 0 Then Goto Fine_test

If Bypass = 0 Then Waitms 20                                'debounce
If Bypass = 0 Then Key = 4                                  'key=4 al galoppo e poi torna qui
If Bypass = 0 Then Gosub Galoppo

Goto Pausa

Galoppo:                                                    'routine per incrementare velocemente in contatore esterno
Cls
Lcd "                "
Freerun:
Count = Count + 1
Reset Cnt                                                   'incremento il contatore esterno
Waitms 10
Set Cnt
Locate 2 , 1
If Bypass = 0 Then Goto Freerun
Return

End

e questo è lo schema elettrico:
http://dl.dropboxusercontent.com/u/1825 ... _schem.jpg

sulle uscite definite come OUT è poi collegata la piastrina shield 8 relè.

lo schema di una singola sezione dello shield è:
http://dl.dropboxusercontent.com/u/1825 ... %C3%A8.jpg

infine di seguito la tabella per ricapitolare tutti gli I/O di arduino:
http://dl.dropboxusercontent.com/u/1825 ... nement.jpg

per adesso i due input Ok_r e Ok_n sono ancora commentate perchè servono a verificare l'effettiva commutazione e per adesso non voglio ancora inserirla. magari alla fine.
Vi chiedo solo di non :lol: :lol: :lol: :lol: troppo del mio listato, sono un neofita e tanto già basta... :oops:
dimenticavo: questo circuito è stand-alone e non comunicherà a nessuno i risultati dei tests.

saluti a tutti coloro che hanno avuto la pazienza di leggere fin qui... :shock: :shock: :shock:
M
Last edited by mario59 on 12 Jun 2014, 21:49, edited 1 time in total.
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby mario59 » 12 Jun 2014, 21:46

Per PIER :!: :?:
L'USB mi serve SOLO per programmare l'arduino con BASCOM. dopo è inutilizzata.
Per l'alimentazione dell'arduino nel dispositivo di test, uso il connettore dell'alimentazione.
Purtroppo, con i pins di I/O sono veramente alle strette, me ne servirebbero altri! :o
E' quindi inutile pensare di usare altri pins. Il display, pur se usato a 4 bit, comunque usa uno sproposito di pins.
:!:
M
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 09:40

Caro Mario, nel codice postato non vedo le "rivisitazioni". In particolare ne l'IF/END IF ne il debounce.
Tieni presente che l'uso di debounce ti consentirebbe di eliminare gli RC sui pulsanti (per la R basta il pullup interno).
Per l'eleganza considera di usare INCR cont al posto di cont = cont + 1 ma questi sono diversivi...
Dalla breve simulazione fatta DO e D1 effettivamente si muovono. Dai sintomi (i circa 3V in out fissi) sembra possano essere forniti dalle resistenze di 1K verso il convertitore USB/seriale in quanto farebbero partitore con la R, il diodo ed il led dell'ingresso mentre DO e D1 non riescono a "tirare giù" il livello.
Sicuro che il micro sia ben infilato nello zoccolo e che i pin D0 e D1 tocchino?
Se si, temo per il micro ma mi sono sbagliato altre volte...

P.S. ribadisco che se hai problemi di pin potresti codificare almeno i pulsanti (da 4 pin a 3 -in quanto devi riconoscere anche lo stato di nessun pulsante premuto- risparmiandone 1) con un semplice codificatore (integrato come un priority encoder simile al LS74148 ovvero in glue logic).
Se poi il problema del numero di pin si facesse drammatico potresti pensare ad un I/O expander che comunichi con Arduino via I2C.
Non so se poi devi gestire anche eventuali pressioni contemporanee dei pulsanti stessi. Questo lo potresti fare intercettando la pressione con un interrupt e "fotografando" lo stato complessivo. Ora hai una precedenza casuale.
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby mario59 » 13 Jun 2014, 15:36

Ciao Pier,
Tramite questo mezzo, il forum, (che ringrazio Dio, che c'è!!! :D ) purtroppo è un pò macchinoso e lungo spiegare tutto.
Infatti la faccenda dell' IF-THEN semplicemente NON FUNZIONA così come me la fece capire Einstein.
Non so se dipende dalla mia versione del BASCOM, la 2.0.7.5, ma penso di no.
Se provi a modificare il codice come disse eistein, e simuli, ti rendi conto che dopo l' IF esegue quello che ci sta sotto. Punto.
Però almeno per ora, questo non è un vero problema.
Il codice compilato mi prende in tutti solo il 5% di tutta la memoria disponibile... razionalizzare per ora non è il mio obiettivo.
Il mio codice così com'è va bene e svolge gran parte delle funzioni necessarie.
Quello che mi mette profondamente a disagio sono i problemi "fantasma" come quelli dei pins di I/O che in simulazione vanno e nella realtà no.
Tutte le cose che mi dici di controllare, le ho fatte.
Non ti voglio sembrare presuntuoso (cosa che non sopporto negli altri figuriamoci se parlo di me!!) ma ti assicuro che ho fatto già tutte le prove che mi hai detto: contatti, cambiato micro, piste, saldature, tutto.
sono oltre 30 anni che bazzico con queste cose e so che tipo di problemi si incontrano -come hardwarista-
Specialmente quando trovi le "mezze tensioni" ! ! ! :ugeek:
Ho provato anche a mettere le altre sezioni del relè e fanno TUTTE la stessa cosa sul pin D0.
QUindi è qualcosa del pin D0 e D1. Il display che è collegato ad altri bits della porta D funziona egregiamente!
Infatti ho potuto verificare tra ieri e oggi che il pin D1 + piantato a 1 e non si muove, cioè non fa più il passaggio da 5 e 3V quando connetto i relè.
Ho pensato anche di alzare le due resistenze (R8 e R9) quando non devo programmare.
E' una prova che farò e ti dirò come va.
Sono riluttante a fare questa prova anche perchè se le alzo, ogni volta che dovrò riprogrammarlo dovrò saldarle di nuovo... :cry: :cry: :cry:
Dulcis in fundo, oggi mi ha chiamato il "committente" di questo apparato e non vuole sapere ragioni: sabato prossima settimana o funziona o... beh meglio non pensarci!!! :roll: :roll: :roll:
Spero sinceramente qualcuno possa darmi una buona dritta per uscire da questo PANTANO... :? :( :shock:
M
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby mario59 » 13 Jun 2014, 15:46

Pare che non sono il solo ad avere questo problema: :shock: :shock: :shock:

http://forum.arduino.cc/index.php?topic=155445.0

quindi che fo' ????
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 16:01

Direi che alzare R8 e R9 non è una soluzione. Hai misurato sui pin (ma proprio dove questi escono fisicamente dal chip del micro a monte dello zoccolo)?
Se lo schema della scheda relè che hai postato è corretto non saprei che altro dire. Il codice a me sembra ok per l'aspetto in questione.
Usi l'oscilloscopio per testare gli output? Prova a chiudere con una R + led oppure scambia i 2 pin in questione per fargli pilotare l'LCD e recupera 2 dall'LCD per queste funzioni (quando uno è disperato...) anche se dubito che risolverai così.
So che potrebbe suonare offensivo ma il micro lo hai sostituito ovviamente con uno nuovo e con bootloader installato vero?
Incredibile che l'IF/END if non funzioni. Posta il codice che usi
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 16:06

Ho visto quanto dici sugli altri users di Arduino (che, anche se comodo, a me non piace).
Il problema parrebbe legato al fatto che se colleghi D0 e D1 ad un carico rischi di avere problemi a programmare il micro (cosa tutt'altro che impossibile).
C'è anche un riferimento ad un preteso 3,3V che non capisco ma non gli darei troppo peso.
Prova a staccare la scheda relè durante la programmazione e riattaccala solo dopo, quando stacchi l'usb e riaccendi x usare il tutto.
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby mario59 » 13 Jun 2014, 17:03

Si Pier,
uso l'oscilloscopio. e sul pin FISICO della porta D0 del micro trovo 3V; quando metto una qualsiasi delle sezioni della scheda relè. Se stacco il "carico" va a 5 e COMUNQUE non si muove!
E' quindi una "sofferenza" di QUEL PIN ed esattamente il D0, inoltre D1 è FISSO a +5 e nche lui non fa nulla altro.
Anche se li programmati diversamente.
La mia postazione è cosi' costituita: un pc con la USB e il compilatore BASCOM per programmare.
Dopo di che stacco la schedina arduino 2009 e la porto su un banco con la scheda relè e l'alimentatore da banco dove il micro fa il run del programma.
Sono due postazioni distinte e non hanno nulla in comune. neanche l'alimentatore.
Sono finanche separate fisicamente da qualche metro... :lol: :lol: :lol: vabbè ho esagerato nella descrizione... :D
Non programmo MAI l'arduino direttamente sul banco del prototipo, bensì STAND ALONE sul banco di programmazione soltanto con la porta USB attaccata.
Non ho usato la ISP finora, anche perchè la programmazione potrebbe cancellarmi il bootloader.
Non è una perdita grave, lo so, anzi in un altro progetto con arduino feci DIRETTAMENTE così e non ho mai avuto problemi sulla movimentazione dei pins!!! :x
Questa cosa mi risulta comoda per la velocità e la facilità di programmazione che trovo con BASCOM.
Ho provato a scambiare le funzioni dei pins D0 e D1, ma il "sofferente" rimane D0 e COMUNQUE nessuno dei due si muove come dovrebbe e potrebbe.
Proverò a fare la prova che mi dici della R+led. Mentre lo "scambiare" i pins per pilotare l'LCD non è così facile. Ho montato su uno shield con LCD e le piste sono già cablate. vorrei evitare, se possibile, di trinciare piste e fare ponticelli...
Il codice che è all'inizio di questo post, credimi, è quello che ho a bordo dell'arduino.
Non ci sono trucchi nè inganni! In questo non ti ho sottaciuto nulla! :!: ;) ;) ;)
ma a chi ti riferisci quando dici che parlo di "altri utenti"? Non ti ho capito! :roll:
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 17:32

Mi riferisco a quelli che hai trovato tu con gli stessi problemi. La cosa è abbastanza illuminante. Il problema potrebbe stare sulla programmazione piuttosto che sul funzionamento. Mi pare di aver capito che Arduino lo programmi senza scheda relè attaccata (procedura corretta).
Prova a programmarlo così e a lanciare l'applicazione sempre a scheda staccata solo controllando i livelli di D0 e D1
in quanto non potendo escludere che il "genio" sentendo una condizione particolare (dovuta al carico) all'avvio vada sempre in modalità di programmazione. Se funziona ti direi quindi di provare a mettere un buffer su D0 e D1 (anche solo un transistor montato ad emitter follower o un CD4010 o simili) in modo che Arduino non senta nessun carico all'avvio.
Resta comunque molto raccomandabile staccare la scheda relè durante la programmazione pure con i buffer anche per evitare che il traffico dati possa danneggiare i relè.
Forza che ci sei quasi.

P.S. al posto di IF/END IF potresti forse meglio usare il SELECT CASE
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby mario59 » 13 Jun 2014, 17:58

GIURO:

se me ne esco fuori dal problema D0 e D1 faccio tutte le prove IF/END IF, SELECT CASE; vado pure sulla luna! :lol: :lol: :lol:
grazie comunque per il "tifo" :D :D :D
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 18:02

Vai, prova senza scheda relè anche durante il funzionamento e misura lo stato di D0 e D1. Dovrebbero andare!!
L'alimentatore da banco è tranquillo? (visto i precedenti...)
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby deluca » 13 Jun 2014, 18:52

Un consiglio !!
io lascerei in pace i pin TXD e RXD.
Nella modalità UART standard TTL vengono tenuti a livello logico alto...5V o 3.3V per poi portati bassi durante la transizione dei dati asincroni. Quindi succede che l'interfaccia USB-232(atmega o FTDI) alla fine dello bootloader download lascia i pin D0 1 D1 a livello logico uno, imponendo così una forzatura a questo livello.
Per ottimizzare il circuito d'ingresso dei pulsanti, io migrerei verso un I2C expander I/O che ti permetterebbe di generare un int durante la variazione di stato di uno degli ingressi e tu risparmieresti sul numero di pin di I/O.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 19:17

@Deluca
Temo che Mario sia stretto con i tempi.
Qualora il sistema continuasse a non funzionare anche dopo gli ultimi tentativi, l'inserimento delle istruzioni Reset RXEN e Reset TXEN prima di usare D0 e D1 pensi potrebbe aiutarlo?
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby mario59 » 13 Jun 2014, 20:16

@deluca
ma le resistenze R8 eR9 no dovrebbero tenere un pò "separate" queste uscite? Sono lì apposta!
Se questi due pins del micro non potessero essere utilizzati non li avrebbero cablati fuori e resi disponibili!!! :!:
effettivamente ho i tempi stretti... :o
Ora provo a caricare il SW usando l'ICSP che con l'altro progetto non mi diede problemi....
speriamo bene.... tra un'oretta vi dirò com'e' andata :roll: :P

@pier
ma come si usano RXEN e TXEN????
a me dànno errore nella compilazione!!! :x :x :x
Image
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 20:37

Si, le resistenze "separano" ma se il problema è, come dice Deluca, che D0 e D1 restano settati dal bootloader come TX/RX sei fritto. Per questo pensavo al tentativo di inserire la disabilitazione di TXEN ed di RXEN come dicevo prima oltre al tentativo di provare senza attaccare i relè.
Scusa, ho visto ora il tuo messaggio sull'errore in compilazione. Effettivamente invece di Reset TXEN etc, dovresti provare ad usare UCSR0B.3 = 0 e UCSR0B.4 = 0. Provato e non da errori. Questo dovrebbe disabilitare TX e RX seppure così dovrebbe essere di default dopo il reset ma Deluca ha posto dei dubbi.
Last edited by pier on 13 Jun 2014, 21:08, edited 2 times in total.
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Re: Compatibilità pins D0 e D1

Postby mario59 » 13 Jun 2014, 20:51

arduino, programmato ed alimentato, così com'è anche senza attaccare la piastra relè NON MUOVE i pins D0 e D1, assolutamente.
Verificato con oscilloscopio.
Se ne stanno lì piantati a !1! e basta.
Ora sto provando a programmare il chip un l'USBASP che è un è un programmatore diretto della interfaccia ICSP, ma non so come farlo "vedere" al BASCOM... che jattura! mamma mia !!

vabbè dopo cena continuo... a dopo!
Mario59
User avatar
mario59
 
Posts: 43
Joined: 27 Mar 2013, 17:33
Location: Napoli

Re: Compatibilità pins D0 e D1

Postby pier » 13 Jun 2014, 21:00

Questo rafforza quanto detto dal guru Deluca. Ma prova a dare un occhio anche alla modifica del mio post precedente a proposito di TXEN e RXEN.
Per quanto riguarda invece l'USBASP è supportato direttamente da Bascom
Last edited by pier on 13 Jun 2014, 22:58, edited 1 time in total.
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05

Next

Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 20 guests

cron