[PIC] Plocka bitar och lägg i byte

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Vad är det för skillnad på kristall och kristalloscillator?

Elfa hade bara C-MAX kristalloscillatorer.

Men det verkar som att två ben kopplar man till kretsen, ett ben till jord och det andra till jord när man vill enabla. Så det blir väll två till jord och de andra till PICen för min del.

På C-MAX kristalloscillatorerna gör de skillnad på benen till kretsen. Det ena är +5V och det andra output. Fungerar dessa att köra till PICar?

Såg förresten att en del kristalloscillator kör på 3.3V. Hur ska jag lyckas ta reda på det.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> och som det är nu tar det typ 20us att bara komma in i avbrottsrutinen när PICen körs i 8Mhz.

Det är en *väldigt* lång tid !
Normal "interrupt latency" ska inte vara mer än ett par instruktions cycler.
20 us = 40 cykler. Är det C som gör en massa saker "under the hood" ?

Jag tror inte att du ska fundera på USART'en för detta.

> Frågade på forumet tidigare någon gång skillnaden mellan PIC16Fxxx
> serien och PIC18Fxxx serien och fick inte fram något.

?? Väldigt konstigt! Har du någon länk till tråden ??

> Har dock beställt utvecklingskort för PIC16Fxxx seriern men det kanske
> går att modda så att det fungerar för PIC18Fxxx serien också.

Många PIC18 har i princip samma pinout som vanliga PIC16. Speciellt
i 28 och 40 pin kapsel.

> Vad är det för skillnad på kristall och kristalloscillator?

Kristall = enbart kristall. Använder oscillatorn som sitter i (t.ex) en PIC.
Kräver ingen egen matning.

Kristalloscillator = En kristall + osciallator hoppbyggda i samma kapsel.
Ger TTL/CMOS signal ut och kräver egen matning (5V eller 3.3V är vanligast).

I *ditt* fall ska du ha en *kristall*. t ex. :
http://www.tradera.com/Kristallsats_til ... n-40364545

> Som jag skrev i en annan tråd så ska det gå att köra i 8Mhz och får PICen att agera 1-wire slave.

Sannolikt. Med det går nog åt lite "skohorn", och det är inte säkert att
du har tillräcklig kontroll över instruktionssycklerna från C för att lyckas.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Kod: Markera allt

$0004	$	_interrupt:
$0004	$00FF			MOVWF	STACK_15
$0005	$0E03			SWAPF	STATUS, 0
$0006	$0183			CLRF	STATUS
$0007	$00D4			MOVWF	?saveSTATUS
$0008	$0804			MOVF	FSR, 0
$0009	$00D3			MOVWF	?saveFSR
$000A	$080A			MOVF	PCLATH, 0
$000B	$00D5			MOVWF	?savePCLATH
$000C	$018A			CLRF	PCLATH
$000D	$087A			MOVF	STACK_10, 0
$000E	$00E4			MOVWF	STSAVED_10
$000F	$0871			MOVF	STACK_1, 0
$0010	$00E3			MOVWF	STSAVED_1
$0011	$0870			MOVF	STACK_0, 0
$0012	$00E2			MOVWF	STSAVED_0
;1Wire_Master.c,63 :: 		void interrupt() {
;1Wire_Master.c,69 :: 		if (INTCON.INTF) {
$0013	$1C8B			BTFSS	INTCON, 1
$0014	$28AD			GOTO	L_interrupt_2
;1Wire_Master.c,70 :: 		switch (onewire_state) {
$0015	$2896			GOTO	L_interrupt_3
;1Wire_Master.c,72 :: 		case INITIALIZATION  :
$0016	$	L_interrupt_5:
;1Wire_Master.c,73 :: 		if (OPTION_REG.INTEDG==0) {
$0016	$1303			BCF	STATUS, RP1
$0017	$1683			BSF	STATUS, RP0
$0018	$3000			MOVLW	0
$0019	$1683			BSF	STATUS, RP0
$001A	$1B01			BTFSC	OPTION_REG, 6
$001B	$3001			MOVLW	1
$001C	$00F1			MOVWF	STACK_1
$001D	$0871			MOVF	STACK_1, 0
$001E	$3A00			XORLW	0
$001F	$1D03			BTFSS	STATUS, Z
$0020	$2826			GOTO	L_interrupt_6
Vet inte vad allt STACK-ande är men det tar ett tag innan man kan göra något efter en INT0-avbrott.

Jo jag vet att jag borde ha en kristall men jag hittade inget annat än en 20Mhz kristalloscillator på en gammalt 3com nätverkskort. Har monterat krsistalloscillatorn så den har ben nu. Behöver dock veta hur den ska kopplas. Två ben verkar vara till jord i alla fall men de andra verkar ju vara matning och output i så fall. Är det bara output som ska kopplas till PICen i så fall?
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Då kör man i 20Mhz då. På nätverkskortet var det kondingar mellan benen som går till kretsen och ett annat ben på kretsen. Finns det inga inbyggda kondingar i kristalloscillatorn? Eller är det en kristall med inbyggd avkoppling mot jord i och med att den måste kopplas mot jord?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Output på oscillatorn ska kopplas till OSCIN på PIC'en, sedan är det GND och VDD til oscillatorn och sen ska den köra. Såklart bör du placera en avkopplingskondensator mellan VDD och GND på oscillatorn.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Man kan koppla den direkt till OSCIN oich OSCOUT i och med att PICen kan driva den med sin utgång. Har tyvärr för ont om utrymme för att koppla av kristallen som det är nu. Men vilken del är viktigast att koppla av? Matningen till den eller output eller båda?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Skrev jag något om OSCOUT????

Det menar jag bestämt INTE att jag gjorde! OSCOUT från PIC'en ska vara oansluten!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Alltså, en ytmonterad *kristall* har ofta 4 ben (två i varje ände) där två
st är "no connection" och kan kopplas hur man vill.

> Då kör man i 20Mhz då.

Ja men då så... :-)

> Output på oscillatorn ska kopplas till OSCIN på PIC'en,

Ja, men *vet* vi att det är en *oscillator* och inte en vanlig ytmonterad kristall ???
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

RA6/OSC2/CLKO
Bidirectional I/O pin.
Oscillator crystal output. Connects to crystal or
resonator in Crystal Oscillator mode.
In RC mode, this pin outputs CLKO signal which has
1/4 the frequency of OSC1 and denotes the
instruction cycle rate.

RA7/OSC1/CLKI
Bidirectional I/O pin.
Oscillator crystal input.
External clock source input.

CLKO, det står ju att det är Oscillator crystal output. Ska man inte koppla den till kristallen då? Det fungerar hur som helst. För att vara på den säkra sidan. Är det alltid 2 lödpunkter på kristaller och aldrig 4 lödpunkter?

Tänkte om det är en kristall med inbyggda kondingar som kopplas till jord via de andra benen. Dock förstår jag inte varför den har externa kondingar också i så fall.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Liknar väldigt mycket denna: Bild

...dock är J-benen på kortsidorna. 2st på varje kortsida. Känns somatt jag borde sätta någon konding på den. Vet dock inte hur jag ska få dit det. Men det löser sig nog. Detska ju inte vara så stora i alla fall.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Angående ASM koden från kompilatorn...

Din C kompilator använder en "software stack" för att spara undan en del
sakar vid interrupt. Detta tar extra tid och man gör (normalt) inte så när man
kör assembler. De första 15 instruktionerna skulle bli 4-5 instruktioner.

Notera också att på en PIC18 så sparas motsvarande register automatiskt
i samband med interruptet (alltså utan extra instruktioner eller att det
tar någon extra tid), så interrupt är i allmänhet snabbare på en PIC18
än på en PIC16 även vid samma klockhastighet. Registrerna återställs också
automatiskt vid RETFIE (d.v.s "return from interrupt).

Notera att "if (INTCON.INTF) {" går snabbt och enkelt med en BTFSS, medan
"if (OPTION_REG.INTEDG==0) {" blir mycket mer komplext.

Kan du prova med "if (!OPTION_REG.INTEDG) {"
(eller hur man nu skriver "not" i C) för att se om det blir
mer efektivt.

Hur som helst så är det ju tydligt att det inte är så lätt att ha kontroll
över hur många instruktionscyckler man "förbrukar" när man *inte* kör asm... :-)
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Kristaller kan fint ha 4 lödpunkter! Antingen som monteringsgrej eller dubbla kontakter till samma ledare.

Men den du visar verkar vara ett kristall och då kan du ju testa att koppla in det "som vanligt" utan GND eller VDD, då kan du knappast ha sönder något.

Kör den vet du att det är ett kristall.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

Det måste vara en ytmonterad kristall. Benen jag trodde var jordade var visst inte det. Det såg typ ut som det om man inte kollade riktigt noga.

Så nu har jag löst den gåtan i alla fall. Bra att veta att om man behöver en 20Mhz kristall så finns de på 3Com:s ISA-kort. :-)

Mjukvarustack. Hmm undrar om man kan skriva interruptet i ASM för att snabba upp det hela. Kom att tänka på att det går att det borde gå att köra en PIC18 utan problem på utvecklingskortet. Ska testa det när jag har fått kortet.
Hoppas inte kompilatorn gör alla dessa dumheter när den kompilerar för en PIC18Fxxx.
Provade att kompilera koden för PIC18F2525 men det klagade på INTCON.INTF så jag antar att det är lite i koden som måste ändras.

Kollade lite på olika PIC18Fxxx. Jag tror att PIC18F2525 eller PIC18F2620 blir bra. Med dem kan jag komma upp i 40Mhz, en hel del minne och får plats i en 28pin PDIP.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

Inlägg av ankan »

I PIC16Fxxx serien brukar PIC16F88 vara favorit bland många och även hos mig men vilken krets är populärast i PIC18xxx-serien?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Nja, om man tittar lite mer historiskt så var/är de vanligaste PIC16
84A, 629A och hela 87x(A) serien. Idag har dessa ersatts av
modernare modeller där F88 ingår om det är just *18* pinnar man
vill ha. 87xA serien har ersatts av 88x serien. o.s.v....

Om man jämför med dessa i PIC18 serien så är de "3-siffriga"
18F242/252/442/452 de som ligger närmast 16F87xA. Dock har de
idag ersatts av senare "nanowatt" modeller med mer finesser.

Idag är det inte lätt att hitta favoriter. Det finns över 100 PIC18
modeller "In Production" !

Jag hade en hel del problem att hitta en litet urval PIC18 till min PIC-sida,
men det som finns där kan väl kanske ses som mina "val"... :-)
Skriv svar