Ik moet voor mijn GIP een apparaat maken dat via een PIC een code naar IR-leds gaat sturen en die via IR-ontvanger ook zo een codes kan ontvangen. deze code moet uitgezonden worden op een frequentie van 36kHz
Na wat zoekwerk (het is immers de eerste keer ooit dat ik een PIC programmeer) heb ik al gevonden hoe ik in assembler een uitgang kan programmeren en een blokgolfje creëren. Ik kan echter niet vinden hoe ik deze blokgolf een vaste frequentie kan geven.
Dit is de code die ik nu al heb:
include "P18F24J50.INC"
org 00h
teller EQU 40h
teller2 EQU 41h
BSF 03,5
CLRF TRISC
BCF 03,5
begin MOVLW b'00000100'
MOVWF PORTC
MOVLW h'FF'
MOVWF teller2
opnieuw2 MOVLW h'FF'
MOVWF teller
opnieuw1 DECFSZ teller, 1
GOTO opnieuw1
DECFSZ teller2, 1
GOTO opnieuw1
MOVLW h'00'
MOVWF PORTC
opnieuw4 MOVLW h'FF'
MOVWF teller
opnieuw3 DECFSZ teller, 1
GOTO opnieuw3
DECFSZ teller2, 1
GOTO opnieuw4
GOTO begin
end
PS: ik werk met een PIC18F24J50
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
De waardes waarmee je de tellers laadt wijzigen?
(Kwestie van cycles tellen, of even laten lopen in MpSim...)
Nieko
LED addicted... Fijnmalen en snuiven maar!! :P
Ik heb nog nooit gewerkt met ASM voor PIC (wel AVR), maar volgensmij zitten er fouten in je programma. Volgensmij moet je het zo doen:
include "P18F24J50.INC"
org 00h
teller EQU 40h
teller2 EQU 41h
BSF 03,5
CLRF TRISC
BCF 03,5
begin MOVLW b'00000100'
MOVWF PORTC
MOVLW h'FF' ;Grove afstelling voor tijd afstelling dat PORTC.2 hoog moet zijn
MOVWF teller2
opnieuw2 MOVLW h'FF' ;Fijn afstelling voor tijd afstelling dat PORTC.2 hoog moet zijn
MOVWF teller
opnieuw1 DECFSZ teller, 1
GOTO opnieuw1
DECFSZ teller2, 1
GOTO opnieuw2
MOVLW h'00'
MOVWF PORTC
MOVLW h'FF' ;Grove afstelling voor tijd afstelling dat PORTC.2 laag moet zijn
MOVWF teller2
opnieuw4 MOVLW h'FF' ;Fijne afstelling voor tijd afstelling dat PORTC.2 laag moet zijn
MOVWF teller
opnieuw3 DECFSZ teller, 1
GOTO opnieuw3
DECFSZ teller2, 1
GOTO opnieuw4
GOTO begin
end
klein is fijn
Moderator
Op 17 mei 2011 21:51:21 schreef Thierry400:
op een frequentie van 36kHz
Reken eerst eens uit hoeveel instructies dat duurt, een halve periode van 36kHz.
Op 17 mei 2011 21:58:45 schreef Arco:
De waardes waarmee je de tellers laadt wijzigen?
En hoe weet ik dan hoe lang je singaal hoog / laag is?
dat de tellers de 'tijd' bepaalden wist ik maar ik weet niet hoelang ze dit doen of hoe ik ze moet wijzigen om een bepaalde frequentie te bekomen
Op 17 mei 2011 22:01:33 schreef klein is fijn:
[...]Reken eerst eens uit hoeveel instructies dat duurt, een halve periode van 36kHz.
Hoe weet ik hoe lang 1 instructie duurt?
[Bericht gewijzigd door Henry S. op (25%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Zoals gezegd cycles tellen. Je weet hoe lang een cycle duurt, en hoeveel cycles een instructie duurt.
Of in MpSim laden voor simulatie...
Aantal cycles per instructie staat in de datasheet...
[Bericht gewijzigd door Arco op (17%)]
Aantal cycles per instructie heb ik in een tabel gevonden in mijn datasheet ja maar daarmee weet ik nog steeds niet hoelang zo 1 cycle duurt? dat vind ik niet terug in mijn datasheet
[Bericht gewijzigd door Henry S. op (44%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Staat toch echt in de datasheet. Clockfrequentie / 4 (FOsc)
Dus 1 cycle is 1/ Fosc.
[Bericht gewijzigd door Arco op (17%)]
Ik vind in de datasheet nog steeds niet hoe lang 1 cycle is of hoe groot Fosc is, maar ik heb nu ook nog wat ander schoolwerk dus ik zal er morgen nog eens verder naar zoeken.
alvast bedankt voor het advies.
[Bericht gewijzigd door Henry S. op (30%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op 17 mei 2011 22:27:58 schreef Arco:
De clockfrequentie staat ook niet in de datasheet, maar op je kristal...
hmmz ik heb geen extern kristal aangeslote ... hij moet dus een interne klok gebruiken. maar waar ik informatie over deze vind weet ik niet.
Ik zou wel een 4Mhz kristal erop kunnen aansluiten (heb in datasheet gevonden hoe dat moet + welke condensatoren ik moet gebruiken enz.) wat dan als ik het goed begrijp zorgt voor fosc=1Mhz en 1 cycle duurt dan dus 1µs?
Op 17 mei 2011 22:00:12 schreef Nieko:
Ik heb nog nooit gewerkt met ASM voor PIC (wel AVR), maar volgensmij zitten er fouten in je programma. Volgensmij moet je het zo doen:include "P18F24J50.INC" org 00h teller EQU 40h teller2 EQU 41h BSF 03,5 CLRF TRISC BCF 03,5 begin MOVLW b'00000100' MOVWF PORTC MOVLW h'FF' ;Grove afstelling voor tijd afstelling dat PORTC.2 hoog moet zijn MOVWF teller2 opnieuw2 MOVLW h'FF' ;Fijn afstelling voor tijd afstelling dat PORTC.2 hoog moet zijn MOVWF teller opnieuw1 DECFSZ teller, 1 GOTO opnieuw1 DECFSZ teller2, 1 GOTO opnieuw2 MOVLW h'00' MOVWF PORTC MOVLW h'FF' ;Grove afstelling voor tijd afstelling dat PORTC.2 laag moet zijn MOVWF teller2 opnieuw4 MOVLW h'FF' ;Fijne afstelling voor tijd afstelling dat PORTC.2 laag moet zijn MOVWF teller opnieuw3 DECFSZ teller, 1 GOTO opnieuw3 DECFSZ teller2, 1 GOTO opnieuw4 GOTO begin end
Heb eens codes vergeleken en er zat inderdaad foutje in, ik merkte het niet omdat mijn uitgang ook gewoon een blokgolf gaf maar het kon later wel problemen geven. bedankt om me hierop te wijzen
[Bericht gewijzigd door Henry S. op (54%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
hij moet dus een interne klok gebruiken. maar waar ik informatie over deze vind weet ik niet.
Hoofdstuk 3 van de datasheet gaat geheel over de oscillator. (ook de interne oscillator)
Peter Claus
It is so simple to be happy, but it is so difficult to be simple
Je bedoelt een afzonderlijke IC die als timer dient?
[Bericht gewijzigd door Henry S. op (60%)]
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Nee, bijna alle microcontrollers hebben wel 1 of twee hardware timers aan boord in het chipje zelf. Die van jou ook.
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
Waarschuwing voor de TS, het postgedrag laat te wensen over: de FAQ.
Ik ben vandaag eens experimenteel opzoek gegaan naar de cyclus tijd van mijn PIC.
na wat zoekwerk heb ik gevonden dat 1 cyclus = 1µs, heb hiermee dus mijn programma aangepast naar dit:
include "P18F24J50.INC"
org 00h
BSF 03,5
CLRF TRISC
BCF 03,5
begin MOVLW b'00000100'
MOVWF PORTC
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
MOVLW h'00'
MOVWF PORTC
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
goto begin
end
Met dit programma krijg ik een blokgolf van 35.7Khz uit RC2 wat dicht genoeg de 36Khz benaderd voor mijn IR-ontanger om te detecteren en mijn probleem dus oplost
Tog bedankt voor iedereen die gereageerd heeft.
Peter Claus
It is so simple to be happy, but it is so difficult to be simple
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Om een symmetrische blokgolf te krijgen moet er beneden een NOPje af, en boven een NOPje erbij...
(Nu is de onderste wait 2µS langer als de bovenste...)
