OpenLog

Hallo CO,

Heb zitten stoeien met de PIC16F628a en de Openlog van Sparkfun. Had het eerst op 20MHz draaien op 5V. Maar aangezien de Openlog zijn Txd 3,3V is. Heb ik de PIC aangesloten op een 3V. Met de interne OSC op 4MHZ.
De 4Mhz heb ik gedaan, omdat ik de ProtonLite versie nog heb. Deze ondersteund alleen nog de 4 of 20Mhz. En aangezien bij 3V de PIC maar tot 10Mhz ondersteund. Moest ik even wat voor de test.
Ben bezig met het verkrijgen van een vervanger voor de ProtonLite, maar Proton+ is niet verkrijgbaar in NL. En van Crownhill kost het best veel. Maar dat is voor een ander topic denk ik.

Het schrijven naar de OpenLog is geen probleem meer. Maar zou graag willen weten of er wel een SDkaart in zit. En wat dan dus de status is van de OpenLog. Volgens Sparkfun zou er <12 uit moeten komen, zodra deze paraat is.

Heb nu een LCD scherm aangesloten zodat ik een soort debug scherm heb. Maar wat ik daar nu zie snap ik helemaal niks van. Ik krijg dus bij het opstarten de waardes te zien: 15410 -> 15998 -> 6682 -> 6682 -> (enz 6682)

Als ik dit opzoek in een ACSII tabel, dan is niks logisch. Dus ik doe iets verkeerds, maar wat? Dit is dus met zowel de externe 20Mhz(op 5V) als ook de interne 4Mhz (3V).

Hieronder mijn (slordige) test code.

pic basic code:


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Jurriaan de Veld                                  *
'*  Notice  : Copyright (c) 2018 JuCoDi                         *
'*          : All Rights Reserved                               *
'*  Date    : 15-2-2018                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
;                  PIC16F628A:                 +---v---+
;                          LED aansturing A.2<>[1    18]<>A.1 vrije poort
;                             vrije poort A.3<>[2    17]<>A.0 vrije poort 
;                                              [3    16]< kristal 20MHz
;                                              [4    15]< kristal 20MHz
;                                         GND  [5    14]  +5V (0f 3V3)
;                                    LCD EN    [6    13]  LCD DB7    
;                                    USART RX >[7    12]  LCD DB6     
;                                    USART TX <[8    11]  LCD DB5
;                                    LCD  RS   [9    10]  LCD DB4
;                                              +-------+
; KRISTAL INFO: PICBASIC CURSUS DEEL 3
; LCD INFO: PICBASIC Cursus Deel 4

DEVICE 16F628A                                              ;Gebruik een 16F628A
;CONFIG HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF        ;Gebruik Externe Kristal
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, BODEN_OFF, MCLRE_OFF        ;Gebruik Interne Kristal
ALL_DIGITAL TRUE                                            ;Alle ingangen digitaal maken
;XTAL = 20                                                   ;Kristal van 20MHz


'LCD aansluitngen verplaatsen
DECLARE LCD_ENPIN = PORTB.0       ;De ENable aansluiting 
DECLARE LCD_RSPIN = PORTB.3       ;De RS aansluiting


; WAARDES MET INTERNE 4MHZ
RCSTA = $90 ' Enable serial port & continuous receive
TXSTA = $24 ' Enable transmit, BRGH = 1
SPBRG = 25  ' 9600 Baud @ 4MHz, 0,16%

DECLARE HSER_RCSTA 90h ' Enable serial port & continuous receive
DECLARE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DECLARE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DECLARE HSER_CLROERR 1 ' Clear overflow automatically


; WAARDES MET 20MHZ
;KOPIE VAN USART CALC MISTER E
;RCSTA = $90 ' Enable serial port & continuous receive
;TXSTA = $24 ' Enable transmit, BRGH = 1
;SPBRG = 129 ' 9600 Baud @ 20MHz, 0,16%

;DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
;DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
;DEFINE HSER_SPBRG 129 ' 9600 Baud @ 20MHz, 0,16%
HSERIAL_CLEAR = ON

;EINDE KOPIE



;VARIABELE
DIM teller  AS Byte
DIM inData as word
                                                          
;Het geheugen leeg maken
CLEAR

;        76543210
'PORTA = %00000001                                          ;PIC opstarten met alle PORTA poorten laag
'PORTA = %00000000                                          ;PIC opstarten met alle PORTB poorten laag
TRISA = %11111001                                           ;Maak POTRA.1 uitgang voor LED aansturing
TRISB = %11111111



;Start Hoofdprogramma
PORTA.2 = 1
CLS
PRINT at 1, 1,  "SD Kaart wordt", at 2, 1, "opgestart."

DELAYMS 1500    ;SD kaart opstarttijd gunnen
  'PORTA.2 = 0


'Get data from TX
cls 

repeat
    
  'print "DATA:"
  HSerin 0, verder, [indata]               'HSERIN (niet wachten), (naar SUB), (Gegevens)

  print "DATA1:", dec inData, " "          '[DEC] GEEFt 29253  als error  later ook 28530
                                           ' 15410 -> 15998 -> 6682 -> 6682 -> enz..  

  verder:

    DELAYMS 2000
    toggle PORTA.2
    HSEROUT [26]
    HSEROUT [26]
    HSEROUT [26]
until inData = 1111 'Na Programmeren             111001   000101 = 36 53
                    'Nieuwe Spanning Zonder SD   111001001000101 = 29253

if inData = 0 then
  teller = 0
  
  REPEAT
    'PORTA.2 = 0 
    HSEROUT [dec teller ,44, "Datum: 25-02-2018"]        ;44 = ,
   ' DELAYMS 15 
    'hserout [13,10]    ;ENTER(13=CR gevolgd door 10=LF) -> CARRIAGE RETURN                                
    INC teller                                               ;teller met 1 verhogen
    DELAYMS 1000
      CLS
      PRINT at 1, 1,  "Writing..."                                              
  UNTIL teller = 3                                            ;Stoppen als waarde is behaald

elseif inDATA = 29253 then
  cls
  print "SD Error" 
  delayms 2000
endif


  PORTA.2 = 1

END                                                         ;END the program

Lambiek

Special Member

Op 23 maart 2018 11:25:33 schreef Darknight:
Heb zitten stoeien met de PIC16F628a en de Openlog van Sparkfun. Had het eerst op 20MHz draaien op 5V. Maar aangezien de Openlog zijn Txd 3,3V is. Heb ik de PIC aangesloten op een 3V. Met de interne OSC op 4MHZ.

En als je XTAL = 4 neerzet, nu staat er helemaal niets.

Ben bezig met het verkrijgen van een vervanger voor de ProtonLite, maar Proton+ is niet verkrijgbaar in NL.

VOTI heeft dat toch.
http://www.voti.nl/winkel/catalog.html

Staat onder pic microcontrollers, bijna onderaan.

Als je haar maar goed zit, GROETEN LAMBIEK.
buckfast_beekeeper

Golden Member

Is het niet eenvoudiger je PIC op 5V te zetten en een buffer te gebruiken?

4MHz is niet ideaal om een mooie baudrate te verkrijgen. 3.6864MHz of een veelvoud is mooi te gebruiken.

Van Lambiek wordt goede geuze gemaakt.
Lambiek

Special Member

Er is trouwens ook een gratis compiler te downloaden hier.
https://www.crownhill.co.uk/01334.html

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 23 maart 2018 11:46:02 schreef Lambiek:
[...]
En als je XTAL = 4 neerzet, nu staat er helemaal niets.

[...]
VOTI heeft dat toch.
http://www.voti.nl/winkel/catalog.html

Staat onder pic microcontrollers, bijna onderaan.

Bedankt voor de reactie. Van Voti heb ik gezien. Er staat helaas tijdelijk uitverkocht. Heb al een mail gestuurd, maar helaas nog niks mogen ontvangen.

Die XTAL = 4 Dacht dat ik die alleen moest invullen met een externe OSC. Maar ga het proberen.

Op 23 maart 2018 12:01:49 schreef buckfast_beekeeper:
Is het niet eenvoudiger je PIC op 5V te zetten en een buffer te gebruiken?

4MHz is niet ideaal om een mooie baudrate te verkrijgen. 3.6864MHz of een veelvoud is mooi te gebruiken.

Waarschijnlijk een domme vraag. Maar hoe moet ik dat doen? Heb je iets van een voorbeeld voor die buffer? Die 4MHz vind ik ook net niks. Zeker omdat de interne OSC niet zo zuiver zou zijn, maar hoopte voor nu te testen op 3V dat het wel iets zou geven.
Voor die 3.6864MHz... Bedoel je dat ik dat dan invul bij XTAL?? Dan zou het met de externe 20MHz kristal 18,432Mhz zijn. Begrijp ik dat dan zo goed?

Betreft de Compiler, wil ook overstappen op een andere PIC aangezien ik me ook wil gaan verdiepen in het I2C protocol. Dit dan met een klok pic.
Het zou dan de PIC16F1847 worden, maar de gratis versie ondersteund dat dus weer niet helaas.

Lambiek

Special Member

Er staan wel types tussen die I2C aan boord hebben, dus waarom dan voor een 16F1847 kiezen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 23 maart 2018 13:53:49 schreef Lambiek:
Er staan wel types tussen die I2C aan boord hebben, dus waarom dan voor een 16F1847 kiezen.

Ok, ja ik heb deze geselecteerd via de Microchip selectie tool. Er zijn gewoon te veel Ucontrollers haha.
Wilde zelfde aantal pins en I2C en deze kwam er zo uitrollen.
Andere suggesties zijn ook goed. Maar wil dan wel I2C en USART tegelijk gebruiken. Maar heeft die van Proton Free dan geen regel limiet?

Zag ook dat de 16F1847 gewoon >16Mhz kan draaien boven de 2,5V.
Maar suggesties zijn welkom. Het is voor mij dan wel een hobby, maar leer graag.

Maar daar los ik denk niet mijn probleem mee op. Dat ik rare waardes uit me OpenLog krijg?

Lambiek

Special Member

Op 23 maart 2018 14:59:09 schreef Darknight:
Wilde zelfde aantal pins en I2C en deze kwam er zo uitrollen.
Andere suggesties zijn ook goed. Maar wil dan wel I2C en USART tegelijk gebruiken.

Als je bijv. de 16F687 neemt, die heeft beide aan boord. Is alleen 20 pins in plaats van 18.

Maar daar los ik denk niet mijn probleem mee op. Dat ik rare waardes uit me OpenLog krijg?

Nee inderdaad, maar ik heb geen ervaring met die logger dus ik zou het zo één twee drie niet weten.

Is de baud rate ook 9600 van je logger?

Het kan ook nog een timing probleem zijn omdat je nu op 3.3V zit en niet met een kristal werkt.

Als je haar maar goed zit, GROETEN LAMBIEK.
buckfast_beekeeper

Golden Member

http://www.gravitech.us/mi5v3lesh.html als voorbeeld. Datasheet. Component.

Voor het kristal kies je een frequentie die mooi deelbaar is naar een baudrate. Uiteraard zet je er dan ook een kristal in met die frequentie. Bruikbare kristallen.

  • 3.6864MHz
  • 7.3728MHz
  • 11.0592MHz
  • 14.7456MHz
  • 18.4320MHz
Van Lambiek wordt goede geuze gemaakt.
Arco

Special Member

Er staan wel types tussen die I2C aan boord hebben, dus waarom dan voor een 16F1847 kiezen.

Die is pin-compatible met veel voorgangers, als de 16F627/628/648, dus wel handig.
Bovendien kan 'ie veel meer, en is veel sneller (vooral met interrupts)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Heeft een 16F627, 16F628, 16F648 I2C dan?

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

Ik zeg daarom ook dat 'ie (de 1847) veel meer kan... ;)
(ik gebruik in de 648 trouwens wel i2c, maar dan softwarematig)

[Bericht gewijzigd door Arco op vrijdag 23 maart 2018 17:47:42 (37%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 23 maart 2018 17:46:48 schreef Arco:
Ik zeg daarom ook dat 'ie (de 1847) veel meer kan... ;)

Oké, dat was me even ontgaan. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Misschien is de 16F1826/16F1827 wat, die zijn beide pincompatible met de 16F628A/16F648A. Inderdaad ook veel meer mogelijkheden en 14bit enhanced

Op 23 maart 2018 16:13:26 schreef buckfast_beekeeper:
http://www.gravitech.us/mi5v3lesh.html als voorbeeld. Datasheet. Component.

Voor het kristal kies je een frequentie die mooi deelbaar is naar een baudrate. Uiteraard zet je er dan ook een kristal in met die frequentie. Bruikbare kristallen.

  • 3.6864MHz
  • 7.3728MHz
  • 11.0592MHz
  • 14.7456MHz
  • 18.4320MHz

Super bedankt. Wat is de reden dat je eigenlijk deze frequnties aanhoud? Net zoals de PICbasic cursus wordt er gesproken over 20MHz.

Die converter gaat ik eens voor kijken.

Op 26 maart 2018 16:38:37 schreef Dompie:
Misschien is de 16F1826/16F1827 wat, die zijn beide pincompatible met de 16F628A/16F648A. Inderdaad ook veel meer mogelijkheden en 14bit enhanced

Bedankt zal ook deze eens bekijken, heb ze wel in de lijst zien staan inderdaad.

Op 23 maart 2018 15:59:19 schreef Lambiek:

Is de baud rate ook 9600 van je logger?

Het kan ook nog een timing probleem zijn omdat je nu op 3.3V zit en niet met een kristal werkt.

De logger werkt op diverse baudrates, maar standaard inderdaad op 9600. Dit is in te stellen in de Config.txt die op de SDkaart staat.

Lambiek

Special Member

Op 23 maart 2018 16:13:26 schreef buckfast_beekeeper:
Voor het kristal kies je een frequentie die mooi deelbaar is naar een baudrate. Uiteraard zet je er dan ook een kristal in met die frequentie. Bruikbare kristallen.

  • 3.6864MHz
  • 7.3728MHz
  • 11.0592MHz
  • 14.7456MHz
  • 18.4320MHz

Ik doe de seriële communicatie gewoon met een 10MHz kristal, en dat werkt ook prima. Geen problemen mee.

Als je haar maar goed zit, GROETEN LAMBIEK.
buckfast_beekeeper

Golden Member

@darknight: op andere frequenties zit je met een klein verschil om een 'perfecte' baudrate te krijgen. Bij 8MHz is dat voor 9600Bd 0,2% bij 14400Bd is dat 0,6% en bij 28800Bd is dat 2,1%. Bij de gegeven kristallen is het verschil overal 0%.

Mijn ervaring is dat ik op 20MHz met de GPS module problemen had met gegevens uitlezen op 38400Bd (1,4% verschil). Ondanks wat spelen met register waardes. Met een kristal op 18,4320MHz had ik het probleem niet.

Van Lambiek wordt goede geuze gemaakt.