Programera avr Newbiekurs

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Programera avr Newbiekurs

Inlägg av mullemeck »

Hej.

Har precis införskaffat mej boken "Programming and customizxing the avr microcontroller" i ett hopp om att lära mej lite programering.

Till min besvikelse handlade den endast om Assembler vilket jag har hört ska va jävligt klurigt.

Går det att lära sej programera assembler så man bler så bra att man skulle kunna bygga en robot om nån månad?

Skulle det vara enklare med C och finns det nån bra guide på nätet som man kan läsa?

/Mvh
Mullemeck
netbear
Inlägg: 116
Blev medlem: 27 maj 2003, 21:52:29
Ort: Karlskrona
Kontakt:

Inlägg av netbear »

Jag tror att du skulle kunna lära dig tillräckligt med assembler för att kunna programera en enklare robot om en månad ja. Har viserligen aldirg programerat avr utan bara pic men det är inte specielt svår när man väl har förstått principerna.

/Björn
Evf
Inlägg: 17
Blev medlem: 11 juni 2003, 14:29:20
Kontakt:

Inlägg av Evf »

Jag lärde mig den assembler som avr använder bara genom att läsa databladet till den, då med förkunskaper om 68000-assembler. Så om man lär sig assembler till en mikrokontroller är det lätt att läsa in sig på en annan. Jag tycker AVR assemblern var mycket trevlig. Sedan finns det ju C-kompilatorer till AVR :D
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

jo jag har tänkt på C, men jag lyckas inte läsa nånstans om hur man programerar en avr med C
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Gratis c-kompilator som heter winavr kan du ladda hem här:

http://www.avrfreaks.net/AVRGCC/index.php#winavr

Den boken du har kan du nog utnyttja genom att läsa på lite hur avr:en är uppbyggd och lite grundläggande sådant. För att sedan lära dig programmera den i C tror jag att det är väldigt bra att ladda hem exempel som andra har gjort och lära av dem!
Evf
Inlägg: 17
Blev medlem: 11 juni 2003, 14:29:20
Kontakt:

Inlägg av Evf »

Trots att du kan skriva i C krävs endå förstelse för vilka dataregister, inbyggda räknare osv som finns på chipet.

Typ ett exempel, lägga ut lite data på en port

ASM
===


ldi r17, 0xFF ;Lägger värdet 255 i register 17
out PORTB, r17 ;Matar ut värdet i register 17 på PORTB
clr r17 ;Tömmer det temporära registret, inte såå nödvändigt

C
===

PORTB = 0xFF ;Tilldelar PORTB värdet FF

Ska man sedan t ex göra while-satser, tester och liknande är C ändå lättare. Jämför:

Programmet är "OM det som ligger på PortB är 1111 1111, lägg 0000 0001 på PortC annars gör inget"

ASM
===

in r16, PINB ;Läser in det som ligger på PORTB till register 16
cpi r16,0xFF ;Jämför register 16 med FF, slänger upp massa flaggor i ett statusregister
brne SLUT ; BRanch on Not Equal, mao Hoppa om inte lika. Hoppar till labeln SLUT (inte engelska =)

ldi r17, 0x01 ;Lägger 0000 0001 i register 17
out r17, PORTC ;Ut med det på PORTC

SLUT:
jmp SLUT ;Evighetsloop

C
===

if (PORTB==0xFF)
{
PORTC=0x01
}


Nu ska jag tillägga att jag har aldrig använt någon av de C kompilatorer som finns till AVR och kan kanske ha skrivit nått fel ovan, har säkert skrivit nått felaktigt i assemblerkoden. Det man ska tänka på att C kompilatorn gör ju i princip bara om koden till assembler och ibland ganska dåligt så vill man ha 100% koll på vad processorn gör och vill ha snabbaste möjliga program skriver man assembler.
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Assambler är väl det enklaste man kan lära sig, desutom ger det förstålese hur en processor fungerar och nog tror jag du kan lära dig tillräckligt på en månad för att programmera en robot. Därimot C/C++ lär man sig inte lika lätt på en månad, iaf inte om man inte har några förkunskaper i det, eller någon annan programmering.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Den enda programeringserfarenheten jag har är lite Visualbasic men det kan nästan alla och så kan jag endel Flash Actionscript jag tror det liknar lite C men e inte helt säker..
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1646
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Om du vill programmera AVR:n i ett lite mer hög nivå språk än Assembler så rekommenderar jag Bascom. Bascom är ett bra utvecklingsverktyg för AVR, man programmerar i Basic. Det finns flera exempelprogram så man kommer snabbt in i det. När man känner sig redo för assembler språk så stödjer även Bascom det.

Det är svårt att gå direkt från ett högnivåspråk (C++, Visual basic) till Assemblerspråk. Men Basic är i alla fall ett steg på vägen. Och som någon sa så lär man sig lite om register mm även när man programmerar med ett högnivåspråk.

Bacom: http://www.mcselec.com/download_avr.htm
henkebenke
Inlägg: 515
Blev medlem: 31 maj 2003, 10:42:37
Ort: Helsingborg

Inlägg av henkebenke »

Min personliga uppfattning när det gäller Microcontrollers är att man ska börja med assembler. För det första ger det en naturlig förståelse för MCUn och för det andra så är det enklare att komma igång med. Det finns färdiga verktyg från tillverkaren som är enkla att få att funka. Dessutom brukar de första projekten vara lite mer av test-karaktär och inte vara så stora. Det enda som talar för högnivåspråk är när det blir jobbigt att programmera i assembler och det kan det bli rätt fort. När man känner att man kommer dit är det enda jag kan rekommendera än så länge C. BASIC är ett bakvänt språk och C++ och Java har endast stöd på en akademisk nivå.

Står redan en gång innan i denna tråd men kolla www.avrfreaks.net där finns all info, kompilatorer och kunnigt folk.
Skriv svar