handdator

Visa fullständig version : programerare


isato
2006-10-08, 16:41
maskor och flaggor vad är det?
vi ska använda det i något interupt.... det är en atmel 162 som programeras

ja det är ett skolarbete men vi har knappt fått någon litteratur att läsa förutom några sketna datablad som inte är så pedagogiska.

jakke
2006-10-08, 16:47
Jag kodade mega16 förra terminen. Databladen till microprocessorerna är ganska bra. Handlar bara om att förstå dom..

Flaggor används för att t.ex. enabla en timer, egenskaper för den, startvärde, värde när den ska startas om.
Maskor har jag ingen anning om, aldrig hört ordet.. Har du ngt sammanhang?

PS. vad ska ni skriva?

isato
2006-10-08, 16:52
ja den hörde ihop maskorna eller maskerna........ och flaggorna

i interupt

jwzrd
2006-10-08, 16:57
MaskAr och flaggor är något du använder när du lagrar flera flaggor i ett och samma heltal. T ex: Bit 1 har en betydelse, 2 en annan osv. Då använder du en AND-mask för att maska av respektive bit för att avgöra om den är satt eller inte. Vi hittar på att en fil har två flaggor, read-only och executable. Vi hämtar ut bitmappen med filens status och får:

(Vi nöjer oss med 8 bitar för enkelhetens skull)
01100010

Bit 0: read only om satt
Bit 1: executable om satt
... (den kanske har andra flaggor också, vi skiter i dem nu)

För att avgöra om bit 1 är satt så kör vi bit-vis AND på den:
01100010 & 00000010 => 00000010 vilket är > 0; alltså är biten satt

För att avgöra om bit 0 är satt så kör vi bit-vis AND på samma vis:
01100010 & 00000001 => 00000000 vilket är 0; alltså är biten inte satt

Flaggan är just specifikationen eller definitionen som säger att: Bit nummer 3 avgör om si eller så gäller.

Masken är just det man AND:ar med för att avgöra flaggans värde.

jakke
2006-10-08, 17:05
MaskAr och flaggor är något du använder när du lagrar flera flaggor i ett och samma heltal. T ex: Bit 1 har en betydelse, 2 en annan osv. Då använder du en AND-mask för att maska av respektive bit för att avgöra om den är satt eller inte. Vi hittar på att en fil har två flaggor, read-only och executable. Vi hämtar ut bitmappen med filens status och får:

(Vi nöjer oss med 8 bitar för enkelhetens skull)
01100010

Bit 0: read only om satt
Bit 1: executable om satt
... (den kanske har andra flaggor också, vi skiter i dem nu)

För att avgöra om bit 1 är satt så kör vi bit-vis AND på den:
01100010 & 00000010 => 00000010 vilket är > 0; alltså är biten satt

För att avgöra om bit 0 är satt så kör vi bit-vis AND på samma vis:
01100010 & 00000001 => 00000000 vilket är 0; alltså är biten inte satt

Flaggan är just specifikationen eller definitionen som säger att: Bit nummer 3 avgör om si eller så gäller.

Masken är just det man AND:ar med för att avgöra flaggans värde.
Jaha.. Nu fattar jag vad han menade.
Det är lite pill innan man kommer igång med alla flaggor som ska ställas..
Ett tips kan vara att använda en wizard för att komma igång (den hjälper dig att confa alla init värden). Självklart kommer du måsta pilla med det själv..

isato
2006-10-08, 17:14
MaskAr och flaggor är något du använder när du lagrar flera flaggor i ett och samma heltal. T ex: Bit 1 har en betydelse, 2 en annan osv. Då använder du en AND-mask för att maska av respektive bit för att avgöra om den är satt eller inte. Vi hittar på att en fil har två flaggor, read-only och executable. Vi hämtar ut bitmappen med filens status och får:

(Vi nöjer oss med 8 bitar för enkelhetens skull)
01100010

Bit 0: read only om satt
Bit 1: executable om satt
... (den kanske har andra flaggor också, vi skiter i dem nu)

För att avgöra om bit 1 är satt så kör vi bit-vis AND på den:
01100010 & 00000010 => 00000010 vilket är > 0; alltså är biten satt

För att avgöra om bit 0 är satt så kör vi bit-vis AND på samma vis:
01100010 & 00000001 => 00000000 vilket är 0; alltså är biten inte satt

Flaggan är just specifikationen eller definitionen som säger att: Bit nummer 3 avgör om si eller så gäller.

Masken är just det man AND:ar med för att avgöra flaggans värde.



måste man deklarera maskar och flaggor?

jwzrd
2006-10-08, 17:16
måste man deklarera maskar och flaggor?

Jag pratar inte om ett specifikt programmeringsspråk nu utan om bit-operationer. Nog har du en lärobok? :)

isato
2006-10-08, 17:19
nej jag har ingen bok. ....jag har min bok om c-programmering men det känns som om det här går mycket djupare och behandlar andra saker.....

det är det kassaste med den här kursen .....att vi inte fått någon bok att falla tillbaka på

jwzrd
2006-10-08, 17:21
nej jag har ingen bok. ....jag har min bok om c-programmering men det känns som om det här går mycket djupare och behandlar andra saker.....

det är det kassaste med den här kursen .....att vi inte fått någon bok att falla tillbaka på

Ok, men både bitmappen och masken är heltal. Antingen char, short, int eller long.

isato
2006-10-08, 17:23
Ok..... du ´har ju läst om det här.... du har ingen bok du kan rekommendera som man inte behöver vara raketforskare för att begripa?

Baan
2006-10-08, 17:26
blir väl lite svårt med bok då du behöver litteratur för just den cpun hmm

isato
2006-10-08, 17:28
tänke mer om man kunde låna något på biblioteket som behandlar flaggo maskar interupt och sånt i största allmänhet

jwzrd
2006-10-08, 17:28
Ok..... du ´har ju läst om det här.... du har ingen bok du kan rekommendera som man inte behöver vara raketforskare för att begripa?

Det är verkligen inget mer än just bit-operatorerna. 1 + 1 är 2; 001 & 000 = 0. Etc.

Baan
2006-10-08, 17:30
litteratur för att programmera diverse uråldriga cpus brukar vara något specifikt för just den kursen, typ att föreläsaren gjrot en ful bok om FLEX-processorn eller liknande som man då får köpa.

jwzrd
2006-10-08, 17:30
tänke mer om man kunde låna något på biblioteket som behandlar flaggo maskar interupt och sånt i största allmänhet

Stanna upp och läs vad vi skriver i tråden. Du springer runt runt och frågar om alla ord du ser nu utan att tänka. Det här är inte raketvetenskap utan mycket enkelt matematik. En bitmap är samling bittar (eller flaggor), en mask använder man för att "maska av" - alltså läsa av en av flaggorna.

isato
2006-10-08, 17:30
nähä..... *popcorn*

jakke
2006-10-08, 18:30
Vi använde denna bok:
Barnett, Cox & O’Cull: Embedded C Programming and the Atmel AVR, Thomson 2003.

Den går igenom grunderna. men ALLT står i databladet!

Liten Men Fet
2006-10-08, 19:52
Köp eller låna en bok i micro-programmering så får du nog svar på dina frågor.

The_RobRoy
2006-10-08, 20:32
Denhär boken har vi

http://www.adlibris.com/se/product.aspx?isbn=914446651X

Ahh känner igen den underbara paniken av att inte fatta någonting, sen sätter man sig ner med det, kliar sig i huvudet några timmar och svär över varför ingen kan förklara lite enkelt för en, sen så lossnar det :)

isato
2006-10-08, 20:36
Stanna upp och läs vad vi skriver i tråden. Du springer runt runt och frågar om alla ord du ser nu utan att tänka. Det här är inte raketvetenskap utan mycket enkelt matematik. En bitmap är samling bittar (eller flaggor), en mask använder man för att "maska av" - alltså läsa av en av flaggorna.


men jag har lite smått panik när jag inte förstår. än om du förklarar en sak för mig så känns det som om jag skulle vilja läsa på kapitlet innan för att förstå grunderna bättre ....... typ från första början hur allt är uppbyggt och så

isato
2006-10-08, 20:37
Denhär boken har vi

http://www.adlibris.com/se/product.aspx?isbn=914446651X

Ahh känner igen den underbara paniken av att inte fatta någonting, sen sätter man sig ner med det, kliar sig i huvudet några timmar och svär över varför ingen kan förklara lite enkelt för en, sen så lossnar det :)


ja förutom att det inte lossnar

Dumleman
2006-10-08, 20:41
Några länkar från wikipedia!
http://sv.wikipedia.org/wiki/Bin%C3%A4ra_tal
http://sv.wikipedia.org/wiki/Boolesk_algebra
http://sv.wikipedia.org/wiki/Bitmask

The_RobRoy
2006-10-08, 21:05
ja förutom att det inte lossnar

Du måste ju sitta tillsammans med några klasskompisar.. ..själv är det ju hopplöst (tråkigt)

Papi
2006-10-09, 08:42
Den metoden är bra om man t ex vill hålla koll på användarrättigheter i ett program. Man sparar administratörens alla rättigheter i ett heltal bara.
Varje "rättighet" ges värdet 1 eller 2, 4, 8, 16 osv. Då slipper man ha ett fält/variabel per rättighet, och kan klumpa ihop dem.

jwzrd
2006-10-09, 09:55
men jag har lite smått panik när jag inte förstår. än om du förklarar en sak för mig så känns det som om jag skulle vilja läsa på kapitlet innan för att förstå grunderna bättre ....... typ från första början hur allt är uppbyggt och så

Ett grundläggande problem är, tror jag, att du och jag angriper kunskap olika. Jag söker sambad för att försöka lista ut funktionen, du verkar mer försöka plugga in begrepp och ord utan att bry dig om vad de betyder. Iallfall till en början och... tyvärr är det - för din del då - så att det helt enkelt inte fungerar med den approach:en till programmering. Det går liksom inte att plugga in precis alla produkter av alla multiplikationer - det är enklare att satsa på att förstå metoden ;)

Problemlösningsaspekten hos programmering är identisk med den hos matematik. Först måste man ta reda på vad som söks och sen gå baklänges därifrån genom att stegvis uppfylla alla ingående krav. Vartefter man inser att något inte finns i ingående fakta så börjar man en ny analys av ingående krav, gå baklänges osv fram till dess att man nått hela vägen fram till allt indata man fått. Det man har när man nått dit är en lista av saker som behöver programmeras/beräknas samt i vilken ordning eftersom en sak kräver resultatet av en annan, etc. Det lönar sig att angripa problemet så här och det går inte att misslyckas!

I den här tråden blir det t ex tydligt att ditt problem faktiskt _inte_ är förståelsen för maskor/maskning, bitmappar, flaggor och interrupts utan snarare vad det är du ska göra med dem. Det blir tydligt när förklaringarna för respektive begrepp helt enkelt inte fastnar. Det beror inte på att du skulle vara dum eller så utan för att krokarna saknas. Först måste du ta reda på varför du behöver just den kunskapen (krokarna).

Det blir svårt att lära ut saker med text när det gäller saker som i sig själva är triviala men som är ganska långt ifrån vad man normalt resonerar kring. Det behövs interaktivitet så att någon kan åskådliggöra saker, deras relationer, vad som ger vad osv. För det här ämnet är verkligen busenkelt, det är på addition- och subtraktionsnivå jämfört med matte. Det bara verkar klurigt. Det är en illusion.

The_RobRoy
2006-10-09, 10:39
Wow bra skrivet jwzrd :thumbup:

Noodles
2006-10-09, 12:08
Jwzrd: Intressant resonemang kring programmering. En fråga bara: Är du helt självlärd eller har du någon form av utbildning i programmering? Skulle vara intressant om du ser någon skillnad i problemlösning mellan dig och t ex en som har läst 200 poäng i algoritmer. :)

Själv tycker jag mest att mina programmeringskurser har gett mig grundläggande syntax begrepp. Även om vi lärde oss vissa specifika algoritmer för vanliga problem så tycker jag mest att erfarenhet och praktiserande har utvecklat min problemlösning.

jwzrd
2006-10-09, 12:19
Jwzrd: Intressant resonemang kring programmering. En fråga bara: Är du helt självlärd eller har du någon form av utbildning i programmering? Skulle vara intressant om du ser någon skillnad i problemlösning mellan dig och t ex en som har läst 200 poäng i algoritmer. :)

Själv tycker jag mest att mina programmeringskurser har gett mig grundläggande syntax begrepp. Även om vi lärde oss vissa specifika algoritmer för vanliga problem så tycker jag mest att erfarenhet och praktiserande har utvecklat min problemlösning.

Jag har hjälpt isato med C-programmering i PM, det är enbart därför jag har något att säga om hur han tacklar problem. Det och att jag själv helt enkelt är rätt dålig på att råplugga in rena fakta, mitt sätt att lära sig fungerar inte så helt enkelt. Mitt sätt råkar lämpa sig för programmering och matematik men inte för att lära mig t ex långa faktaspäckade texter där faktaenheternas inbördes relationer är svaga eller obefintliga.

Hur någon tacklar programmering har inget med kurser personen läst att göra utan har med vad personen tycker är spännande att göra. Man blir bra på det man gör.

Jag är helt självlärd i så måtto att jag lärt mig innehållet i de två kurser jag gått, innan kursen. Jag läste C/C++-programmering i 2:an i gymnasiet och assembler i 3:an. Att programmera lärde jag mig samtidigt med första gången jag använde datorer i ettan i gymnasiet (och i viss mån i slutet av 9:an). Jag fipplade med QBasic, lånade Pascal- och C-böcker och löste uppgifterna och testade sakerna i böckerna i Qbasic. Sen skrev jag C-kod i edit.com hemma och kompilerade i skolan eftersom mitt härke till 8086:a inte hade någon C-kompilator. Assemblern lärde jag mig av papper som en kompis skrev ut från Internet som hette Alberts Assemblerschool :) Efter det blev det Java i slutet av 3:an vilket var en ren barnlek att gå över till från C++.

jim
2006-10-09, 12:24
100101011000011100111 11010001100001111010011000011110010 110101111011111100100

xD

Trance
2006-10-09, 12:25
Jwzrd har ju rätt, intresse är väl den absolut viktigaste saken för att kunna bli en bra programmerare. Det finns så otaliga många verktyg och sätt att lösa problem så utan nyfikenhet så går det ofta inte så bra i längden. Titta vad du har för verktyg, undersök vad du vill göra och varför och prova på och lek.

Noodles
2006-10-09, 12:30
Jwzrd har ju rätt, intresse är väl den absolut viktigaste saken för att kunna bli en bra programmerare. Det finns så otaliga många verktyg och sätt att lösa problem så utan nyfikenhet så går det ofta inte så bra i längden. Titta vad du har för verktyg, undersök vad du vill göra och varför och prova på och lek.

Det håller jag definitivt med om. De problem jag kunde lösa i skolan mha programmering löste jag tack vare det jag lärt mig på fritiden. Den metod som lärt mig mest är att koda, kompilera, försöka hitta vad som är fel och sedan börja om. Det är en långsam process som gör mig lite bättre för varje gång. :D

Snake
2006-10-09, 12:57
Det håller jag definitivt med om. De problem jag kunde lösa i skolan mha programmering löste jag tack vare det jag lärt mig på fritiden. Den metod som lärt mig mest är att koda, kompilera, försöka hitta vad som är fel och sedan börja om. Det är en långsam process som gör mig lite bättre för varje gång. :D

Trial and error is teh shit. Så lärde jag mig Java också. Att sitta och läsa kursböcker ger inte mycket.

Papi
2006-10-09, 12:57
Jag har pluggat lite programmering och matte på universitetet, men gick aldrig klart linjen. Teori är bra till en viss gräns, men jag anser att programmering är mycket en mognadsfråga. Det tar lång tid att bli en bra programmerare, även om man har en grym talang för det. Man behöver helt enkelt ha råkat ut för ett antal olika problem för att lära sig hur man känner igen en liknande situation och sedan hantera den bäst.
Sedan så tror jag att det krävs en viss sorts "tänk", analytiskt och logiskt, samtidigt som man bör vara kreativ och ha fantasi. Att kunna/våga tänka "utanför lådan" och testa knäppa lösningar.

Neal Stephenson uttryckte det bäst:
"Nothing is more disagreeable to the hacker than duplication of effort." :bow:

Baan
2006-10-09, 17:29
Jwzrd har ju rätt, intresse är väl den absolut viktigaste saken för att kunna bli en bra programmerare. Det finns så otaliga många verktyg och sätt att lösa problem så utan nyfikenhet så går det ofta inte så bra i längden. Titta vad du har för verktyg, undersök vad du vill göra och varför och prova på och lek.

Jag kan absolut hålla med, även om du läst en del programmering, som jag nu gjort, så betyder det inte att du är en grym programmerare om du inte håller kunskapen vid liv, vilket jag inte gör :D Det stämmer iofs generellt på så mycket annat, allt måste underhållas.

Baan
2006-10-09, 17:31
Trial and error is teh shit. Så lärde jag mig Java också. Att sitta och läsa kursböcker ger inte mycket.

Kan ge mer än man tror, speciellt t ex om man proggar java och inte kan använda sig av APIn (äääääjpajajj som en bekant kallar det), om man nu inte älskar att sitta i flera timmar med någon skitgrej som man kunde ha fattat fort om man läst lite om den grejen i en viss bok. Sen att praktik + teori går hand i hand, visst, går inte bli en bra programmerare av att läsa en bok. Skadar ju inte.