SchemaTheek
 
Home Nieuws Forum Schema's Artikelen Magazine Downloads Links Shops Zoeken
 
Controle Paneel
Gebruikersnaam
Wachtwoord
  Onthoud mij
» Wachtwoord?
» Registreren
Site info
» Het Team
» Contact
» FAQ
» Leden
» Upload Archief
Stats
Totaal online: 2
2 gasten
0 leden:
Forum > Digitaal > code picbasic pro naar proton
[1] 2 »
CARDAN
Lid
Berichten: 225
Gepost op maandag 5 September 2011 15:36:27 QuoteWijzig

Hallo Allemaal

ik heb een stukje code die de pll aanstuurd in picbasic pro
dat werkt uitstekend maar alleen op lcd display ik weet in de proton versie kan je een glcd aansluiten
mijn vraag is kan ik dat omzetten van picbasic pro naar proton zoals het nu werkende is de rest van glcd aansturing is een bijzaak achteraf zoals nu gebruik ik define in proton is het declare enz ik ben einde raad voor het omzetten van eprom 0,....,..... naar proton ook met write en andere functies
wie kan me helpen om de zaak draaiend te krijgen in proton..
zoals het commando HULP2 = UP & ~ HULP1 kent proton ook niet das voor mijn rotary perfect te laten werken
hier de listing die werd geschreven in picbasic pro


'Program voor i?c zenders en sp5055
'gestuurd met lcd in 4 bit mode.
'Fmin =1240 MHz, F max= 1301 MHz
'stappen 125, 250, 500, 1000 kHz
'ook memorie kan opgeslagen worden in eeprom van de pic


' *** Copyright - Cardan 2010 ***


' LCD PIC
' ------ --------
' DB4 PortB.4
' DB5 PortB.5
' DB6 PortB.6
' DB7 PortB.7
' RS PortB.1
' E PortB.3
' RW PortB.2
' Vdd 5 volts
' Vss Grond
' Vo potmetr +- 10K
'

' ** defineren van lcd voor pic16f628

' define osc 20
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
CMCON = 7 'voor 16f628
DEFINE I2C_SCLOUT 1
' ** Defineren van toetsen en i2c uitgangen

SCL var PORTA.1 ' SCL aan RB1 (pin 7)
SDA var PORTA.0 ' SDA aan RB0 (pin 6)

'knoppen
MEMO var PORTA.2 ' memoknop aan RA2 (pin 1)
UP var PORTA.3 'upknop aan ( RA0)
DOWN var PORTA.4 'downknop aan (RA1)
'CH_PAS var PORTA.4 'stappen khz aan( RA4)


INPUT MEMO


' ** Defineren van variabelen
COUNTER VAR WORD
HULP1 VAR BIT
HULP2 VAR BIT
b1 var BYTE
b2 var BYTE
b3 var BYTE
b5 var BYTE
ADDR2 VAR BYTE
PLLSTAT var BYTE
LOCKED VAR PLLSTAT.6
F1 var WORD
F2 var WORD
F3 var WORD
RXPLL VAR WORD

'defineren van tmp waarden
ADDR1 VAR BYTE
TMP VAR WORD
TMP_LO VAR TMP.LOWBYTE
TMP_HI VAR TMP.HIGHBYTE
PLLBASE VAR WORD
PLL VAR WORD
LO VAR PLL.LOWBYTE
HI VAR PLL.HIGHBYTE
PAS VAR BYTE '1=125kHz, 2=250kHz, 4=500kHz, 8=1MHz

'*** hoofdprog inlezen ***
ADDR1=$C2 'adres voor sp5055 I2C
'ADDR2= $C3 'adres voor pllstatus
PLLBASE=18400 'start 1200 MHz : 1240 / 0,125 = 9920
PAS = 2 ' stap de 0.500 MHZ default
PAUSE 100
' LOW PORTB.2 'Met RB2 = R/W ? 0
LCDOUT $FE, 1 ' Clear LCD screen
LCDOUT "13cm PLL " ' 1e lcd tekst
LCDOUT $FE,$C0
LCDOUT " Versie (2.5) "
lcdout $FE, $94," A.T.V "
lcdout $FE, $D4,"05/09/2011 V2.0"


PAUSE 1000

EEPROM 0,[$A0,$00]
'tmp voor 2320 mhz
'
'*** tmp inlezen van eprom ***

READ 0,TMP_LO ' inlezen tmp low
READ 1,TMP_HI ' inlezen van tmp high


' *** start van programma ***

MAIN:

PLL = PLLBASE + TMP


I2CWRITE SDA,SCL,ADDR1,[HI,LO,$8E,$CE] 'wegschrijven van i?c waarden naar pll

GOSUB CALCUL
GOSUB AFFICHAGE
PAUSE 20

'*** knoppen instellen aan en input ***

BOUCLE:

i2cread SDA,SCL,ADDR1,[PLLSTAT]
LCDOUT $FE, $8F
If LOCKED =1 Then
LCDOUT $FE, $C0,"PLL Status = OK "
high PORTB.1
low PORTB.0
else
endif

BUTTON MEMO,0,255,0,b5,1,STORE
counter =0
HULP2 = UP & ~ HULP1
HULP1 = UP

IF HULP2 = 1 AND DOWN = 1 Then
COUNTER = COUNTER + 1

EndIF

IF HULP2 = 1 AND DOWN = 0 Then
COUNTER = COUNTER - 1
EndIF

if COUNTER = 1 then
goto monte:
endif
if counter = -1 then
goto DESCEND:
endif
GOTO BOUCLE


MONTE:
TMP = TMP + PAS
IF TMP > 1600 THEN TMP = 0 'Fmax
GOTO MAIN

DESCEND:

IF TMP<PAS THEN RAZ_TMP
IF TMP = 0 THEN TOP
TMP = TMP - PAS
GOTO MAIN

TOP: TMP= 1600
GOTO MAIN

RAZ_TMP: TMP = 0
GOTO MAIN

CHOIX:
IF PAS = 80 THEN SAUTE
IF PAS = 8 THEN DIX_MHz
PAS = PAS*2
GOSUB AFFICHE_PAS
GOSUB AFFICHAGE
GOTO BOUCLE

SAUTE: PAS = 1
GOSUB AFFICHE_PAS
GOTO BOUCLE


DIX_MHz: PAS = 80
GOSUB AFFICHE_PAS
GOSUB AFFICHAGE
GOTO BOUCLE

CALCUL: ' ** Berekenen van frequentie

F1= PLL - 16000 ' 1GHz (PLL - 16000)
F2=F1/8 'neemt de MHz
F3=125*(F1//8) 'neemt de kHz
RETURN

AFFICHAGE:
LCDOUT $FE, 2 ' Clear LCD screen
LCDOUT "FREQ = ",#2 'afdruk van mhz
LCDOUT #F2
LCDOUT "."
LCDOUT #F3," Mhz " 'LCDOUT ," MHZ "
' LCDOUT $FE,$C0
'LCDOUT " "

If LOCKED =0 Then
LCDOUT $FE, 2
LCDOUT $FE, $C0,"PLL Status =Fout"

low PORTB.1
high PORTB.0
endif
RETURN

AFFICHE_PAS: 'stap verandering op scherm

LCDOUT $FE, 1 ' Clr lcd
LCDOUT "Stap van "
LCDOUT # 125*PAS
LCDOUT " kHz"
PAUSE 1000
RETURN

'*** MEMO EN OPSLAG IN EEPROM PIC

STORE:
WRITE 0, TMP_LO
WRITE 1, TMP_HI
LCDOUT $FE, 1
LCDOUT " FREQUENTIE "
LCDOUT $FE,$C0
LCDOUT " OPGESLAGEN "
lcdout $FE, $94," IN EEPROM "

pause 3000
gosub AFFICHAGE:
GOTO BOUCLE




ik dank iedereen alvast groetjes CARDAN


reddevil
Lid
Berichten: 1150
Gepost op maandag 5 September 2011 21:27:51 QuoteWijzig

Dat is niet zo gemakkelijk. Ik ken die taal ook niet, maar is het niet mogelijk om zelf een eigen programma te schijven. Je weet wat het moet doen, je kan dus gemakkelijk vergelijken.


Veel te weinig tijd voor mijn projecten of heb ik er soms te veel?
CARDAN
Lid
Berichten: 225
Gepost op maandag 5 September 2011 21:42:36 QuoteWijzig

Ja dat kan ik wel doen alleen heb ik met bepaalde commandos last data ik de hex getallen niet kan koppellen b.v i2cwrite eprom write en dan nog enkele moest ik dat onder de hand hebben is het geen probleem om dan een glcd te koppellen

CARDAN
Lid
Berichten: 225
Gepost op maandag 5 September 2011 21:45:49 QuoteWijzig

ik probeer alles eens te veranderen naar proton maar hoever ik juist zal zijn das een other question

pascalbianca
Lid
Berichten: 1364
Gepost op maandag 5 September 2011 22:38:00 QuoteWijzig

http://www.protonbasic.co.uk/showthread.php/50011-PBP-to-Proton-Plus-Converter?s=c5ee961ed88c5b032a65a313fa3c49b3


http://pascalbianca.blogspot.nl/
CARDAN
Lid
Berichten: 225
Gepost op maandag 5 September 2011 23:10:09 QuoteWijzig

thks pascalbianca ik ben al vollop bezig he maar weet nu al dat er errors zullen zijn

in wegschrijven van eperom en bepaalde tekens

CARDAN
Lid
Berichten: 225
Gepost op dinsdag 6 September 2011 21:41:58 QuoteWijzig

het progje ziet er goed uit nu in proton mijn memorie werkt als ik store doe de drukknoppen ook maar ik had een stukje code vroeger in men andere listing erin gezet dat ik met welk gelijke rotory ook op de ingangen van de drukknoppen kon werken nu heb ik het laatste die infeite niet werkt en das het volgende hij ziet 2 tekens staan die niet geacepteerd worden in proton hier de listing en dan eronder wat proton niet kan verwerken weet iemand daar en oplossing voor die regel ??????

listing van up en down

HULP2 = UP & ~ HULP1
HULP1 = UP

If HULP2 = 1 And DOWN = 1 Then
Counter = Counter + 1

EndIf

If HULP2 = 1 And DOWN = 0 Then
Counter = Counter - 1
EndIf

If Counter = 1 Then
GoTo MONTE:
EndIf
If Counter = -1 Then
GoTo DESCEND:
EndIf


en hier de regel die proton niet kent hoe moet ik dat gaan defineren??????

HULP2 = UP & ~ HULP1 (wat zie ik over het hoofd??????)

Stynus
Admin
Berichten: 2691
Gepost op dinsdag 6 September 2011 22:37:21 QuoteWijzig

Ik vermoed dat de compiler moeite heeft met 2 dingen op 1 regel. Probeer eens er dit van te maken:

Code
HULP2 = ~ HULP1
HULP2 = UP & HULP2 


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
CARDAN
Lid
Berichten: 225
Gepost op woensdag 7 September 2011 15:42:45 QuoteWijzig

dat werkt dus he stynus nu wil ik de ganse listing in een 16f788 gaan droppen met de nodige commandos maar zie nu dat proton die niet ondersteund???? kan dat ????? wel de 877

Stynus
Admin
Berichten: 2691
Gepost op woensdag 7 September 2011 17:51:43 QuoteWijzig

Omdat de 16f788 niet bestaat.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
CARDAN
Lid
Berichten: 225
Gepost op woensdag 7 September 2011 18:42:13 QuoteWijzig

ochhhhhh alain toch inderdaad ik heb 10 liggen maar het zijn 16f887 vandaaar mijn eigen stomme schuld stynus hihi

CARDAN
Lid
Berichten: 225
Gepost op woensdag 7 September 2011 21:54:52 QuoteWijzig

HOERA ALLES WERKT I2C knoppen rotary en memorie ook nu code gaan schrijven voor glcd

hier de list van picpasic pro naar proton voor een 16f887


' ** defineren van lcd voor pic16f887
Device 16F887
Declare XTAL 8
Declare LCD_INTERFACE 4
Declare LCD_RSPIN PORTB.4
Declare LCD_ENPIN PORTB.5
Declare LCD_DTPIN PORTB.0

Declare LCD_LINES 4
' ** Defineren van toetsen en i2c uitgangen

Declare SDA_PIN PORTC.0 ' SCL aan RA0 (pin 7)
Declare SCL_PIN PORTC.1 ' SDA aan RA1 (pin 6)
ALL_DIGITAL TRUE
PORTB_PULLUPS = On
'Config INTRC_OSC_NOCLKOUT, CP_OFF, WDT_OFF, PWRTE_ON, LVP_OFF
'knoppen
Symbol MEMO PORTA.3 ' memoknop aan RA2 (pin 1)
Symbol UP PORTA.0 'upknop aan ( RA0)
Symbol DOWN PORTA.1 'downknop aan (RA1)
Symbol CH_PAS PORTA.2 'stappen khz aan( RA4)
Symbol sda PORTC.0
Symbol scl PORTC.1
ANSEL = %00000000
ANSELH = %00000000
TRISA =%1111111
TRISB =%0000000
TRISC =%1111100
'Input UP
'Input DOWN
Input MEMO
Input CH_PAS
'CMCON=7
' ** Defineren van variabelen
Dim Counter1 As Word
Dim HULP1 As Bit
Dim HULP2 As Bit
Dim b1 As Byte
Dim b2 As Byte
Dim b3 As Byte
Dim b5 As Byte
Dim ADDR2 As Byte
Dim PLLSTAT As Byte
Dim LOCKED As PLLSTAT.6
Dim F1 As Word
Dim F2 As Word
Dim F3 As Word
Dim RXPLL As Word

'defineren van tmp waarden
Dim ADDR1 As Byte
Dim TMP As Word
Dim TMP_LO As TMP.LowByte
Dim TMP_HI As TMP.HighByte
Dim PLLBASE As Word
Dim PLL As Word
Dim LO As PLL.LowByte
Dim HI As PLL.HighByte
Dim PAS As Byte '1=125kHz, 2=250kHz, 4=500kHz, 8=1MHz

'*** hoofdprog inlezen ***

ADDR1=$C2 'adres voor sp5055 I2C
PLLBASE=18400 'start 1200 MHz : 1240 / 0,125 = 9920
PAS = 8 ' stap de 0.500 MHZ default
EData 0,"$A0,$00" 'tmp voor 2320 mhz

Cls
Print At 1,3," 13cm PLL " ' 1e lcd tekst
Print At 2,2 ," Versie (2.5) "
EData 0,"$A0,$00" 'tmp voor 2320 mhz
TMP_LO =ERead 0 ' inlezen tmp low
TMP_HI =ERead 1' inlezen van tmp high
DelayMS 1000
' *** start van programma ***

MAIN:
PLL = PLLBASE + TMP
I2COUT sda,scl,ADDR1,[HI,LO,$8E] 'wegschrijven van i?c waarden naar pll

GoSub CALCUL
GoSub AFFICHAGE
DelayMS 20

'*** knoppen instellen aan en input ***

BOUCLE:

I2CIN sda,scl,ADDR1,[PLLSTAT]
If LOCKED =1 Then
Print At 2,1,"PLL status :OK "

EndIf
Button UP,0,10,2,b1,1,MONTE 'surveille le bouton UP
Button DOWN,0,10,2,b2,1,DESCEND 'surveille le bouton DOWN
Button MEMO,0,255,0,b5,1,STORE 'surveille le bouton MEMO
Button CH_PAS,0,255,0,b3,1, CHOIX 'surveille le bouton PAS
HULP2 = ~ HULP1
HULP2 = UP & HULP2
If HULP2 = 1 And DOWN = 1 Then
Counter1 = Counter1 + 1

EndIf

If HULP2 = 1 And DOWN = 0 Then
Counter1 = Counter1 - 1
EndIf

If Counter1 = 1 Then
GoTo MONTE:
EndIf
If Counter1 = -1 Then
GoTo DESCEND:
EndIf
' DelayMS 10
GoTo BOUCLE

uit:
HULP1 = 0
HULP2 = 0
GoTo BOUCLE:
MONTE:
TMP = TMP + PAS
If TMP > 1600 Then TMP = 0 'Fmax
GoTo MAIN

DESCEND:

If TMP<PAS Then RAZ_TMP
If TMP = 0 Then TOP
TMP = TMP - PAS
GoTo MAIN

TOP: TMP= 1600
GoTo MAIN

RAZ_TMP: TMP = 0
GoTo MAIN

CHOIX:
If PAS = 80 Then SAUTE
If PAS = 8 Then DIX_MHz
PAS = PAS*2
GoSub AFFICHE_PAS
GoSub AFFICHAGE
GoTo BOUCLE

SAUTE: PAS = 1
GoSub AFFICHE_PAS
GoTo BOUCLE


DIX_MHz: PAS = 80
GoSub AFFICHE_PAS
GoSub AFFICHAGE
GoTo BOUCLE

CALCUL: ' ** Berekenen van frequentie

F1= PLL - 16000 ' 1GHz (PLL - 16000)
F2=F1/8 'neemt de MHz
F3=125*(F1//8) 'neemt de kHz
Return

AFFICHAGE:
Print $FE, 2 ' Clear LCD screen
Print "freq ",#2'afdruk van mhz
Print #F2
'Print "."
Print " Mhz " 'print at ," MHZ "
' print at $FE,$C0
'print at " "

If LOCKED =0 Then

Print At 2,1,"PLL Status =Fout"
EndIf
'Low PORTB.1
'High PORTB.0
'EndIf
Return

AFFICHE_PAS: 'stap verandering op scherm

Print $FE, 1
Print At 1,1,"Stap "
Print # 125*PAS
Print " kHz"
DelayMS 1000
Return

'*** MEMO EN OPSLAG IN EEPROM PIC

STORE:
EWrite 0,[TMP_LO]
EWrite 1, [TMP_HI]
Print $FE, 1
Print At 1,1," FREQUENTIE "
Print At 2,1 ," OPGESLAGEN "
'Print 3,5," IN EEPROM "

DelayMS 3000
GoSub AFFICHAGE:
GoTo BOUCLE

CARDAN
Lid
Berichten: 225
Gepost op donderdag 8 September 2011 00:14:09 QuoteWijzig

nu eens bezig geweest met de easypic5 board en de glcd routine
maar ik krijg niks op het scherm das eigenaardig dat is mijn code voor proton


Device = 16F887
XTAL = 20
ALL_DIGITAL = true

Declare LCD_DTPORT PORTD
Declare LCD_ENPIN PORTB.4
Declare LCD_CS1PIN PORTB.0
Declare LCD_CS2PIN PORTB.1
Declare LCD_RWPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_TYPE 1
Declare INTERNAL_FONT 1
Declare GLCD_CS_INVERT 0
Declare GLCD_STROBE_DELAY 0
ANSEL = %00000000
ANSELH = %00000000

Clear
DelayMS 500
Cls

menu:

Print At 1,0,"Dit"
Print At 2,0,"is"
Print At 3,0,"een"
Print At 4,0,"test"
Print At 5,0,"voor "
Print At 6,0,"een"
Print At 7,0,"grafisch"
Print At 8,0,"display"

Include "font.inc"
End




zie ik iets over het hoofd ik dachtmet een 16f877a des tijds dat ie dat wel deed de poorten zijn juist gedefineerd op men board ???? raar

Stynus
Admin
Berichten: 2691
Gepost op donderdag 8 September 2011 16:21:30 QuoteWijzig

Probeer eens met na de Cls nog eens DelayMS 500 te zetten.

En na de laatste print:

Code
while 1 = 1: wend


 
[Bericht gewijzigd door Stynus op Donderdag 8 September 2011 16:22:08]


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
19roland70
Lid
Berichten: 123
Gepost op donderdag 8 September 2011 17:23:27 QuoteWijzig

Op de B pinnen zitten ook de programeerlijnen ,probeer de pic eens te programeren zonder de rest van de schakeling

CARDAN
Lid
Berichten: 225
Gepost op donderdag 8 September 2011 19:35:59 QuoteWijzig

ja ik ben gewoon bezig met de easypic5 board geen listing erin alleen de listing om een glcd aan te sturen ik gebruik wel een 16f887 mischien mis ik daar iets en op het forum vroeger staan zelfs nog fotos toen het wel werkte dus ik zie de 16f als mogelijke .........??

CARDAN
Lid
Berichten: 225
Gepost op donderdag 8 September 2011 19:53:38 QuoteWijzig

wil niet lukken he leeg scherm

reddevil
Lid
Berichten: 1150
Gepost op donderdag 8 September 2011 20:00:46 QuoteWijzig

Potmeter van het contrast goed staan?


Veel te weinig tijd voor mijn projecten of heb ik er soms te veel?
CARDAN
Lid
Berichten: 225
Gepost op donderdag 8 September 2011 20:09:22 QuoteWijzig

3 * verschillende glcd's geprobeerd zelfs een easypic 6 en een 3 ook geprobeerd maar juist alles hetzelfde hihih

19roland70
Lid
Berichten: 123
Gepost op donderdag 8 September 2011 21:17:58 QuoteWijzig

probeer eens een lijn of cirkel op het scherm te krijgen misschien dat de font-tabel niet geladen wordt.

CARDAN
Lid
Berichten: 225
Gepost op donderdag 8 September 2011 23:13:22 QuoteWijzig

alles geprobeerd met een 16f877a en dat werkt met een 16f887 niet eigenaardig?????

[1] 2 »

Active Topics

» Mini domotica systeem
» Lengteaanslag verstekzaag
» De tuin.
» printplaat
» Show je mini projecten
» Makita BMR102
» voeding Compaq serie P...
» buggy "The end"
» Voeding voor kerstmis ...
» Audi

» Meer actieve topics

Advertenties

ElektronicaStynus

© 2004-2017 SchemaTheek
Laadtijd: 0.05487 sec.