Sida 4 av 8
Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 12:28:15
av noshorning
Jag ser inget direkt fel i din omskrivning av det jag skrev
Det gör dock jag nu dock.
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.
Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 12:58:26
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!
Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 13:36:34
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.
Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 13:55:12
av sodjan
> är det ju lätt att byta ut SBIC mot t.ex. LD r16, IOREG och SBRC r16.
Blir det inte :
och för att göra set/clear bit :
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...

Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 14:05:13
av noshorning
aha... Så 16 och 36 står i hexadecimalt
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
Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 14:09:33
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...
Re: Hur ska jag komma igång?
Postat: 9 juni 2012, 14:14:05
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.
Re: Hur ska jag komma igång?
Postat: 12 juni 2012, 19:57:01
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?
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...
Re: Hur ska jag komma igång?
Postat: 12 juni 2012, 20:05:08
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:
Re: Hur ska jag komma igång?
Postat: 12 juni 2012, 21:20:48
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?
Re: Hur ska jag komma igång?
Postat: 12 juni 2012, 21:30:06
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?
Re: Hur ska jag komma igång?
Postat: 12 juni 2012, 21:47:05
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...
Re: Hur ska jag komma igång?
Postat: 12 juni 2012, 21:55:02
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...
Re: Hur ska jag komma igång?
Postat: 13 juni 2012, 08:03:52
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?
Re: Hur ska jag komma igång?
Postat: 13 juni 2012, 08:24:22
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.