Sida 1 av 1
Pic vs. AVR
Postat: 7 juni 2003, 21:10:31
av mullemeck
Hej!
Undrar vad som skiljer en Pic från en AVR
vilken är bäst?,Lättast att programera?
Re: Pic vs. AVR
Postat: 7 juni 2003, 23:11:06
av strombom
Om du ska använda en C kompilator är de ungefär lika att programmera =) Fördelen är nog till AVR här eftersom det finns en gratis C-kompilator, winavr (GCC).
Att bygga programmerare till dem är i stort sett också lika lätt, båda klarar in-circuit-serial-programming.
Om du ska programmera i assembler tror jag nästan att PIC är lättare om du är nybörjare. PIC är lite speciell och har endast ca 30 kommandon, vilka är mycket lätta att lära sig =)
Har du programmerat assembler för någon annan processor tidigare är kanske AVR lättare för dig eftersom den liknar många andra processorer.
Det är vad jag tycker i varje fall! Jag använder avr och pic ungefär lika mycket, oftast pic till små enkla projekt och avr till lite större... vet inte varför men det har blivit så =)
Postat: 8 juni 2003, 02:10:08
av EagleSpirit
jag tycker att AVR är lite mer avancerad, alltså man använder AVR till lite större projekt.
AVR har fler funktioner än PIC i dom flesta modellerna och i AVR har ju alla flash eprom. PIC har det bara i vissa.
AVR är dubbelt så snabb som PIC tror jag. PIC är utför en instruktion på 1/4 av kristallen medan AVR har 1/2 av kristallen. Men jag är inte säker.
PIC är billigare i dom lite mindre modellerna men i de större är AVR billigare. Kanske är det jag menar med det jag skrev längst upp. Till små projekt använder man PIC pga priset. PIC är nog också lite lättare i assembler.
Postat: 8 juni 2003, 11:30:41
av mullemeck
Okej. tack för råden.
I mitt fall tänkte jag använda den till en robot för att antingen styra 2 elmotorer eller några servon
jag är nog lite inne på att använda en AVR till det.
Postat: 8 juni 2003, 11:41:52
av netbear
Hej har hittills byggt alla mina projekt med pic controllers. Men jag skulle vilja pröva en AVR. Vilja kretsar är bra att börja med samt finns det någon ritning på en enkel programmerare? (om möjligt ska programeraren fungera med något program i linux.)
/Björn
Postat: 8 juni 2003, 13:24:05
av Melker
Här är en enkel ISP-programmerare för AVR:
http://www.qsl.net/zl1bpu/micro/ENV/PGM.htm
En ganska bra krets att starta med är kanske AT90S2313, den kostar ca 50kr och innehåller det mesta som man som nybörjare kan behöva.
Postat: 9 juni 2003, 02:18:34
av Melker
EagleSpirit skrev:
AVR är dubbelt så snabb som PIC tror jag. PIC är utför en instruktion på 1/4 av kristallen medan AVR har 1/2 av kristallen. Men jag är inte säker.
Är lite oklar med vad du menar "1/2 av kristallen"? Ifall "kristallen" innebär en klockcykel, så tror jag du har lite fel. Tror AVRer utför de flesta av sina instruktioner på endast 1 klockcykel, tror detsamma gäller PIC, men jag är också lite osäker, måste jag säga.
Postat: 9 juni 2003, 15:06:30
av strombom
AVR utför de flesta instruktionerna på en klockcykel, vissa tar dock 2 och några få tar 3 klockcykler
PIC utför samtliga instruktioner på fyra klockcykler och alla instruktioner som involverar programhopp tar åtta (och ja, det står fel i elfa)
PIC går oftast att klocka lite högre, men inte så att de blir snabbare än AVR.
Postat: 9 juni 2003, 17:45:16
av EagleSpirit
ok, jag har hört en klockcykel men tyckte det verkade för bra för att vara sant så jag antog att det var två

Postat: 1 juli 2003, 18:59:18
av GLT_Kent
strombom skrev:AVR utför de flesta instruktionerna på en klockcykel, vissa tar dock 2 och några få tar 3 klockcykler
PIC utför samtliga instruktioner på fyra klockcykler och alla instruktioner som involverar programhopp tar åtta (och ja, det står fel i elfa)
PIC går oftast att klocka lite högre, men inte så att de blir snabbare än AVR.
Om man med klockcykler räknar den externt matade klockan då. Den delas ju ner med fyra internt, så inne i processorn utförs ju instruktionen på en eller två (interna)klockcykler... Det är det dom menar i ELFA. Med klockcykel brukar dom tydligen oftast mena den klockan som processorn använder, så att säga.
Jag kan inte ett skit om AVR, men jag har hört att AVR tar längre tid på sig att utföra en innstruktion, men däremot blir det färre instruktioner för att utföra samma sak på en AVR eftersom den har en mer omfattande instruktionsuppsättning. Så AVR är snabbare på mer avancerade program, medans PIC:en är snabbare på enklare grejer, "bit-banging" som någon uttryckte det. Det är så jag har fått det förklarat av en AVR fantast på admittansen en mörk kväll förrförra hösten. kanske har hänt en del sen dess.
Postat: 1 juli 2003, 21:30:38
av * Ken *
Här:
http://www.olimex.com/dev/ finns två enkla programmerare för AVR. En för serieporten och en för parallell (nästan identisk som den lite längre upp i tråden). De har även tips om passande program.
Postat: 3 september 2003, 23:50:48
av erixon
GLT_Kent skrev:strombom skrev:AVR utför de flesta instruktionerna på en klockcykel, vissa tar dock 2 och några få tar 3 klockcykler
PIC utför samtliga instruktioner på fyra klockcykler och alla instruktioner som involverar programhopp tar åtta (och ja, det står fel i elfa)
PIC går oftast att klocka lite högre, men inte så att de blir snabbare än AVR.
Om man med klockcykler räknar den externt matade klockan då. Den delas ju ner med fyra internt, så inne i processorn utförs ju instruktionen på en eller två (interna)klockcykler... Det är det dom menar i ELFA. Med klockcykel brukar dom tydligen oftast mena den klockan som processorn använder, så att säga.
Jag kan inte ett skit om AVR, men jag har hört att AVR tar längre tid på sig att utföra en innstruktion, men däremot blir det färre instruktioner för att utföra samma sak på en AVR eftersom den har en mer omfattande instruktionsuppsättning. Så AVR är snabbare på mer avancerade program, medans PIC:en är snabbare på enklare grejer, "bit-banging" som någon uttryckte det. Det är så jag har fått det förklarat av en AVR fantast på admittansen en mörk kväll förrförra hösten. kanske har hänt en del sen dess.
Att en avr skulle ta längre tid att utföra en instruktion... kan jag inte hålla med om...
De flesta matmatiska och arimetrisk tar 1 Klockcykel (typ alla utom mul mm som tar 2) och bit instruktioner som out, in mm
läsning från Ram tar 2 cykel
Läsning från program mine samt ljmp (om man har mer än 128kB) tar 3 cycklar typ
med då är klock cykel lika med clock frekvensen som på pic 1/4 externa klockan...
så om man kollar på elfa så hittar man PIC som är 33Mhz vilket skulle i ideal fallet ge 33/4 = 8.25Mips
och AVR finns i 16Mhz på elfa deta skulle då ge 16/1 = 16Mips i ideal fallet
Nu vet jag att man inte kan gemföra rakt av Mips men det ger en finnger visning.
Avr anväder en stack pekare som gör att hela ram minet kan användas som stack om det skulle behövas (dock ej på modeler utan ram), PIC har fast stack normalt 8 eller 16nivåer, AVR använder pekare för att komma åt ram minet (uptill 64KB med vanliga pekare), pic banker och peakare (256byte sedan måste man byta bank om jag inte mins fel)...
AVR är helt anpassat till C och kompilator fanns till med före microkontrolern...
Pic gjordes med minsta möljiga resuser (kiselmäsigt) vilket resultera i en gammal konstrution (har funnis väldigt länge) dock inte dåligt men inte anpassat för högnivå språk heller ...
Pic finns i extremt strömsnålt versoner som dra några nW i aktivt läge vilket gör den till oöver vinliga i appliktioner där ström förbrukningen är en viktig faktor...
Så att välja enchips dator beror på vad som efter frågas...
Postat: 5 september 2003, 19:02:11
av evert
Det finns fakiskt PIC:ar med bara 2 stacknivåer: t ex 16C505.
Det kan vara en riktig utmaning att programera då det blirsvårt att få till det med subrutiner å så. Det fick bli lite crazy progamstruktur för att få till det.