Sida 1 av 3

Nybörjare - PIC/AVR - Lite frågor..

Postat: 5 maj 2006, 23:37:44
av maxxflow
Jag går rakt på sak..

Jag har läst mycket om att AVR är jättelätt att programmera, bara ett par motstånd och sladdar till paralellporten. Går samma sak att göra med PIC?

Jag har läst att man kan kompilera C-kod till AVR med GCC. Det går inte till PIC eller? Finns det någon fri/gratis C-kompilator till PIC? Helst en för Linux..

Var köper man AVR billigast? Såg att Kjell&Co hade billiga PIC, 19:- för den minsta (DIL8)
Jag gissar att Elfa har, men de brukar ju vara rätt dyra...

Om jag skulle välja PIC, är Kjell's 19kr-variant bra?
Har den inbyggd oscillator, eller måste man ha en kristall till den? Jag såg nånstans att nån använde en keramisk kondensator istället för kristall, funkar det?

Om jag väljer AVR, vilken modell är lämplig då? Den ska vara så liten som möjligt (hålmonterad dock), det är väl DIL8-modellerna som är de minsta isf? Det är bra om den har inbyggd oscillator också, så slipper man ha en kristall..


När jag fått lite kläm på mikroprocessorprogrammering så tänkte jag bygga en slags slump-matris-baserad inloggningsdosa, ungefär som SEB's internetbank-inloggningsdosor.. :)
För er som inte vet hur det funkar; "dosan" innehåller en jättestor matris/tabell fylld med slumpmässiga tal. När man ska logga in så får man en kod på sin datorskärm, som man knappar in i dosan.
Koden är X- och Y-koordinater i matrisen, så dosan plockar fram siffrorna från rätt "ruta" och visar den på dosans lilla LCD-display, så att användaren kan knappa in koden i datorn, och koden verifieras sedan mot webserverns kopia av matrisen.

Postat: 6 maj 2006, 00:26:31
av $tiff
AVR GCC funkar till alla AVR-familjer.
PIC har någon halvgratis C-kompilator som funkar till några modeller.

Äh, varför inte kolla in wikin istället? Står ju massor om mikrokontrollers för nybörjare! :wink:

Om du ska göra en såndär dosa behöver du massor av programminne/EEPROM. Då måste du antingen komplettera med externt minne eller sikta på de större modellerna direkt.

Postat: 6 maj 2006, 01:40:38
av Marta
Angående dosan, är Du helt säker på att det är så det fungerar, eller är detbara Du själv som gissar? Mina uppgifter säger att det är ett CRAM-protokoll som används.

Ett slumptal visas, användaren knappar in detta i dosan där det "blandas" med en hemlig kod, en kryptografiskt säker checksumma beräknas och visas, användaren läser av och knappar in denna på sin dator.

Med ett sådant system behövs ingen stor matris och variationsmöjligheterna är i princip oändliga. Enda kravet är att processorn har bra code protect och att den har kapacitet att klara en bra algoritm.

Postat: 6 maj 2006, 02:51:13
av Icecap
Programmeringsspråk: MikroC till PIC fungerar alldeles utmärkt, har för mig att den finns i en Linux version men är inte säker.

Dosan: Lyssna på Marta som har rätt....

Postat: 6 maj 2006, 03:23:37
av Greensilver
Börja med den största mikrokontrollern, den har allt och alla funktioner. De mindre kontrollerna har ett begränsat antal instruktioner och en del av dem kräver yttre kristall vilket iofs. inte är något bökigt men ändå. Jag rekommenderar att du börjar med Atmels Mega 32. Vilket som är bäst av PIC och Atmel tvistar di lärde om. :lol:

Postat: 6 maj 2006, 08:18:45
av maxxflow
Var finns dendär wikin som $tiff pratade om?

Och ang. dosan, jag är ganska säker på att det finns matrisbaserade såna. Allt tyder på att SEB's dosa är en sådan.. Man får två 4-siffriga koder som man ska knappa in i dosan vid inloggning, det skulle mycket väl kunna vara en X-koordinat och en Y-koordinat.
Dosan har något som ser ut som IR-anslutning längst upp, vilket skulle kunna vara för att byta ut matrisen..
Men visst, jag kan ha fel.

Är det extremt lite minne i en PIC/AVR eller? För en såndär matris behöver inte ta enormt mycket plats tycker jag.. Problemet är kanske hur man ska lagra den i minnet, finns väl inte direkt några variabel/array-typer för såna tabeller.. :)
Iofs, om man programmerar C så kan man ju göra en radda med arrayer, typ såhär:
(typ PHP-pseudokod, är inte jättebra på C än :P)

Kod: Markera allt

matrix[0] = array(123,435,634,345,567,324,675,234,786,324);
matrix[1] = array(787,342,345,575,682,489,249,258,842,437);
matrix[3]= array(324,238,765,232,564,890,234,674,435,876);
matrix[4] = array(153,434,634,645,867,394,670,204,736,325);
osv...
Så om man t.ex. vill komma åt talet i ruta (X=5,Y=3), så skriver man matrix[3][5]
Vet inte om C klarar multidimensionella arrayer, men annars så kan man ju ha fasta variabelnamn för Y-raderna.. Typ:

Kod: Markera allt

y0 = array(123,435,634,345,567,324,675,234,786,324);
y1 = array(787,342,345,575,682,489,249,258,842,437);
y2= array(324,238,765,232,564,890,234,674,435,876);
y3 = array(153,434,634,645,867,394,670,204,736,325);
osv...
Men nog bråkat om detta nu ;) Mitt första "projekt" blir väl "det gamla vanliga", en lysdiod som blinkar eller nåt :P

Men var köper man AVR billigast, och vilken modell är lämplig för ett "blinka-LED"-projekt? :)

Postat: 6 maj 2006, 08:50:09
av Zyxel615

Postat: 6 maj 2006, 08:58:00
av maxxflow
Tack :)

Tänkte börja med Atmels ATtiny 15, är den bra?

Postat: 6 maj 2006, 09:38:05
av GFEF
>Jag har läst mycket om att AVR är jättelätt att programmera, bara ett par motstånd och sladdar till paralellporten. Går samma sak att göra med PIC?

Till serie port ja men....

http://www.jdm.homepage.dk/newpics.htm

Inte helt problemfritt JDM-programmerare...
PIC leverers instälda för högnivå programmering
Går att programera om till lågnivå

>Jag har läst att man kan kompilera C-kod till AVR med GCC. Det går inte till PIC eller?

http://ubicomp.lancs.ac.uk/~martyn/sdcc_linux/

This document describes how to get SDCC installed and working under Linux, provides an example script for the 16f877 and describes how to compile it.

Postat: 6 maj 2006, 09:54:56
av Icecap
Jag såg just att den PIC du länkar till är en PIC12Cxxx. En sån kan bara programmeras 1 gång! Ska du ha PIC ska du ha en PIC1xFxxx som kan programmeras om _många_ gånger. sodjan har en del att välja på, han har även en WISP628 programmeringsenhet som är ytterst strulfri så "he's the man!" om du vill PIC'a.

Sen tycker jag att du hänger dig på fel sak: hur enkel de är att programmera.
Det är ett rent elektrisk problem som det finns massor av lösningar till, saker som är avsevärd mer viktigt är: hur är programmeringsmiljöt, vilka funktioner finns i kretsen, störtålighet, inbyggd oscillator osv.

Själva överföringen av den färdiga koden till valda mikroprocessor (µC) är det absolut minsta att hänga sig i om man rör sig i PIC/AVR-världen.

Postat: 6 maj 2006, 17:15:05
av maxxflow
Nu har jag köpt en ATtiny 15 på ELFA... Ska se om det går att få nåt liv i den.. :)

Postat: 6 maj 2006, 18:18:51
av $tiff
Bra val med AVR (no offence sodjan)!

Postat: 6 maj 2006, 19:14:20
av maxxflow
Ok, nu har jag skrivit ett litet testprogram och "kompilerat" det till en .hex-fil..
Hur gör jag nu för att föra över det till AVR:en? Behöver jag nån programmerings-dosa, eller funkar det med dendär "3 motstånd och serieport"-metoden? Hur gör man isf?

Postat: 6 maj 2006, 19:18:40
av cykze
Alla Tiny- och Mega-modeller har intern oscillator, vad jag vet.

Tiny15 har inget SRAM-minne, vilket gör den väldigt begränsad. Köp en större istället som du kan ha att för att lära dig på, t ex ATmega88.

edit: Ja, du kan köra med den som man kopplar direkt till parallellporten. Här står det hur du ska koppla:

http://www.bsdhome.com/avrdude/

Postat: 6 maj 2006, 20:46:03
av Miraculix elektronikdruid
Yepp!

Alla Tiny och Mega har intern osc. Vad som kan vara bra för er att
veta är att ATmega 48, 88 och 168 ingår alla i den nya pico-power satsningen som ATMEL gör. Alltså oerhört lite kraft när den ligger i SLEEP.

Dessa MCU:er är dessutom samma krets med olika mycket minne och samma footprint, bra om man vill börja med litet och ha något att växa i!

Mvh Mirre