kod för rinnande ljus, assembler?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
RTP
Inlägg: 1
Blev medlem: 8 april 2009, 13:37:08

kod för rinnande ljus, assembler?

Inlägg av RTP »

hej
Jag läser på egen hand, försöker sätta mig in i AVR Atmel, microprocessors, assembler och c#. Kan någon hjälpa mig med programmet för ett rinnande ljus?

Jag vet nedan instruktion redan, men har svårt att koppla det till en kod:
Koppla 8 lysdioder på Port-D och 2 switchar på Port-C. Skapa ett rinnande ljus på Port-D.
En lysdiod i taget ska lysa, först den på bit0, därefter den på bit1,därefter bit2,därefter bit3,därefter bit4 osv.
Rinnhastigheten ska vara inställbar med hjälp av data på bitarna 0 och 1 på Port-C. Port-C = %00 ska ge lägst hastighet. %01 lite högre hastighet, %10 ännu högre och %11 ska ge högsta hastigheten.

Del A: Efter det att lysdioden på bit 7tänts och släckts så upprepas bit-0, bit-1 osv, 'ljuset rinner åt ett håll'

Del B: Efter det att lysdioden på bit 7 tänts så ska den på bit 6 tändas dvs 'ljuset rinner fram och tillbaka'.

Till detta använder jag AVR Studio och Elsys AVRUSB500

kan någon detta? jag behöver hjälp, vore snällt om någon kan hjälpa mig med det tack
obs! vill säg att det inte är ngn labb eller skolarbete, jag sitter helt på egen hand, utan handledning, söker därför även en person som behärskar detta och kan hjälpa mig här och där, privatlärare typ :wink:
Användarvisningsbild
prototypen
Inlägg: 11108
Blev medlem: 6 augusti 2006, 13:25:04
Ort: umeå

Re: kod för rinnande ljus, assembler?

Inlägg av prototypen »

I forntiden så labbade jag på 6800 och där fanns ett kommando skifta höger eller vänster med eller utan rotation (bit 7 till 0) så sätt bit 0 till 1 skifta vänta skifta vänta skifta vänta, men det kanske du redan provat.
Sedan så kanske du kan göra ett jänka-ljus.

Protte
eqlazer
Inlägg: 923
Blev medlem: 22 september 2007, 13:53:45
Ort: Göteborg

Re: kod för rinnande ljus, assembler?

Inlägg av eqlazer »

- "Jag vet nedan instruktion redan, men har svårt att koppla det till en kod:"
Vad för instruktion är det du vet? Menar du att du förstår vad utgiften går ut på men inte hur koden ska skrivas? Eller är det någon assembler-instruktion du kan?

Hade du tänkt skriva det i C eller assembler? (funderade på ifall du egentligen menade C istället för C#)

Lite hjälp kanske du kan få utav detta http://wiki.eta.chalmers.se/doku.php?id ... e:projekt2
B1n4ry
EF Sponsor
Inlägg: 1329
Blev medlem: 30 november 2005, 20:02:50
Ort: Borås
Kontakt:

Re: kod för rinnande ljus, assembler?

Inlägg av B1n4ry »

En bra början är kanske att skriva ett program som tänder en lysdiod...
sedan modifiera programmer så lysdioden tänds efter en liten tidsfördröjning
sedan lägger till en loop så den blinkar...
sedan testar att ta in signal på något på en ingång...
och så vidare...

Att programmera mikroprocessorer är inte så svårt om man
a) börjar från början
b) har lite tålamod
c) läser på och söker på nätet
d) har lite fallenhet för logiskt tänkande...

//B1N4RY
Mindmapper
Inlägg: 7230
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: kod för rinnande ljus, assembler?

Inlägg av Mindmapper »

Om du börjar med assembler så har jag hittat en del på dessa ställen

http://www.avr-asm-tutorial.net/avr_en/

http://www.avrbeginners.net/

Glöm ej att titta på Atmels hemsida, det finns en hel del "application notes" AN som är nyttiga. Men från början och resten av livet så är det databladen som gäller. :D

Googla på AVR och ta första träffen sök dig sedan fram till rätt device, så får du en beskrivning av kretsen och länk till dess datablad.

ex. tiny2313

http://www.atmel.com/dyn/resources/prod ... oc2543.pdf

läs första sidorna.................................. gå sedan till sidan 217

du kan t.ex titta på LSL, LSR, ROL och ROR

I övrigt följ B1n4ry's tips och börja enkelt.
C# hör inte riktigt ihop med AVR utan där gäller nästan bara GCC. Försök inte att lära dig båda språk samtidigt, utan börja nerifrån och klättra uppåt en bit innan du ett språk till.
Användarvisningsbild
jesse
Inlägg: 9241
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: kod för rinnande ljus, assembler?

Inlägg av jesse »

Vad är det du inte kan göra? Eller vill du ha ett färdigskrivet program direkt?

Kom gärna med vad du hittils försökt med.
Rita gärna flödesdiagram / pseudokod . Det underlättar en hel del för dig själv och för oss.

Fördröjning görs enklast med långa loopar.

exempel:

Kod: Markera allt

START:
     initiera port D som utgång
SÄTTr20:
     sätt r20 = 0b00000001 ; en etta för lysdiod noll

LOOP:
      skicka ut r20 till port D
      shifta r20 ett steg åt vänster

      fördröjningsloop X ms
      om r20 = 0 gå till SÄTTr20
gå tillbaks till LOOP
JohanF
Inlägg: 92
Blev medlem: 13 mars 2008, 11:21:20
Ort: jobbet

Re: kod för rinnande ljus, assembler?

Inlägg av JohanF »

Ett alternativ till långa loopar är att ha en evighetsloop som inte gör någonting och en lång timer som genererar avbrott med långa intervall och exekvera sin kod i avbrottsrutinen.

Slå upp instruktionerna ROL och ROR i databladet för din krets. Tror att de kan göra det du vill.
Användarvisningsbild
jesse
Inlägg: 9241
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: kod för rinnande ljus, assembler?

Inlägg av jesse »

Om man ska generera avbrott med en timer och inte göra något alls under tiden så rekommenderar jag att man studerar funktionen SLEEP. Då stänger processorn av sig själv tills timern (eller en signal på en pinne) säger till den att vakna.
fjodorr
Inlägg: 163
Blev medlem: 26 april 2005, 10:41:57
Ort: Stockholm

Re: kod för rinnande ljus, assembler?

Inlägg av fjodorr »

Känns inte riktigt som du varit ärlig nu. Om det är skolarbete är det väl bättre att säga så. Har svårt att tro att du kommit fram till samma uppgift själv och av en händelse använder samma programmerare som i kursen:

http://www.moodle.tfe.umu.se/mod/assign ... hp?id=7798

Kan hjälpa dig med vissa delar, men ditt skolarbete får du allt göra själv. Har du överhuvudtaget försökt?

//fjodorr
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: kod för rinnande ljus, assembler?

Inlägg av vfr »

Öhh. Han skriver obs! vill säg att det inte är ngn labb eller skolarbete. Eller är det jag som missat någon annan uppgift?
Användarvisningsbild
prototypen
Inlägg: 11108
Blev medlem: 6 augusti 2006, 13:25:04
Ort: umeå

Re: kod för rinnande ljus, assembler?

Inlägg av prototypen »

MEN det står


Del A: Efter det att lysd..........

Del B: Efter det att ly.....

Just texten "Del A.... verkar mera uppspaltning av en uppgift från en lärare, skulle jag ställa frågan så skulle jag inte uttrycka mig så pedagogiskt.

Protte
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: kod för rinnande ljus, assembler?

Inlägg av vfr »

Jo, det är ju iofs sant. Det kan jag hålla med om.
Användarvisningsbild
jesse
Inlägg: 9241
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: kod för rinnande ljus, assembler?

Inlägg av jesse »

Jo, det är tydligt att uppgiften är kopierad från "DATORTEKNIK LABORATION 130: Rinnande ljus", med det betyder ju inte att han går kursen. Vissa personer läser kurser på egen hand.

Vad har du för studiematerial? För du måste väl ha något att utgå ifrån? Bok? Annat?
Det är ju överhuvudtaget fel sätt att börja fråga om en uppgift på ett forum utan att ha läst grunderna, och försökt. Och ställ sedan frågor om du kör fast. Går man en kurs och försöker lösa sina uppgifter på det här sättet så är man illa ute. Det är bara genom att läsa grunderna du kan lära dig något.
Skriv svar