det ha jag gjot och 1.5 ä det lägsta dä jag kan få motorn att starta, men jag vill ha så att programmet rampar upp varvtalet automatiskt så man kan nå ännu högre varv.
Eller varför inte så man har 2 momentana knappar, en för att öka och en för att minska.
Jag har svårt att tro att 1,5 är det lägsta värde, Wa är deklarerat som Integer = heltal. Man kan inte använda komma till heltal.
Lösningen är såklart att använda en timer och styra ett nytt steg för varje interrupt och med en annan timer har man kolla på tiden och ändrer reload-värdet för första timern till man når en viss snabbhet.
Men då du verkar köra något BASIC-aktigt får du allt klura ut det själv, sånt skit hanskas jag inte med.
Antagligen avrundas värdet uppåt till 2, vilket alltså säger att 2ms mellan varje puls kan den starta på men inte på 1ms. Du behöver alltså en bättre tidsupplösning.
Lycka till med BASIC'en, det verkar ju fungera bra *ironisk*
Kanske, men det är sanningen. 1ms är för högt att starta med, 2ms starter den med, alltså måste du ha en bättre upplösning i tid. Är det så att BASCOM inte klarar av den biten är det ett kasst programmeringsspråk, så enkelt är det.
Men testa med timer lösningen.
I timer-ISR'n ska man göra (pseudokod):
integer Steg;
Steg = Steg + 1;
om(Steg > 3) Steg = 0;
on Steg goto (heter det väl?)
0:
Portb.0 = 1
Portb.1 = 0
goto Exit
1:
Portb.1 = 1
Portb.0 = 1
goto Exit
2:
Portb.0 = 0
Portb.1 = 1
goto Exit
3:
Portb.1 = 0
Portb.0 = 0
Exit:
klart
Sedan ändrar du bara timerns hastighet och kan då köra stegen i den hastighet du vill.
Detta kan jag fixa på en PIC16F628A med MikroC på ca: 30 min med rampning osv från scratch, med en aning mer tid kan jag fixa att man kan begära "x steg CW/CCW" med upp- och ner-rampning via serieporten.
Det är inget fel på bascom, gjorde en datormus mha bascom på 5min igår, gör om det med era C/asm-kompelatorer .
Tekko vad vill du göra? vilka tider vill du ha på Wa?
Den mest flexibla lösningen är nog att konfigurera timer0 så att den genererar ett overflow-interrupt. Sedan kan du reglera hastigheten mha. en prescaler och att ladda counterregistret (TCNT0) med ett lämpligt värde innan du lämnar interuptet.
Varför kan man inte använda svenska när man programmerar?
Senast redigerad av RDX* 13 mars 2006, 12:52:57, redigerad totalt 1 gång.
Jorå, jag kör ju med löpande månad + 30 dagar så jag samlar ihop bara till månadsfakturan
Dessutom kan man kalla variablerna vad man vill om namnen enbart är med de legala tecken (brukar vara 'a'->'z', 'A'-'Z', '0'-'9' och '_') och de inte är reserverat av språket.
Men jag undrar en sak:
RDX*: "...gjorde en datormus mha bascom på 5min igår..."?
Hur? Jag menar, att emulera kommunikationsmässigt är ju inget svårare problem men du byggde alltså en datormus med software? Kan du trolla med knäarna också? Vilken färg har den?
Icecap> Änså länge är den protoboardfärgad . Det jag syftar på är att bascom har färdiga rutiner till det mesta, I mitt fall så finns det färdiga biblitotek för PS/2 komunikation. Så istället för att lägga ner en vecka på att lära sig handskakningsprotokoll för möss och en dator så använder jag tex 2 rader för att flytta muspekaren 10 pixlar upp.
Jo du, ge mig ett PS2-emu lib och jag ska göra det samma på den tiden.
Men till topic:
Tekko: jag har lagt in ett program i C just för att visa hur interrupts kan fungera, det ligger under software och är RC-servo styrningen. I den ändrar jag Timer1-värdet jämt och ständigt, det kan kanske vara något att suga på fastän det är C och PIC.