26. september 2009 - 20:20Der er
20 kommentarer og 1 løsning
Nogen der vil oversætte noget simpelt C kode til dansk? :)
Hej.
Jeg har noget C kode der skulle virke som en LED driver til en ATmega16 på sådan et STK500 kit.
Jeg forstår dog ikke helt hvorfor koden virker som den gør.
Der står forklaret hvad koden gør sådan ca., men jeg vil have at vide HVORFOR den gør det. Jeg vil have at vide hvad de forskellige funktioner og ord betyder.
Det nytter ikke noget at jeg blindt sidder og laver et eller andet program, baseret på noget teori der slet ikke er dybdegående nok. Skal helst også vide hvorfor det virker.
Denne LED driver har jeg løsningen på, men nu skal jeg have lavet en switch driver også, og jeg kan simpelthen ikke se hvordan jeg skulle kunne lave den, udfra de informationer jeg har fået.
Her er link med en mappe til øvelsen, og facit på øvelsen, så man kan se hvordan det skal se ud:
Jeg skal have forklaret hvad der foregår i det der program, og hvorfor.
Der står i en bog at f.eks. "unsigned char" gør det og det. Der står ikke hvorfor. Uden jeg ved det, kan jeg ikke støbe nye programmer sammen, for jeg kan ikke se logikken i det.
Hvor kommer det her f.eks. fra: void initLEDport(unsigned char init_pattern); void writeLEDpattern(unsigned char pattern); void turnOnLED(unsigned char led_nr); void turnOffLED(unsigned char led_nr); void toggleLED(unsigned char led_nr); unsigned char LEDon(unsigned char led_nr); unsigned char LEDstatus();
Er det sådan nogle standardfunktioner der ligger i AVR studio?
Synes godt om
Slettet bruger
27. september 2009 - 01:12#4
Det du beder os om lige nu, er at lære dig C i tre linjer. Hvis du gerne vil kunne forstå koden kan du starte fra bunden. Der er en masse gode C bøger på biblioteket :)
Bøgerne er lort synes jeg :/ Kunne også godt tænke mig at det var dansk, for det er iriterende at skulle lære teknisk engelsk OG programmering - Altså to sprog man ikke kender - på samme tid. Det er sku lidt forvirrende.
Jeg mener ikke at dette er stedet for at finde en forklaring på hvad en "unsigned char" er. Søg på nettet og du vil finde 1000000 forklaringer der er bedre end noget jeg kan finde på. Jeg vil gerne hjælpe dig med specifikke spørgsmål, men jeg har ikke tid til at lære dig helt basal C.
Det er sandsynligt at de funktioner du nævner er standard AVR studio funktioner.
Jeg ved godt hvad unsigned char betyder, men jeg kan ikke se hvad det bliver brugt til i dette sammenhæng, for der står ingen steder noget om hvad f.eks. "void initLEDport" kommer fra.
Det er vel funktioner knyttet til AVR studio, men jeg kan ikke finde info om de funktioner, og hvorfor man lige skal skrive "unsigned char init_pattern" Inde i funktionen eller hvad "PORTC = PORTC | mask;" skal gøre godt for.
Jeg vil gerne forstå hvad de her funktioner gør, og hvorfor de skal være der.
Det er alt sammen helt elementære C programmerings spørgsmål, jeg er ret sikker på at din lærebog forklarer hvordan funktioner virker, hvordan du kalder en funktion og hvordan du laver en funktion. Lærebogen fortæller sandsynligvis også om funktioners parametre.
Jeg har stadig ikke tid til at fortælle dig om helt grundlæggende C programmering, det gør lærebogen, eller en af 1000 bøger der er skrevet om C, meget bedre end mig.
Kunne godt tænke mig noget stuff på dansk, fordi det teknisk engelsk er lidt svært at forstå i forvejen. vil godt have en bog hvor jeg bare skal koncentrere mig om C, og ikke om min engelsk/dansk ordbog.
Haha... Der er vidst en der studere på IHA? Hvorfor i alverden spørg du dog ikke Henning? Den lærebog i får udleveret giver da ganske gode eksempler på hvorledes tingene fungere og hvordan du skal benytte dem.
Sorry for double post, men kunne ikke finde rediger knappen.
Er du elektro eller IKT? Hvis du er elektro, hvilket jeg ville gætte på du er, så har det ikke den store betydning for dig, om du kan C (ikke at sige, at det er yderst nyttigt at kunne), men du kommer til at bruge det minimalt og eksamen er virkelig nem. På 3. semester kommer i til at lære C#.
Forløbet er gået alt for hurtigt, til at folk kunne følge med, så jeg skal lige have det forklaret bedre :) Det kunne så være at der var en der lige ville kigge noget kode igennem. Jeg er ikke den eneste der har det problem, og jeg frygter eksamen :S
Hvis du har været til undervisningen og har prøvet at lave øvelserne, så skulle der ikke være problemer med at bestå.
78% af vores årgang bestod CPAA eksamen med et 12 tal, så du har ikke rigtig det store at frygte. I opgaverne står der hvilke registre du skal skrive i, og det meste er faktisk lavet, du skal blot connecte brudstykkerne.
Disse ting ved jeg i er blevet undervist i. Hvis du ikke har forstået tingene, så skal du stille spørgsmål, og har du ikke gjort det, er det altså din egen skyld.
Men kort forklaret kan du lave dine egne funktioner eller du kan benytte nogle funktioner fra standard biblioteker. Funktioner er yderst nyttige til at genbruge kode.
hvis vi ser på de funktioner i skal anvende i øvelsen, så er de user defined. Altså er det f.eks. Henning der har oprettet dem.
void: er retur typen, void betyder at der ikke bliver sendt noget tilbage fra funktionen, retur typer kan være variabler som int, char, float etc.
writeLEDpattern: er navnet på funktionen.
unsigned char pattern: er en variable af typen unsigned char, som kan indeholde en værdi fra 0 - 255 da den er i unsigned ( ikke negativ) "mode". variablens navn er pattern.
Denne funktion skal bruges til at tænde en LED. Den modtager et pattern som skal være af typen unsigned char.
Hvis du forestiller dig du har sendt et pattern der hedder: 0b10000001 så bevirker dette at LED 7 og 0 skal lyse.
Eftersom at LEDS på STK500 er aktiv lav, så skal dette vendes om, da det ellers ville tænde 6,5,4,3,2,1 da disse har værdien 0.
For at vende værdien til det modsatte kan du bruge tegnet ~
for at skrive til en port, gør du følgende:
PORTC = ~pattern;
Nu vil PORTC være lig med: 0b01111110 hvis vi tager udgangspunkt i forrige eksempel.
Alt det her ved jeg, men mit problem er, at jeg har svært ved at opbygge mit eget program selv. Jeg kan ikke tænke mig til hvad der skal stå for at få min stk til at gøre noget bestemt.
Selvom jeg ved hvad funktioner er, hvad de gør, osv. så har jeg svært ved at se hvad jeg skal skrive stadigvæk.
Hvis der er en kode, og jeg får forklaret hvad den gør, så kan jeg godt forstå det, men jeg skal have flere eksempler for ligesom at kunne se, hvordan jeg skal opbygge et program.
Jamen det er jo et alment problem af forståelse. Det er som, hvis du er sproglig har du ikke nemt ved matematik. Hvis din forståelse ikke kommer naturligt, har du naturligt svært ved programmering. Vi kan ikke alle være lige gode ;)
Kan være jeg bare er lige dårlig over hele linjen, mjehmjeh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.