Vart ska jag börja? (Assembler programmering)
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
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
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.
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.
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...
ä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...
-
- Inlägg: 7122
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
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.
Det finns en hel del trådar här också där mycket är sagt om AVR/PIC.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
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
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
> 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!
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!
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.
-
- Inlägg: 7122
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
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.
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...
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...
-
- Inlägg: 7122
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
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.
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.Enligt min lärare så ska man försöka lära sig AVR, varför har jag inte riktigt förstått...
Per Foyer - Mikroprocessorteknik
EDIT: Boken är kurslitteratur på högskolan.
Senast redigerad av jesse 10 april 2008, 18:12:02, redigerad totalt 1 gång.
Tack för alla svar, snart är jag nog expert på området 
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..

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..
Trevlig bok, ska se om jag kan få min skola och köpa en ett par sådana böcket.jesse skrev: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.Enligt min lärare så ska man försöka lära sig AVR, varför har jag inte riktigt förstått...
Per Foyer - Mikroprocessorteknik