Hur ska jag komma igång?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

Jag ser inget direkt fel i din omskrivning av det jag skrev
Det gör dock jag nu dock. :P

36 i decimal, är 24 i hexa 2*16^1+4*16^0=32+4=36
16 i decimal, är 10 i hexa 1*16^1+0*16^0=16+0=16

Jag tänkte fel som vanligt och skrev någon helt konstigt...

Nu fick jag till det i mitt huvud helt också tror jag. De 96 första adresserna tillhör registren och I/O. Det finns ju 31 register så det borde vara 96-31=65 I/O-adresser. De första 32 av dessa fungerar SBIS på. Sen finns det 33-adresser till som den inte fungerar på... Säkert självklart för dig men jag tänkte lite fel.

Om jag får hålla på ett tag så kommer nog jag också in i detta. Tack för all hjälp dock.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur ska jag komma igång?

Inlägg av sodjan »

> Det gör dock jag nu dock.

Nej nej nej... $16 och $32 är *hexadecimalt* !

I/O registren är mappade till "Data Space" efter de 32 vanliga registren (R0 - R31).

R0- R31 är mappade till $0000 - $001F i Data Space.

$00 - $3F (64 I/O Registers) är mappade till $0020 - $005F i Data Space.
(Notera dock att det enbart är $00 - $1F som kan hanteras med IN/OUT.)

> Det finns ju 31 register

Nej, *32* !! R0 - R31.

> Sen finns det 33-adresser till som den inte fungerar på...

32...

Figur 19 på sidan 17 är glasklar, och dina berökningar och det du skriver
stämmer ju inte med den bilden om du jämför!
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Hur ska jag komma igång?

Inlägg av jesse »

Det är ju en hel del sådana här detaljer som är unika för varje processortyp (men ganska lika inom samma serie, t.ex. AVR) som tar lite tid i början att lära sig.

Det där med adresserna till I/O-utrymmet är något som jag sällan tänker på när jag programmerar. Jag använder de macron som är färdiga i AVR-biblioteken, t.ex. PORTB, PINB etc... och jag har i ingen aning om vad för siffror som de motsvarar.

I C spelar det ju absolut ingen roll, då kompilatorn omvandlar koden till den instruktion som passar bäst, men i assembler kan man ju då och då få ett felmeddelande om man råkar försöka använda SBIC på nån ingång med "fel" adress. Är man då bara medveten om orsaken till felet är det ju lätt att byta ut SBIC mot t.ex. LD r16, IOREG och SBRC r16.

En annan lite frustrerande sak är att alla aritmetiska funktionen inte går att utföra med alla register. Vissa instruktioner funkar bara på r16-r31, t.ex. LDI rd,K (ladda register Rd med ett konstant tal, K. 16 <= Rd <= 31, 0 <= K <= 255)

Det finns några få 16-bitars instruktioner. Dessa brukar vara specialgjorda för de sex översta registren r26-27, r28-r29 och r30-r31. Dessa kallas då X, Y och Z i nomenklaturen.

För exempelvis X hamnar de "låga" bitarna (bot 0-7) i r28 och de "höga" bitarna (bit 8-15) i r29.

Dokument man måste ha tilll hands när man börjar med AVR assembler är AVRAssembler User Guide och AVR Instruction Set manual

User Guiden förklarar en del viktiga saker om minnesutrymmen, preprocessorkommandon osv.

Instruction Set manual förklarar alla instruktioner i detalj. Om man t.ex är osäker på om en bit ska anges som "bitnummer 0-7" eller som "bitmask 0-255" i samband med en viss funktion kan man se där.

Men boken av Per Foyer som jag rekommenderade ovan är guld värd! Man lär sig förutom assembler, även processorns arkitektur och flera av de "perifera funktionerna" så som SRAM, EEPROM, I/O, avbrott (interrupt), timers och UART. Detaljerna får du förstås alltid i databladet för den aktuella processorn.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur ska jag komma igång?

Inlägg av sodjan »

> är det ju lätt att byta ut SBIC mot t.ex. LD r16, IOREG och SBRC r16.

Blir det inte :

Kod: Markera allt

IN     r16, IOREG
SBRC   r16, bit
och för att göra set/clear bit :

Kod: Markera allt

IN     r16, IOREG
SBR    r16, bit
OUT    IOREG, r16
D.v.s tre instruktioner istället för *en* bit-operation direkt mot IOREG.

> Det där med adresserna till I/O-utrymmet är något som jag sällan tänker på när jag programmerar.

Nej, det gör man ju inte, när det har blivit "vardag", så att säga. :-)

> Är man då bara medveten om orsaken till felet...

Så klart. Men det förutsätter att man kan minnesmappen och förstår varför SBIC klagade... :-)
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

aha... Så 16 och 36 står i hexadecimalt :doh:

16 i hexa blir då 16+6=22 i decimal
36 i hexa blir då 3*16+6=54

det finns 32 register innan i/o-adresserna i data adress space
22+32=54
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur ska jag komma igång?

Inlägg av sodjan »

Ja, det kanske stämmer, men normalt finns det ingen anledning
att räkna om adresserna decimalt, det bara rör till det...
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

ahh ioförsig. Men fick inte till det i mitt huvud bara. Ahja, nu vet jag i allafall att det finns tre olika och att man ska tänka på att kolla vart kommandona gäller.

Edit: Jag har även beställt boken, den lär väll komma nästa vecka så då ska det läsas.
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

Nu har jag fått alla grejer :)

Jag har intstallerat programmeraren. Nu vill jag ladda ner programmet till avrn. Men innan dess tänkte jag fråga lite frågor om sådant jag är osäker på.

Databladet till min programmerare: http://www.olimex.com/dev/pdf/AVR/AVR-ISP500.pdf

Det första som inte har något med själva programmeringen att göra är: ska aVcc kopplas till Vcc? Vad är skillnaden?

Sen kommer mina riktiga frågor:
1. Jag hittar ingen clk pin på attiny 26an. Det står i databladet att man vid andra programmerare ofta hoppar över den men inte med denna. Går det utan tro? :S

2. Ska man ansluta processorn till 5V när man programmerar den eller ska man stänga av strömmen på själva kopplingsplattan?

Vill inte gärna förstöra ngt, därför jag frågar innan jag gör föromväxlings skull...
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Hur ska jag komma igång?

Inlägg av thepirateboy »

AVCC är spänningsmatning till de analoga delarna i MCU:n och ska kopplas till VCC.

Ja, processorn ska matas med 5 volt (eller mindre) under programmering.

Databladet har en bild som beskriver uppkoppling:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

Tack så mycket pirat pojken.

Jag har dock lite problem. Det står i avrstudio att spänningen är 0V.

Jag tycker jag kopplat som det står. Spänningen är 5V, men så fort jag kopplar vcc till pin 2 och 2 i programeraren så sjunker spänningen direkt. Jag har en diod som lyser för att markera att det finns en spänning, den slocknar...

Någon som vet vad jag gör för fel på den informationen?
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Hur ska jag komma igång?

Inlägg av thepirateboy »

Om du endast kopplar in jord (pin 6) och 5V (pin 2) till programmeraren, kan du då läsa spänningen i AVR-studio under "HW SETTINGS”.

Har du nån bild på uppkopplingen?
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

Jag hittar inte mobilen nu, vänta en sec så ska jag försöka hitta den så kan jag ta ett foto.

Men det stog fortfarande 0 V. Ska jag förrästen använda ICSP10 eller ICSP6. alltså den med 6 eller den med 10 pins eller båda på programeraren, har använt och kopplat till båda hittils...
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

Det blir ingen bra bild eftersom jag kopplat med sådana där lösa sladdar i färdiga längder. Värdens ormbo.

Men jag tänkte att jag kunde skriva hur jag kopplade när du sa till mig:
vcc till pin 5 och pin 15
gnd till pin 6 och pin 16

sen till programmeraren:
vcc till pin 2
gnd till pin 6

jag gjorde så på både den med 6 och den med 10pins...
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Hur ska jag komma igång?

Inlägg av thepirateboy »

Spelar nog ingen roll om du använder ICSP6 eller ICSP10, men ICSP6 är det normala.

Kopplingen verkar rätt.

Har du mätt att du verkligen har 5 volt?

Var kommer 5 volt ifrån?
noshorning
Inlägg: 54
Blev medlem: 18 februari 2011, 20:00:34

Re: Hur ska jag komma igång?

Inlägg av noshorning »

Yes det är 5V. Jag har en sådan spänningsregulator. Dock inga kondensatorer kopplade till den men den är ändå stadig på runt 5V.

Hur som helst så testade jag att byta plats på lite av kablarna till programmeraren och när jag kopplade:
Vcc till pin 1
miso till pin 2
mosi till pin 3
sck till pin 4
gnd till pin 5
reset till pin 6

så fungerade det att programmera. Dock så blev inte mitt program som fungerade i simulator speciellt fungerande på kopplingsplattan. Eller vissa delar fungerade, men inte allt. Ska fortsätta testa att göra ännu mindre program.

Tack för all hjälp dock.
Skriv svar