Per il proton basic, qui l' indirizzo
http://www.protonbasic.co.uk/vbdownloads.php?do=file&fileid=… Che dovrebbe reindirizzare al file da scaricare.
Però è la versione 3.6.0.2_1.0.4.4. Penso che hai installo un aggiornamento che manca della base da aggiornare.
Anno nuovo, forum nuovo.
Mi sa che lascio.
picmicro675
postato il: 08.09.2018, alle ore 19:35
Device 16F887
Declare Xtal 20
inizio:
High PORTB.0
DelayMS 3000
Low PORTB.0
GoTo inizio
End
; Poi il suo HEX
:10000000000000308A002528A301A200FF30A207CB
:10001000031CA307031C21280330A100E630122093
:100020000628A101FC3EA000A109031C1D28FF30E9
:100030000000A00703181828A0070000A10F172828
:100040000800831383120313080083018316031728
:100050008801890183128701880103138316061022
:10006000831206140B30A300B8308A0105208316D2
:100070000610831206108A012D288A013D288A0164
:020080003F2817
:02400E00E2309E
:02401000FF3E71
:00000001FF
Vesione 3.6.2.1 Free
Non ho capito come hai fatto a non fare.
Scrivi il programma, salvi per la prima volta e quindi compili. Cerca nella cartella che hai salvato il basic che trovi l' assembler e l' HEX. Sebbene puoi usare anche il visualizzatore del proton per vedere l' assembler, che di solito inizia con un migliaio di righe di dichiarazioni e routines di uso nel programma.
Anno nuovo, forum nuovo.
Mi sa che lascio.
angelole
postato il: 09.09.2018, alle ore 10:26
picmicro675: Per il proton basic, qui l' indirizzo
http://www.protonbasic.co.uk/vbdownloads.php?do=file&fileid=… Che dovrebbe reindirizzare al file da scaricare.
Però è la versione 3.6.0.2_1.0.4.4. Penso che hai installo un aggiornamento che manca della base da aggiornare.
Infatti manca qualcosa, stamattina ci metto mani
angelole
postato il: 09.09.2018, alle ore 10:27
Rimane il problema del codice in assembly che ho postato all'inizio. Se qualcuno ha la bontà nel frattempo di dare un'occhiata per capire quali siano i problemi ne sarei grato
picmicro675
postato il: 09.09.2018, alle ore 16:22
Dunque..... Ho abbellito il programma (storpiature di grix) e provato al simulatore.
CBLOCK 30H
Dly0
Dly1
Timer1 ; contatore per DelayP
Timer2 ; " "
Timer3 ; " "
; contenitore temporaneo per calcoli routine display
DispTemp
DispCnt
TabTemp
Varie ; subroutine bip
F20
Temp
; indirizzo nel caso in cui il up legga i dati dall'orologio
ADD_DS1307_PICRX
; indirizzo nel caso in cui il up scriva i dati sull'orologio
ADD_DS1307_PICTX
ENDC
;*******************************************************************************
; PROGRAMMA PRINCIPALE
;*******************************************************************************
Start
org 0x00
;*******************************************************************************
; Inizializzazione sistema e variabili
;*******************************************************************************
Inizializzazione
clrf STATUS
banksel PORTA
clrf PORTA ; port A = 0
clrf PORTB ; port B = 0
clrf PORTC ; port C = 0
; -------------------
banksel ADCON0
clrf ADCON0
banksel ADCON1
movlw 00000111b
movwf ADCON1
;------------------------------------------------------------------------------
; 0=uscita 1=ingresso
;------------------------------------------------------------------------------
banksel TRISA
clrf TRISA
movlw 00001111b
movwf TRISB
movlw 00011000b
movwf TRISC
movlw 00011000b
movwf TRISD
clrf TRISE
; ------------------
banksel SSPADD
movlw 0x09 ; 100 kHz I2C speed
movwf SSPADD ; (SSPADD) = (FOSC / (4*f SCL)) - 1 = 0x09
; ------------------
bcf SSPSTAT,SMP ;
bcf SSPSTAT,CKE ;
[PIC16 MSSP] PC=0x003D. Data written SSPBUF whilst MSSP (in I2C master mode) is active - data has been ignored. [U1]
Allora vedo cosa potrebbe essere con la AN735, consigliata. Sebbene, altro consiglio, potresti prendere le loro routines che sono utili per leggere i dati dell' RTC, visto che sono ben strutturate.
Ulteriormente, il 16F877A ha il debug in hardware che ti permette l 'ICD.
Anno nuovo, forum nuovo.
Mi sa che lascio.
picmicro675
postato il: 09.09.2018, alle ore 16:25
Ah! ci sono un paio di errori nel listato. Corretti con il compilatore. P.Es. l' etichetta Start e il CBLOCK che non dovrebbe stare in prima colonna.
picmicro675: Allora.....
Ho trovato delle macro
http://www.piclist.com/techref/microchip/i2c87xjs.htm Che mi fa supporre che stai aspettando un ACK ds SPCON2.ACKSTAT, ma le macro dicono che dovresti aspettare da PIR1,SSPIF.
C'è un interrupt... allora ricapitoliamo, guardando i grafici del protocollo I2C, dopo il bit start non dovrebbe esserci alcun ACK anche perchè lo slave non sa ancora se deve essere letto o scritto dal master. non capisco, in questa fase, perchè c'è da aspettare il PIR1,SSPIF posto che non dovrebbe esserci, appunto, alcun segnale ACK
mi è venuta in mente una cosa... faccio una prova e posto i risultati
angelole
postato il: 10.09.2018, alle ore 17:50
forse occorrerebbe fare polling per aspettare l'invio del bit start, dopodichè inviare la prima stringa (indirizzo dello slave + bit flag lettura/scrittura ed aspettare l'interrupt che segnali l'invio del primo byte? E' questo l'errore???
picmicro675
postato il: 10.09.2018, alle ore 19:46
Penso che quello che hai mostrato all' inizio è solo un esplicativo. Non proprio quello che ti serve nel reale. Comunque a te non serve la gestione interrupt, basta solo che guardi il flag di SSPIF oppure SPCON2.ACKSTAT. Che mi pare sia citato anche nella AN735 (ripresi anche nella AN736)
C'è da inviare lo start, che se vedi, sta ad aspettare che PIR1,SSPIF vada alto. Poi invia l' indirizzo e aspetta ancora che il PIR1,SSPIF vada alto. Poi abilita RCEN ed aspetta la risposta dallo slave.
Quindi manda uno stop.
Questo è quello che si fa di solito per inviare UN byte. C'è anche la procedura che invia una stringa di bytes, che mandano un restart per ogni byte senza il segnale di stop, che sarà l' ultimo.
Le macro potrebbero avere un difetto di aspettare incondizionatamente che lo slave risponda. Per me dovrebbe esserci un timeout e saltare un giro. Ma non ho ancora le informazioni corrette per dire se sia una cosa fatta bene.
Riferito al leggere i dati dall' RTC, presumo che la ricezione sia di una stringa di bytes, del quale si aspetterà quando arriva il segnale di stop.
Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito