Sida 3 av 4
Postat: 1 juli 2007, 22:23:27
av sodjan
Du kan köra på precis vilken kristall du vill, bara du håller
dig inom "ramarna", d.v.s t.ex *max* 20 Mhz. Att bara vissa
värden är godkända är en missuppfattning. Ofta är "udda"
frekvenser önskvärda för att t.ex få baudrates med 0% fel..
> Jag menar att i data bladet står det att 4 8 och 20Mhz går.
Visst, och det är helt rätt.
Men det fungerar med en massa andra värden också...

Postat: 2 juli 2007, 00:09:39
av bos
Läs databladet sid 162, under kolumnen "Max".
Så länge du håller dig under dessa värden så har det noll och ingen betydelse - sett ur PIC:ens överlevnads-/funktionssynpunkt - vilken hastighet din klocka har.
Postat: 2 juli 2007, 13:47:56
av squiz3r
Ja!

Då behöver jag förhoppningsvis inte slänga mina som jag har nu
Ska testa så fort jag får tid!
//Daniel Andersson
Postat: 2 juli 2007, 14:06:00
av bos
Slänga? SLÄNGA?!
Postat: 2 juli 2007, 14:21:54
av JimmyAndersson
Ja du, en del på forumet använder hemska ord. *ryser*

Postat: 2 juli 2007, 16:05:27
av vfr
Säger hamstern!
Postat: 2 juli 2007, 16:57:34
av squiz3r
Jag syftade inte på slänga i en sopyunna utan i en hörna där de kan ligga tills de är antika
//Daniel A
Postat: 2 juli 2007, 17:27:55
av squiz3r
Nu har jag läst i databladet men fattar ändå inte riktigt hur sodjans kod funkar. (den första sodjan skrev). Jag har alldrig använt en timer men det tror jag att jag fattar hur det funkar, men inte hur den blinkar. "comf" är ju det enda kommandot som har med det att göra, eller?? Då måste den ju byta status på pinnen så att om den är 1 så blir den nol och tvärt om?? Funkar det att koppla en LED på vilken pinne som helst i portA?
Edit: Var ska 16F877A.LNK ligga, och var hittar jag den?
Mvh. Daniel Andersson
Postat: 2 juli 2007, 18:00:08
av sodjan
OK, jag tror att jag vet vilken kod du menar...
COMF inverterar ett register, i detta fall tror jag att det var PORTA.
Så alla "1" blir "0" och tvärtom. Det var bara en genväg för att
blinka med en pinne, eftersom det inte finns någon instruktioner
som bara gör det med en pinne.
> Funkar det att koppla en LED på vilken pinne som helst i portA?
I *detta* fall skulle det göra det, ja.
COMF instruktionen ligger i den rutinen som Timer1 interuptet
kör regelbundet (varje gång som Timer1 räknar från h'FFFF'
till h'0000')
Alla LKR filer ligger i LKR katalogen där MPLAB är installerat.
Om jag skrev LNK så är det ett skrivfel...
Postat: 2 juli 2007, 18:03:22
av squiz3r
Okej jag förstår det mesta nu
"Om jag skrev LNK så är det ett skrivfel..." Okej, Då förstår jag, jag hittade LKR men inget LNK och jag kan inte så mycket av den biten så jag kunde inte räkna ut själv att det var ett skrivfel.
Tack!
Mvh. Daniel Andersson
Postat: 2 juli 2007, 18:10:54
av sodjan
Jag gör ofta det felet, styrfilerna till länkaren i i RSX-11/M (PDP11)
hette just LNK. Det var 10-15 år sedan, men det sitter kvar

Postat: 2 juli 2007, 18:19:54
av squiz3r
Då vet jag det till framtiden när jag tar en kod som du gjort

Jag lyckades få den att blinka trotts att jag först kopplade fel och körde 2amp genom den!
Mvh. Daniel Andersson
Postat: 2 juli 2007, 18:22:04
av sodjan
Perfekt.
Nu blir allt mycket enklare när du väl har *en* kod som fungerar.
Nu är det bara att bygga vidare...

Postat: 2 juli 2007, 18:26:07
av squiz3r
Jepp
En bit av koden:
Kod: Markera allt
RESET_VECTOR CODE 0x000 ; processor reset vector
goto start ; go to beginning of program
INT_VECTOR CODE 0x004 ; interrupt vector location
goto isr_routine ; goto main interrupt service routine.
MAIN CODE
start
banksel adcon1
movlw h'06'
movwf adcon1 ; Stäng av ADC.
banksel trisa
clrf trisa
clrf trisb
clrf trisc
clrf trisd
clrf trise ; Alla pinnar = utgångar.
banksel t1con
movlw b'00110001'
movwf t1con ; Se datablad...
banksel pie1
movlw b'00000001'
movwf pie1 ; Enable avbrott från TMR1.
banksel intcon
bsf intcon, peie
bsf intcon, gie ; Enable avbrott...
Om jag inte vill använda timern kan jag då ta bort allt detta pluss biten med "BLINKA!"?
Kod: Markera allt
banksel t1con
movlw b'00110001'
movwf t1con ; Se datablad...
banksel pie1
movlw b'00000001'
movwf pie1 ; Enable avbrott från TMR1.
banksel intcon
bsf intcon, peie
bsf intcon, gie ; Enable avbrott...
Mvh. Daniel Andersson
Postat: 2 juli 2007, 18:32:12
av sodjan
Använda och använda...
Om du bara vill undvika avbrott/interrupt från timer1, så räcker det
med att *inte* sätta TMR1IE i PIE1. Timer1 kommer fortfarande
att "snurra", men det är inget som varken stör eller syns.
Om du vill använda timer1 till annat, så får du konfigurera den
så det passar.
Om du vill att timer1 står still, så får du stänga av den.
"0" -> TMR1ON i T1CON.
Så det beror på vad du vill göra...
Bitern med "BLINKA!" kan du ta bort eller låta vara kvar, den
kommer i alla fall aldrig att köras. Det beror också på vad du vill göra...