Hur snabb är din port?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur snabb är din port?

Inlägg av 1802 »

Ja koden finns, men man skall förstå den med...

Kod: Markera allt

comf 7      ;This instruction inverts the bits in the register specified.
bsf 3,5     ;These instructions set (BSF) the indicated bit in a register.   
decf 70     ;Another common operation is to add or subtract 1 from a register. 
swapf 70,w  ;This peculiar command moves the low 4 bits of the register to the top 4 bits and the top 4 bits of the register to the bottom 4 bits. 
movwf 87    ;The W register is central to most programs. This instruction moves a constant into the W register.


Here are some of the more common registers:
All banks, 0x0 - Indirect register (INDF; see below).
Bank 0/2, 0x1 - Timer 0 register.
Bank 1/3, 0x1 - Option register.
All banks, 0x2 - Low 8 bits of program counter (current program location).
All banks, 0x3 - STATUS register. Contains flags that tell you if the last operation resulted in a zero result or generated a carry. Also contains the RP bits.
All banks, 0x4 - Indirect pointer (FSR; see below).
Bank 0, 0x5 - PORT A data bits.
Bank 1, 0x5 - PORT A direction bits.
Bank 0/2, 0x6 - PORT B data bits.
Bank 1/3, 0x6 - PORT B direction bits.
Bank 0, 0x7 - PORT C data bits.
Bank 1, 0x7 - PORT C direction bits.
All banks, 0xA - PCLATH (used to load high bits of program counter).
All banks, 0xB - Interrupt control register.
Jag har lagt till lite kommentarer och info, för att försöka förstå den.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur snabb är din port?

Inlägg av sodjan »

Eftersom det inte finns någon GOTO till början av koden så
kommer den att löpa genom resten av minnet som NOP's.
Det i sig ger ju en fördröjning. Sen, om man är intresserad,
så är det bara att fundera lite på vad instruktionerna gör.
Det blir en del tydligare om man kör symboliskt:

Kod: Markera allt

comf   portc        ; byt 0 <-> 1 på PORTC (eller TRISC om bank 1/3 är vald).
bsf    status, RP0  ; byt till bank 1/3
decf   70           ; Minska värdet på adress h'70' (i non-banked memory)
swapf  70, w        ; Swap high/low nibble och lägg resultatet i W
movwf  87           ; Uppdatera TRISC med värdet i W
Enklast är att köra det i MPSIM och notera värdena efter hand.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur snabb är din port?

Inlägg av 1802 »

sodjan: Jag tackar och bockar :tumupp:

Vissa pic's går inte att radera(ex pic12c508a). Är det då NOP man skriver över innehållet med, så att man kan anv dessa chip flera ggr? Hur kan det då ligga NOP i obrända delar?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabb är din port?

Inlägg av TomasL »

Nej ett OTP-chip används bara en gång, blir det fel får man kasta den, och ta en ny.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabb är din port?

Inlägg av TomasL »

sodjan skrev: Detta måste var den mest undrliga tråden på ganska länge...
Ja, jag fattar heller inte mycket av den.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur snabb är din port?

Inlägg av sodjan »

> Vissa pic's går inte att radera(ex pic12c508a). Är det då NOP man skriver över innehållet med...

Man kan inte skriva p.g.a att man inte kan radera. Eller tvärtom...
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur snabb är din port?

Inlägg av 1802 »

Som jag fattat det så går det att skriva flera ggr. Men bara från 0 till 1 eller om det var tvärt om. Typ som ett EPROM. Genom att då skriva över använda data med 00 eller om det var ff. Kan man fortsätta om det finns minne kvar. Det man skriver över med tror jag är NOP.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabb är din port?

Inlägg av TomasL »

Nej, du har fattat det helt fel, en raderad processor är fylld med NOPar, och eftersom du inte kan radera en OTP-processor, kan du ej heller fylla den med NOPar.
Dessutom kan du inte skriva till konfigurationsregistren.

Följaktligen kan du inte återanvända den.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabb är din port?

Inlägg av TomasL »

1802 skrev:Och det blir hur många bitars binärräknare snabbare än ögat? Obs det är inte bara den snabbaste jag är ute efter. Alla exempel är välkomna.

Ofta kommer frågan varför, jag svarar med ett citat. "Om du behöver fråga, så förstår du inte svaret."
Skulle villa påstå tvärtom. eller rättare sagt, eftersom du frågar, så......
anders_w
Inlägg: 112
Blev medlem: 6 september 2011, 17:02:03

Re: Hur snabb är din port?

Inlägg av anders_w »

Inte för jag förstår vad tråden handlar om, men jag använder ofta denna princip när jag håller på med FPGA. Då får man använda ungefär bit 26 för att komma ner under 1 Hz. En blinkande lysdiod ger mer information än man kan tro...
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur snabb är din port?

Inlägg av 1802 »

anders_w: :tumupp: första svaret.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabb är din port?

Inlägg av TomasL »

1802, det svaret är ju fullständigt ointressant.
Om jag i en PIC32 kör en normal while(1)-loop och räknar upp en 16-bitars-port, får jag rätt låg frekvens på samtliga bitar om jag kör med 1Hz klockfrekvens, kör jag med 80 MHz och en PB-klocka om 40 Mhz, får jag med debug-kod ut 4 MHZ på bit 1, och runt 122 Hz på bit 15.
Fortfarande är det fullständigt ointressant och säger ingenting om systemet som sådant.
anders_w
Inlägg: 112
Blev medlem: 6 september 2011, 17:02:03

Re: Hur snabb är din port?

Inlägg av anders_w »

Ointressant för dig, men kanske inte för 1802? Ingen vet ju varför 1802 frågar eller vad informationen ska användas till. Vilket heller inte spelar någon roll förutom för 1802 som möjligtvis kunde få fler svar genom att berätta det.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur snabb är din port?

Inlägg av 1802 »

Jag tycker det framgår tydligt i tråden. Att jämföra olika plattformars port hastighet. Blinka LED gör nog de flesta som första projekt. Och stöter på problemet att det blinkar fortare än man kan se. I vissa system med tex basic, räcker en 8 (har inte kollat min qbasic rutin än)bitars räknare för att det skall börja blinka tydligt synligt. Och även om man bara har en LED, kan man välja att visa rätt bit i binärräknaren. Att det sen är fler parametrar att jämföra mellan plattformar, har också framkommit i tråden.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabb är din port?

Inlägg av TomasL »

Nej det framgår inte speciellt tydligt, eftersom det faktiskt dels beror på vilken hastighet man kör på och dels vilken applikation man kör.

Man behöver inte alltid alls använda räknare eller liknande för att blinka en led tydligt.
Så frågan är omöjlig att svara på.

Skall jag blinka led, så använder jag en vTaskdelay(1000) till exempel, eller också pollar jag coretimer, eller något liknande.
Skriv svar