Sida 1 av 2

Fortsatt problem med tidsfördröjning

Postat: 30 oktober 2011, 11:33:38
av BOTTNA
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

Re: Fortsatt problem med tidsfördröjning

Postat: 30 oktober 2011, 11:36:50
av sodjan
Fixa ett test-case som visar det du upplever som ett problem.

Re: Fortsatt problem med tidsfördröjning

Postat: 30 oktober 2011, 11:40:38
av TomasL
Hur är den konfigurerad, vilken klockfrekvens kör du?

Re: Fortsatt problem med tidsfördröjning

Postat: 1 november 2011, 16:27:10
av BOTTNA
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

Re: Fortsatt problem med tidsfördröjning

Postat: 1 november 2011, 16:30:43
av sodjan
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.

Re: Fortsatt problem med tidsfördröjning

Postat: 1 november 2011, 16:32:35
av TomasL
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

Postat: 1 november 2011, 16:40:17
av johano
Varför postar du koden som fungerar och inte den som inte fungerar??

/johan

Re: Fortsatt problem med tidsfördröjning

Postat: 1 november 2011, 16:51:13
av sodjan
> ...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...

Re: Fortsatt problem med tidsfördröjning

Postat: 1 november 2011, 18:53:17
av Icecap
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

Postat: 1 november 2011, 21:19:55
av sodjan
Men det *är* ju konstanter i kodexemplet som visades (?).

Re: Fortsatt problem med tidsfördröjning

Postat: 1 november 2011, 21:42:13
av Icecap
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.

Re: Fortsatt problem med tidsfördröjning

Postat: 8 november 2011, 15:14:01
av BOTTNA
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

Re: Fortsatt problem med tidsfördröjning

Postat: 8 november 2011, 15:21:05
av johano
Ä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

Re: Fortsatt problem med tidsfördröjning

Postat: 9 november 2011, 16:53:36
av BOTTNA
Hej!
Tack,Johan detta löste problemet!Som jag har slitit mitt hår! Tack!

Re: Fortsatt problem med tidsfördröjning

Postat: 9 november 2011, 17:06:33
av bearing
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().