Fortsatt problem med tidsfördröjning
Fortsatt problem med tidsfördröjning
Jag har inte fått fördröjning i µs,att fungera.Som jag skrev tidigare,så fungerar fördröjningen
i ms,men när jag ändrar till fördröjning i µs,så fungerar det inte.Jag använder Mikrobasic och
Velleman PIC-programmerare K4048.Jag använder PIC16F628, med kristall på 4 mhz.
Jag har provat med högre kristallfrekvens,men med samma resultat.Är det någon inställning
som skall ändras?I så fall vad?
Är det någon som har något tips så är jag mycket tacksam.
Evald
i ms,men när jag ändrar till fördröjning i µs,så fungerar det inte.Jag använder Mikrobasic och
Velleman PIC-programmerare K4048.Jag använder PIC16F628, med kristall på 4 mhz.
Jag har provat med högre kristallfrekvens,men med samma resultat.Är det någon inställning
som skall ändras?I så fall vad?
Är det någon som har något tips så är jag mycket tacksam.
Evald
Re: Fortsatt problem med tidsfördröjning
Fixa ett test-case som visar det du upplever som ett problem.
Re: Fortsatt problem med tidsfördröjning
Hur är den konfigurerad, vilken klockfrekvens kör du?
Re: Fortsatt problem med tidsfördröjning
Hej igen!
OK,här är en förenklad kod.
Main:
TrisA=1
TrisB=0
While (1)
Cmcon=7
'***********************
If (portA.0=1)
Then PortB.0=1
Delay_ms(100)
PortB.0=0
Delay_ms(150)
Else PortB.0=0
'**********************
End if
Wend
End.
Detta är tiden i ms.Om jag ändrar till µS,så fungerar det inte!
Jag har inte tidigare använt mig av fördröjning i µs.
Jag har provat med både 4 och 20 Mhz,med samma resultat.
Det är möjligt att det är någon inställning som skall ändras,men jag vet för lite
om programmering.
Jag håller på med ett projekt där man skall ställa in drivpulser till en pulstransformator,
mellan 6-35 µs
Hoppas någon vill hjälpa mig!
Evald
OK,här är en förenklad kod.
Main:
TrisA=1
TrisB=0
While (1)
Cmcon=7
'***********************
If (portA.0=1)
Then PortB.0=1
Delay_ms(100)
PortB.0=0
Delay_ms(150)
Else PortB.0=0
'**********************
End if
Wend
End.
Detta är tiden i ms.Om jag ändrar till µS,så fungerar det inte!
Jag har inte tidigare använt mig av fördröjning i µs.
Jag har provat med både 4 och 20 Mhz,med samma resultat.
Det är möjligt att det är någon inställning som skall ändras,men jag vet för lite
om programmering.
Jag håller på med ett projekt där man skall ställa in drivpulser till en pulstransformator,
mellan 6-35 µs
Hoppas någon vill hjälpa mig!
Evald
Re: Fortsatt problem med tidsfördröjning
Använd code-taggarna så det blir läsbart...
> Jag håller på med ett projekt där man skall ställa in drivpulser till en pulstransformator, mellan 6-35 µs
Det är nog fel verktyg för att hålla med tider i den skalan.
> Jag håller på med ett projekt där man skall ställa in drivpulser till en pulstransformator, mellan 6-35 µs
Det är nog fel verktyg för att hålla med tider i den skalan.
Re: Fortsatt problem med tidsfördröjning
Vi kan säkert hjälpa, men då måste du svara på de frågor vi ställer.
Re: Fortsatt problem med tidsfördröjning
Varför postar du koden som fungerar och inte den som inte fungerar??
/johan
/johan
Re: Fortsatt problem med tidsfördröjning
> ...så fungerar det inte!
*Vad* är det som inte fungerar ? Och hur fungerar det då ?
Det är ju väldigt svårt, för att inte säga omöjligt, att svara
på detta om man inte vet vad det är du vill uppnå. D.v.s vad
hela applikationen är tänkt att "göra", så att säga.
Du nämner en "pulstransformator", men vi vet ju ingenting om den.
Finns det datablad ? Den ska tydligen ha 6-35 us pulser ? Ska det vara variabelt
inom det intervallet ? Och i så fall, hur snabbt och hur ofta ska det ändras ?
Notera också att det finns en Delay_Cyc(). Kan vara ett alternativ vid korta
fördröjningar...
*Vad* är det som inte fungerar ? Och hur fungerar det då ?
Det är ju väldigt svårt, för att inte säga omöjligt, att svara
på detta om man inte vet vad det är du vill uppnå. D.v.s vad
hela applikationen är tänkt att "göra", så att säga.
Du nämner en "pulstransformator", men vi vet ju ingenting om den.
Finns det datablad ? Den ska tydligen ha 6-35 us pulser ? Ska det vara variabelt
inom det intervallet ? Och i så fall, hur snabbt och hur ofta ska det ändras ?
Notera också att det finns en Delay_Cyc(). Kan vara ett alternativ vid korta
fördröjningar...
Re: Fortsatt problem med tidsfördröjning
Men vänta nu lite... De Delayus() funktioner som finns fungerar INTE med variabler, enbart med konstanter (fasta värden vid kompileringen)! Är det något så enkelt kanske?
Re: Fortsatt problem med tidsfördröjning
Men det *är* ju konstanter i kodexemplet som visades (?).
Re: Fortsatt problem med tidsfördröjning
Javisst - och då är det Delay_ms() som används. TS pratar om "Jag håller på med ett projekt där man skall ställa in drivpulser till en pulstransformator,
mellan 6-35 µs" och det verkar som variabler i mitt tycke...
Men grunden till alla problem är nog egentligen att TS har vald helt fel sätt att lösa uppgiften till att börja med.
mellan 6-35 µs" och det verkar som variabler i mitt tycke...
Men grunden till alla problem är nog egentligen att TS har vald helt fel sätt att lösa uppgiften till att börja med.
Re: Fortsatt problem med tidsfördröjning
Hej!
Jag kommer här med beskrivning av min pulstrafo.Det är en EFD 30,och den skall lämna
sekundspänning i fyra steg:2500,2000,1500 och 1000 volt.För att uppnå detta så skall
primärlindningen matas med korta spänningspulser,34µs för att ge 2500 volt,24µs för att ge
2000 volt,16µs för att ge 1500 volt och 6µs för att ge 1000 volt.
Till detta har jag försökt med en PIC16F628,med en klockfrekvens på 4 MHz.Jag har också
provat med 20MHz,utan resultat.Om jag skriver "delay_ms(",så kommer det upp en liten
textremsa"Time_In_ms:word".Om jag byter ut "ms" mot "µs",så kommer det inte upp någon
textremsa,och programmet fungerar inte.
Jag hoppas att jag har lämnat en tillräckligt tydlig beskrivning,så att alla förstår vad
mitt problem är! Koden som jag har provat med har jag skrivit ned tidigare!
TomasL fråger hur kretsen är konfigurerad.Jag vet inte hur man konfigurerar en PIC!
När jag skriver programm i MikroBasic så klickar jag på "default" i "New project",och då
då har alla andra programm fungerat.
Om det är någon som vet hur detta skall lösas,så är jag tacksam för ett tips!
MVH Evald
Jag kommer här med beskrivning av min pulstrafo.Det är en EFD 30,och den skall lämna
sekundspänning i fyra steg:2500,2000,1500 och 1000 volt.För att uppnå detta så skall
primärlindningen matas med korta spänningspulser,34µs för att ge 2500 volt,24µs för att ge
2000 volt,16µs för att ge 1500 volt och 6µs för att ge 1000 volt.
Till detta har jag försökt med en PIC16F628,med en klockfrekvens på 4 MHz.Jag har också
provat med 20MHz,utan resultat.Om jag skriver "delay_ms(",så kommer det upp en liten
textremsa"Time_In_ms:word".Om jag byter ut "ms" mot "µs",så kommer det inte upp någon
textremsa,och programmet fungerar inte.
Jag hoppas att jag har lämnat en tillräckligt tydlig beskrivning,så att alla förstår vad
mitt problem är! Koden som jag har provat med har jag skrivit ned tidigare!
TomasL fråger hur kretsen är konfigurerad.Jag vet inte hur man konfigurerar en PIC!
När jag skriver programm i MikroBasic så klickar jag på "default" i "New project",och då
då har alla andra programm fungerat.
Om det är någon som vet hur detta skall lösas,så är jag tacksam för ett tips!
MVH Evald
Re: Fortsatt problem med tidsfördröjning
Är du säker på att det ska vara "µs" och inte "us"?
delay_us() verkar annars mycket vanligare (om man googlar) än delay_µs()
/johan
delay_us() verkar annars mycket vanligare (om man googlar) än delay_µs()
/johan
Re: Fortsatt problem med tidsfördröjning
Hej!
Tack,Johan detta löste problemet!Som jag har slitit mitt hår! Tack!
Tack,Johan detta löste problemet!Som jag har slitit mitt hår! Tack!
Re: Fortsatt problem med tidsfördröjning
Det låter som att du driver en helt vanlig transformator. Har jag då rätt i att signalen ska vara periodisk? Är det då inte bättre att använda PWM-modulen? Förutom att den underlättar när pulslängden ska ändras utan att ändra periodtiden, erbjuder den dessutom 4xhögre upplösning än delay_us().
Senast redigerad av bearing 9 november 2011, 17:25:30, redigerad totalt 1 gång.