Sida 2 av 3

Postat: 7 april 2008, 00:44:37
av Korken
Det är "inställningar" som gör att du inte kan läsa/ändra programmet som är inlagt i µCn.
Man måste radera allt på den för att kunna göra något på den igen och det finns för att folk inte ska kunna sno någon annans kod, mer eller midre.
Alltså, har du tex en boot loader så kan du inte fixa µCn med den, du måste ha en "kraftigare" programmerare för att fixa det.

//Emil

Edit: La till lite

Postat: 7 april 2008, 13:10:50
av Marta
Nu är här nog lite sammanblandningar på gång...

Det finns "code protection" som används för att skydda programmet. På en PIC hindrar dessa inte att man totalraderar med en vanlig enkel flashare som t.ex. WISP.

Det finns även bitar som kan göra det svårt att flasha om. På en PIC can man konfigurera MCLR/Vpp som ingång och då krävs det att man applicerar Vpp före Vdd så att processorn känner av att den skall flashas om innan den ställer denna pinne som vanlig ingång.

På AVR däremot finns det bitar söm gör att man måste ha en parallellflashare för att kunna flasha om. Antingen en riktig, eller en klabbkoppling för att kunna ge ett raderingskommando.

Problemet är mycket mindre på PIC, eftersom bl.a. WISP648 har inbyggt stöd för det som krävs. Det går även med lite trick att göra det på annat sätt. Man lägger helt enkelt på Vpp i förväg från en extern strömkälla så brukar det kunna fungera, Det handlar då om 1 pinne som det skall trixas med. AVR's parallellprogrammering kräver att man trixar med många pinnar.

Postat: 7 april 2008, 14:02:04
av sodjan
Och anledningen till att det skiljer sig mellan AVR och PIC på just denna punkt,
är att AVR'en måste ha en oscillator igång under ICSP. PIC'arna är självklockade
via ICSP pinnarna och oscillatorn är stoppad under programmeringen.

Om man då t.ex har en AVR som man normalt kör med intern osciallator
(d.v.s att det saknas extern kristall) och man råkar av misstag ställa om den
till "extern-oscillator", så har man skägget i brevlådan. Kan man då inte
koppla in någon extern kristall, så får man gå via parr-programmering.

En PIC kan aldrig hamna i det läget som sagt, eftersom ingen oscillator
alls (varken intern eller med extern kristall) används under själva programmeringen.

Detta gör totalt sätt en PIC lite mer "fool-proof".

Med reservation för att jag har missupfattat "AVR-problemet" något...

Postat: 7 april 2008, 15:10:53
av Mindmapper
Köper du en STK500 så har du en parallellprogramerare och behöver aldrig stå med skägget i brevlådan. Låsbitarna är ett antal som man lär sig ganska fort när man studerar AVR studio. Dessa samt övriga "fuses" finns på en flik i AVR studio. Alla MCU'er har val som måste göras så detta är inte något unikt för AVR. De är beskrivna i manualerna för varje mcu dessutom. Atmel har en hel del annan bra information på sin AVR sida.

Det finns en hel del trådar här också där mycket är sagt om AVR/PIC.

Postat: 7 april 2008, 21:52:35
av Swech
Problemet med AVR´s FUSE bitar är klart överdrivet...
javisst det kan hända, men det händer sällan.
AVR studio varnar om man försöker sätta bitarna så att detta kan inträffa.

Har kört AVR nu i många år och vi förbrukar > 10.000 / år
Det har ALDRIG hänt i vår produktion att någon fusebit har
blivit felaktig. Det är ju naturligtvis annorlunda om man
precis startar med en ny processorfamilj eller byter typ.
det kan gå snett... men det är iallafall inget problem såpass
stort att man bör avstå från AVR.

men.. debatten tenderar lätt att bli överhettad....
Man minns tillbaks till sin gamla Spectrum 48 VS Commodore 64
och därefter var det Atari - Amiga... o.s.v....

Swech

Postat: 7 april 2008, 21:58:15
av sodjan
> Det har ALDRIG hänt i vår produktion att någon fusebit har blivit felaktig.

Nej, det är ju ganska självklart, jag utgår från att eran produktion kör
med avlusade och kontrollerade HEX filer. :-) :-)

Och jag tror inte heller att detta är någon anledning att avstå från AVR.

Jag försökte bara ge den tekniska bakgrunden till vad som *kan* hända
om man strular runt med AVR fuses. Och lösningen är naturligtvis att
vara speciellt noggran med just fusarna för oscillator val... :-)

Eller var det så att jag hade fel (d.v.s rent tekniskt) ?
I så fall ber jag om ursäkt så klart!

Postat: 7 april 2008, 22:34:00
av EBD
AVR går utmärkt att programmera via ICSP utan oscillator. Däremot finns det åtminstone en fusebit som man ska vara försiktig med på vissa modeller med färre ben, och det är den som avaktiverar RESET-pinnen och gör den till en vanlig I/O, då måste man använda en annan metod för att programmera om den.

Postat: 7 april 2008, 23:11:42
av Mindmapper
Ja visst går det utmärkt att programmera med inbyggda oscillatorn. Problemet sitter i att låsa upp när man programmerat fel och låst. Tycker sodjans beskrivning ser bra ut, men jag är inte helt säker. Jag har inte trängt så djupt in i problematiken eftersom jag har tillgång till STK500 men mest använder AVRISP mk2.

Postat: 7 april 2008, 23:53:19
av sodjan
Se "Final things To Remember" nästan längst ner på denna sida:
http://electrons.psychogenic.com/module ... OGuide.php
Där räknas upp minst tre sätt att blokera ISP (In System Programming) samt
att det finns ytterligare fuses om inte går att ändra alls via ISP.

Jag kan dock ha missat på just oscillator fuses, men jag är inte säker...

> Ja visst går det utmärkt att programmera med inbyggda oscillatorn.

Är det inte ett krav att just den interna oscillatorn också var vald via fuses vid
föregående programmering? Som jag förstår det så blir det problem om
man råkar ändra till extern oscillator/kristall. Men jag kan ha missförstått
det. Kanske att den switchar automatiskt till intern oscillator...

Postat: 8 april 2008, 18:57:36
av EBD
Det jag menade är att det går bra att programmera med ISP även om oscillator fuses är felaktigt satta. Programmeraren tillhandahåller klockan själv via SCK-pinnen om jag inte har helt fel.

Postat: 8 april 2008, 19:20:39
av Mindmapper
Jag letade lite info idag men hittade inte det jag egentligen ville veta. Men tydligen är det inga problem med de nya AVR-kretsarna där är det bara SPIEN och Reset fusebit som låser för programmering via ISP. Däremot de gamla 90s-kretsarna som inte hade inbyggd oscillator gick det inte få kontakt med kretsen via ISP om klockan var fel satt.

Postat: 8 april 2008, 23:21:32
av SmourF
jag tror jag förstår iaf, hehe, tackar för förklaringen :)

nu e de dags o sova, hade gott killar

MVH SmourF

Postat: 9 april 2008, 14:41:31
av jesse
Enligt min lärare så ska man försöka lära sig AVR, varför har jag inte riktigt förstått...
Om du ska köra AVR och vill lära dig assembler så finns en bra bok på svenska för nybörjare - den förklarar också microcontrollern i detalj.

Per Foyer - Mikroprocessorteknik

EDIT: Boken är kurslitteratur på högskolan.

Postat: 9 april 2008, 21:05:06
av Snouser
Tack för alla svar, snart är jag nog expert på området :p

Någon som vet om jag kan använda sig utav AVR kittet som någon länkade till och programmera den så att den fungerar med denna RFID läsare?

http://www.elfa.se/elfa-bin/dyndok.pl?dok=12305.htm

Tack..

Postat: 9 april 2008, 21:06:24
av Snouser
jesse skrev:
Enligt min lärare så ska man försöka lära sig AVR, varför har jag inte riktigt förstått...
Om du ska köra AVR och vill lära dig assembler så finns en bra bok på svenska för nybörjare - den förklarar också microcontrollern i detalj.

Per Foyer - Mikroprocessorteknik
Trevlig bok, ska se om jag kan få min skola och köpa en ett par sådana böcket.