Register eller RAM

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Register eller RAM

Inlägg av sodjan »

Hm...

Nej, en ADD skriver över en av operanderna.
För att göra r3=r2+r1 får man göra:
MOV r3, r2 ; Kopiera r2 till r3
ADD r3, r1 ; Addera r1 till r3
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Register eller RAM

Inlägg av Andax »

För AVR så finns det inte R3 = R1 + R2. Det finns däremot lite Word adresseringsmoder som kan använda två register bredvid varandra som 16 bitars tal.

Vad jag inte förstår är påståendet att 1024 bytes kan adresseras fritt som register i en PIC eftersom man alltid måste ange en bank.
Jag går med på att 128 bytes kan ses som alltid fritt adresserbart. Allt annat kräver någon form av book-keeping, antingen av den som programmerar assembler eller av kompilatorn som lägger till korrekt bank val när så behövs.
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Register eller RAM

Inlägg av sodjan »

> Vad jag inte förstår är påståendet att 1024 bytes kan adresseras fritt som register i en PIC eftersom man alltid måste ange en bank.

Nej, man måste inte alltid ange en bank, den läggs till automatiskt.
Är redan rätt bank vald, behöver man inte göra något alls.

T.ex denna kod fungerar *alltid* och mot alla 1024 bytes:
BANKSEL <min-variabel>
ADDWF <min-variabel>

Du kan använda alla 1024 bytes fritt på det sättet. Bank-hanterningen är
alltså generell och fungerar (som mycket annat) likadan mot allt.

Indexregistren innehåller hela adressen (utan "bankning").

Men som sagt, poängen är att alla instruktioner fungerar mot allt.
Inte att en stor del av minnet är begränsat till "load/store". Att andra
instruktioner enbart fungerar mot en del av minnet. Att du inte kan göra
bit-tester på I/O-register på ett konsekvent sett, ska du kolla en flagga
får du först kolla vilken halva av I/O-memory som registret råkar ligga i,
sedan välja kod som passar för det. Om registret ligger utanför I/O-memory
(i "data space") blir det ytterligare en *tredje* metod för att kolla en bit.
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Register eller RAM

Inlägg av sodjan »

> Nej, 20MHz, likaså Tiny. Atxmega upp till 32MHz.

Xmega har en del nyheter och finesser. Men det finns ett par hakar.
- Enbart TQFP44, QFN44, TQFP64, QFN64, TQFP100 och BGA100 kapsel.
- Alltså ingen mindre än 44-pinnar.
- Och alltså inga DIP (inte så "hobbyist friendly").
Är det någon här som kör Xmega?
Användarvisningsbild
Icecap
Inlägg: 26623
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Register eller RAM

Inlägg av Icecap »

Kollade just ATXMEGA128A1-AU på Farnell.
128KB flash.
8kB RAM.
8 bit.
Hardware multiplier
32MHz.
1,6 - 3,6V
103,92kr

Renesas RX210 (R5F52108ADFP)
512kB flash
64kB RAM
32 bit
FPU
50MHz
2,7 - 5,5V
111,25kr

Låter inte helt konkurrensdugligt faktisk... En gammal uppskrämd 8-bit arkitektur mot en modern µC.

Tar man RX600 kan man få en R5F562N8ADFP.
512kB flash
96kB RAM.
32 bit.
FPU
100MHz
2,7 - 3,6V
112,38kr

Känns inte som att de finns någon anledning att befatta sig med xmegan alls.
Borre
Inlägg: 4605
Blev medlem: 14 juni 2007, 15:43:50
Ort: Hälsingland

Re: Register eller RAM

Inlägg av Borre »

Det var bara ett exempel eftersom det jämfördes med fel frekvens. Den där jämförelsen var ju däremot att jämföra äpplen med päron.

Sodjan, enbart bra kapslar tycker jag. Allt jag gör hemma är på hobbynivå men använder i princip aldrig DIP för det, ju mindre kapsel desto bättre. Så det är högst personligt vad som är hobbyvänligt och inte.
Har sett nån använt Atxmega här, men att den används så ofta tror jag inte.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4743
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Register eller RAM

Inlägg av Swech »

ATSAM4N8BA-MU - 32 BIT MCU, CORTEX M4, 100MHZ, QFN

32 BIT MCU, CORTEX M4, 100MHZ, QFN-64
Architecture: ARM Cortex-M4
Program Memory Size: 512KB
RAM Memory Size: 64KB
CPU Speed: 100MHz
No. of I/O's: 47
Digital IC Case Style: QFN
No. of Pins: 64
Embedded Interface Type: I2C, SPI, UART, USART
Supply Voltage Min: 1.62V
Supply Voltage Max: 3.6V
MSL: MSL 3 - 168 hours
SVHC: No SVHC (20-Jun-2013)
Controller Family/Series: SAM4N
Core Size: 32bit
Operating Temperature Max: 85°C
Operating Temperature Min: -40°C
Peripherals: ADC, DAC, DMA, PWM, Timer
Program Memory Size: 512KB

SEK 48.50:-
Med ditt resonemang Icecap så är Renesas processor också en återvändsgränd
Dubbla priset mot en ARM, Nåja man får en MMU på köpet.

Swech
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Register eller RAM

Inlägg av sodjan »

> Kollade just ATXMEGA128A1-AU på Farnell.
> Renesas RX210 (R5F52108ADFP).......

Men det förutsätter att man tidigare inte har någon investering i AVR.
Annars tillkommer portning, utbildning o.s.v. :-)

Men, om vi talar om hobbybruk så är minsta kapsel på 44 pinnar och
avsaknaden av DIP (eller SOIC) (för många) mer begränsande. Men visst,
om man klarar sig med 8-pinnar så räcker sannolikt gamla AVR också... :-)

> Sodjan, enbart bra kapslar tycker jag.

Avsaknaden av kapslar som underlättar labbande (och ibland även 5V)
brukar av många anses som "hobbyist unfriendly". Sen så kanske några
tycker att det är OK och har rutiner för att jobba med TQFP eller QFN,
men det är verkligen inte alla.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Register eller RAM

Inlägg av Andax »

Sodjan,

Jag förstår att man med två instruktioner i följd kan simulera effekten av att man kan se hela ram som en registerfil. Men med det resonemanget så ska man väl tillåta att man använder två instruktioner för avr vid jämförelsen.

Sen håller jag med Swech om att cortex-m4 för knappt inga pengar alls ger bra mycket bang för pengarna.
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Register eller RAM

Inlägg av sodjan »

Jo, men min poäng är att allt "minne" hanteras på ett enda sett på PIC.
På AVR är det 3-4 olika minnes-type med olika egenskaper och flera olika
instruktioner för att göra samma sak beronde på var i minnet det sker.

Och genom att t.ex allokera det minne som en viss rutin behöver till
samma bank, så behöver man så klart inte switcha så ofta. Poängen
är fortfaranda att alla arit/logiska/bit/whatever instruktioner fungerar
mot allt minne. Det är ju det som är den stora skillnaden. Och det är
delvis därför (även om vissa så klart påstår att det inte spelar någon
roll) som AVR behöver 131 olika intruktioner mot 41 för PIC16F1xxx.
Samma PIC-instruktion fungerar helt enkelt mot allt.

> Men med det resonemanget så ska man väl tillåta att man använder två instruktioner för avr vid jämförelsen.

Tre, du behöver även skriva tillbaka resultatet.

T.ex:
BANKSEL <en-variabel>
DECF <en-variabel>

Motsvarar:
LDS r2, <en-variabel>
DEC r2
STS <en-variabel>, r2

Om vi har 3 räknare som ligger i samma bank:

BANKSEL <variabel1>
DECF <variabel1>
DECF <variabel2>
DECF <variabel3>

Mot:
LDS r2, <variabel1>
DEC r2
STS <variabel1>, r2
LDS r2, <variabel2>
DEC r2
STS <variabel2>, r2
LDS r2, <variabel3>
DEC r2
STS <variabel3>, r2

Blir det fler kör man sannolikt indexerat/indirekt.
På PIC kan även (t.ex) DECF köra indexerat/indirekt.
På AVR är det enbart LD/ST som kan köra indirekt.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Register eller RAM

Inlägg av snigelen »

Icecap skrev:Kollade just ATXMEGA128A1-AU på Farnell.
Det är den allra första Xmegan. Atmel säger "Not recommended for new designs – use XMEGA AU series" om den. Den pinkompatibla och bättre ATXmega128A1U(-AU) kostar hälften så mycket. (-AU anger vilken kapsel det är).
sodjan skrev:- Alltså ingen mindre än 44-pinnar.
Den relativt nya (~ett år) XMegaE5-serien är 32-pinnars. Dock bara SMD även där. Men kopplingsplattevänliga kort med plats för avkoppling, programerings-sockel och någon lysdiod kostade mig 37 kr för tre kort hos OSHpark.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46879
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Register eller RAM

Inlägg av TomasL »

Vad man kan konstatera är att En PIC med samma instruktionshastighet gör jobbet minst lika snabbt och ofta betydligt fortare än en AVR.
Om vi pratar 8-bitars prollar.
Nerre
Inlägg: 27168
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Register eller RAM

Inlägg av Nerre »

Tänk så olika slutsatser man kan dra från samma data. Det beror väl helt på vad det är man gör?

Jag får väl damma av mitt exempel igen (snyggar till variabelnamnen bara).

Kod: Markera allt

for loop1 = 0 to 7
  for loop2 = 0 to 7
    result=loop2+loop1*8
    gör "nåt" med result
  next loop2
next loop1
Ovanstående loop kommer att gå snabbare på en AVR än en PIC eftersom AVRen kan ha både loop1, loop2 och result i register och alltså inte behöver någon LD eller ST.

Jag är ringrostig på AVR assembler men det borde bli nåt i stil med:

Kod: Markera allt

        ldi r16,0       ; loop1 = r16
loop1:  ldi r17,0       ; loop2 = r17

loop2:  mov r18,r16     ; result = r 18 (används även som mellanlagring)
        lsl r18	      ; skulle kunna använda MUL, men i just detta fall går skiften minst lika snabbt
        lsl r18
        lsl r18

        adc r18,r17

och här gör vi nåt med r18

        inc r17         ; next loop2
        cpi r17,7
        brne loop2

        inc r16         ; next loop1
        cpi r16,7
        brne loop1
Alla instruktioner går på en instruktionscykel (d.v.s. en klockcykel) utom då hoppen som ibland tar två cykler beroende på om villkoret är uppfyllt eller inte.
Användarvisningsbild
Icecap
Inlägg: 26623
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Register eller RAM

Inlägg av Icecap »

Nä du, det kommer att gå snabbare på en PIC, räknat i instruktioncykler!
Nerre
Inlägg: 27168
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Register eller RAM

Inlägg av Nerre »

Ja, i instruktionscykler kanske, men en instruktionscykel på en PIC gör fyra gånger så mycket saker som en instruktionscykel på AVR.
Skriv svar