timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
al weer een tijdje geleden begonnnen met een RGB led dimmer te bouwen die ik elders op het net heb gevonden(link komt nog)
naar het succes van het nabouwen van die dimmer ben ik begonnnen met men eigen versie
met 2 eisen de pc kant moet kunnen worden gedaan in Visual Basic of in Visual C(das geen probleem)
de pic kant gebeurt in Basic(crownhill proton picbasic+)
nu ben ik van plan om een programma uit te laten voeren en door interupt op PIE1.5(interrupt op usart receive buffer)
nu is mijn vraag gaat dit werken:
device 16F628a ;gebruikte µcontroller
';****************************************************************
';* A.2,AN2,Vref 1 _| ^ |_ 18 A.1,AN1 *
';* A.3,AN3,cmp1 2 _| |_ 17 A.0,AN0 *
';* A.4,AN4,cmp2 3 _| |_ 16 A.7,clckin,osc1 *
';* A.5,mclre,vpp 4 _| |_ 15 A.6,clkout,osc2 *
';* gnd 5 _| |_ 14 vdd *
';* B.0,INT 6 _| |_ 13 B.7,PGD,T1OSI *
';* B.1,RX,DT 7 _| |_ 12 B.6,PGC,T1OSO,T1CKI *
';* B.2,TX,CK 8 _| |_ 11 B.5, *
';* B.3,CCP1 9 _| |_ 10 B.4,PGM *
';* |_____| *
';****************************************************************
config intrc_osc_noclkout, wdt_off, lvp_off, mclre_on, pwrte_on,
;nu nog wat gezeik met registervermeldingen
;een berg decleraties
all_digital true ;alle poorten zijn digitale poorten
serial_baud 2400 ;de baudrate voor de seriële poort is op 57600 gezet
HSERIAL_RCSTA %10010000
HSERIAL_TXSTA %00100000
enable interrupt
on interrupt goto instellen
;poorten
;76543210
trisa = %00000000 ;hier staat dus welke A-poorten ingangen zijn (1 is ingang)
trisb = %00010000 ;hier staat dus welke B-poorten ingangen zijn (1 is ingang)
portb = %00000010 ;hier staat welke poorten standaard hoog zijn.
symbol led = portb.4 ;dit geeft aan op welke poort de controle led zit. en de poort heeft nu een naam
symbol rgb1 = portb.0
symbol rgb2 = portb.1
symbol rgb3 = portb.2
dim prgb1 as byte
dim prgb2 as byte
dim prgb3 as byte
clear ;wis alle ramgeheugen
;-------------------------------------------------------------------------------------------------------------------------------------------;
;hoofdprogramma
while 1=1 ;dit is een oneindige lus totdat we er uit springen
pwm rgb1, prgb1, 20
pwm rgb2, prgb2, 20
pwm rgb3, prgb3, 20
wend ;begin opnieuw met deze lus
instellen:
prgb = rcreg
clear rcreg
hrsout "C2"
pie1.5 = 0
while(pie1.5 = 0)
wend
prgb = rcreg
clear rcreg
hrsout "c1"
pie1.5 = 0
while(Pie1.5 = 0)
wend
prgb3 = rcreg
clear rcreg
hrsout "CC"
pie1.5 = 0
return
end ;einde van het programma en nee het programma is nog niet af maar je kan beter nu er achter komen dat er nix van klopt dan als je alles af hebt
dus ik zou graag willen weten of het programma tot nu toe zou werken ik kan het helaas niet testen want men programmer ligt op zijn rug(doet dus nix meer)
hopelijk kunnen jullie me verder helpen met commentaar
de lamp bouw ik samen een collega(of althans hij si voor hem)
alvast bedankt
/edit
ik bedoelde dus deze link: http://home.versatel.nl/edithenwilliam/william.htm
[Bericht gewijzigd door timmie op ]
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
even het volledige programma ingevoegd in de startpost
maar kan iemand me verder helpen?
ik zit op het moment namelijk zonder programmer
~Galaxy
In the beginning there was nothing.... and even that exploded...
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
~Galaxy
In the beginning there was nothing.... and even that exploded...
Nope, het blijft een frommelprogramma.
Probeer er eens wat structuur in te brengen.
Met softwarematige pwm trek je het uberhaubt niet.
Ik heb het een keer gedaan met een 16f628, maar het is een hell of a job.
Koop liever een dedicated chippie ervoor.
Er is al iets met 4 afzonderlijke pwm-kanalen.
Gewoon met I²C de info erin proppen, en het chippie gaat wel.
Theo
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
om hier maar eens een schop tegen te geven
ik ben bezig met het pcprogramma van de rgbdimmer
nu zit ik met het probleem dat ik de waarde die tussen 0 en 255 ligt in een enkele byte over de rs232 moet versturen alleen kan VB niet overweg met deze lijn
serialport1.write(trackbar1.value)
als ik de waarde naar ascii zou converteren dan ga ik niet verder geraken dan 127
hoe kan ik dit probleem oplossen
~Galaxy
In the beginning there was nothing.... and even that exploded...
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
dit is niet of topic ik vraag toch gericht naar een oplossing voor het aansturen van mijn RGB led
mijn intentie was altijd al om die via de rs232 poort in te stellen
maar hoe moet ik dat dan binair doen?
ik gebruik de standaard module die in M$ VB zit
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
kan iemand mij helpen met het verzenden van de decimale waardes hoger dan 127(dus in extendend ascii)?
ik geraak er echt neit uit er wordt geprogrammeerd in M$ Visual Basic
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
in mijn zoektocht naar een mogelijkheid om niet al te moeilijk toch een rgb led aan te sturen ben ik nu bezig met een andere pic puur omdat deze 3 ccp poorten heeft.
echter werkt het niet(testprogramma)
dit is de source
list P=16F767
#include <p16F767.inc>
__config _CONFIG1, _CP_OFF & _CCP2_RB3 & _DEBUG_OFF & _BOREN_0 & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
__config _CONFIG2, _BORSEN_0 & _IESO_OFF & _FCMEN_OFF
ORG 0000h
goto INITC
ORG 0005h
;INITIALISATIE VAN DE PROCESSOR
;INSTELLEN VAN DE POORTEN
INITC BCF STATUS, RP0
BCF STATUS, RP1 ;GA NAAAR BANK0
CLRF PORTA ;STEL PORTA IN ZODAT ALLE A-POORTEN LAAG ZIJN
CLRF PORTB ;STEL PORTB IN ZODAT ALLE B-POORTEN LAAG ZIJN
CLRF PORTC ;STEL PORTC IN ZODAT ALLE C-POORTEN LAAG ZIJN
CLRF PORTE ;STEL PORTE IN ZODAT ALLE E-POORTEN LAAG ZIJN
clrf T2CON
BSF STATUS, RP1 ;GA NAAR BANK1
MOVLW B'01111111'
MOVWF TRISA ;STEL TRISA IN ZODAT A-POORTEN INGANG ZIJN
CLRF TRISB ;STEL TRISB IN ZODAT B-POORTEN UITGANG ZIJN
CLRF TRISC ;STEL TRISC IN ZODAT C-POORTEN UITGANG ZIJN
CLRF TRISE ;STEL TRISE IN ZODAT E-POORTEN UITGANG ZIJN
;INSTELLEN VAN DE AD-CONVERTOREN
BCF STATUS, RP1 ;GA TERUG NAAR BANK0
MOVLW B'00000001'
MOVWF ADCON0 ;STEL REGISTER ADCON0 IN
MOVLW B'00001100'
MOVWF ADCON1 ;STEL REGISTER ADCON1 IN
MOVLW B'00001000'
MOVWF ADCON2 ;STEL REGISTER ADCON2 IN
;INSTELLEN VAN DE CCP-MODULE'S
;HIER CONFIGUREREN WE ONZE PWMMODUELE
MOVLW B'00001100'
MOVWF CCP1CON ;STEL CCP1CON REGISTER IN ZODAT PWM1-MODULE ACTIEF IS
MOVLW B'00001100'
MOVWF CCP2CON ;STEL CCP2CON REGISTER IN ZODAT PWM2-MODULE ACTIEF IS
BSF STATUS,RP1 ;BANK1
MOVLW B'00001100'
MOVWF CCP3CON ;STEL CCP3CON REGISTER IN ZODAT PWM3-MODULE ACTIEF IS
MOVLW 03Fh
MOVWF 92h ;STEL DE FREKWENTIE VAN DE PWM MODULE IN
;INSTELLEN VAN DE USART
;HIER CONFIGUREREN WE ONZE LINK MET DE COMPUTER
;2400 BAUD GEEN PARITEIT 8 BITS CONTINU ONTVANGST ENABLED
MOVLW B'10000010'
MOVWF TXSTA ;STEL TXSTA REGISTER IN
BCF STATUS, RP1 ;BANK0
MOVLW B'10010000'
MOVWF RCSTA ;STEL RCSTA REGISTER IN
BSF STATUS, RP1 ;BANK1
MOVLW B'10000001'
MOVWF SPBRG ;STEL SPBRG IN ZODAT DE BAUDRATE UITKOMT OP 2400 BAUD
BCF STATUS, RP1 ;BANK0
;ENTRYPOINT VAN HET PROGRAMMA
;WE GAAN EEN RGB LED AANSTUREN MET DE 3 HARDWARE PWM KANALEN VAN DE PIC
;WE MAKEN HET MOGELIJK OM IN 2 MODI TE WERKEN NAMELIJK MET 3 POTMETERS OP DE AD KANALEN EN VIA DE PC
;MAIN PROGRAMMA
TEST bcf T2CON, TMR2ON
movlw B'00001111' ;stel een byte in
movwf CCPR1L ;stel de buffer in
BSF T2CON, TMR2ON
goto TEST
END
hopelijk kan iemand me helpen
de vraag is dan ook waarom werkt dit programma niet?
TEST bcf T2CON, TMR2ON
movlw B'00001111' ;stel een byte in
movwf CCPR1L ;stel de buffer in
BSF T2CON, TMR2ON
goto TESTEND
Hier zet je telkens Timer2 aan en uit. Dat is niet de bedoeling. Timer2 wordt aangezet en blijft daarna doordraaien.
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
Dweil
1 electron per seconde = 16 atto ampere!
Ik ben op dit moment ook bezig met een RGB led dimproject, en heb een leuk printje hiervoor gemaakt:
Alle 16 RGB leds zijn onafhankelijk van elkaar te sturen in kleur, en in helderheid. Het is bedoeld voor verlichte knoppen te maken, zoals in mijn testopstelling:
Ik gebruik 64 waarden voor PWM te sturen voor elk van de kleuren (rood, groen en blauw). Voor de laatste heb ik wit proberen te maken door alle 3 de kleuren aan te sturen.
Ik heb nog zo'n printje liggen, dus als je intresse hebt, dan mail je me maar. De PIC die ik gebruik is een 16F648A, maar de print was bedoeld voor een 16F819, die heeft namelijk een I2C bus in plaats van een seriele poort. Ook de waarden van de buttons kan ik uitlezen, en over I2C sturen. Op deze manier kun je dit printje inzetten in een groter project.
Jeroen Boere
IF you can't convince them, then confuse them!
ziet er goed uit dweil.
wat gebruikte je voor die PWM? een dedicated chip of softwarematige PWM ?
ik vermoed dedicated ivm i2c 
zoja, welke chip?
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
inderdaad ziet er strak uit
ook bedankt voor hte aanbod alleen heb ik alles al liggen maar wil de pic zijn werk neit doen.
Dweil
1 electron per seconde = 16 atto ampere!
Ik gebuik gewoon softwarematige PWM, die ik door middel van een schuifregister principe naar buiten stuur. De 4 overige chips (Altera EPM7032STC44) zijn gemakzucht van mij omdat ik een 74HC595 te moeilijk routen vind. Op deze manier kan ik de print heel eenvoudig houden terwijl er maar 1 data, 1 clock en 1 latch signaal voor naar alle leds gaan.
Op 8 juli 2007 10:49:25 schreef timmie:
oke nou even getest ik heb nu tmr2 aan gezet en aan laten staan maar er is geen vershil:( heelaas
Met de simulator van MPLAB kun je de fout er vast uithalen.
Door de registers in de gaten te houden tijdens simuleren kun je zien waar het fout gaat.
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
ik heb een sim gedraaid in mplab en alles gaat zover ik kan beoordelen alleen word er geen waarde naar PR2 geshcreven het timer2 periode register de rest wel ook ccp1h dus de pwm module en timer 2 werken wel samen
Waarom wordt PR2 niet geschreven? Je bank staat goed op bank1....misschien toch controleren of je op dat moment echt in bank1 zit.
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
inderdaad beetje stomme fout zou ook nie weten hoe ik daarbij ben gekomen
wel wat vordering naar de aanpassing van zonnepaneeltje
op ccp2 krijg ik een blokgolf van iets meer dan 60Khz met een duty van 50% helaas doet hij nog steeds men programma niet uitvoeren
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
oke zover je het een programma kan noemen(testprogramma)
ja de pwm doet het kanaal 2 en niet kanaal 1 zo als de bedoeling is
tevens klopt de duty ook niet
[Bericht gewijzigd door timmie op (12%)]

