Första program PIC
Första program PIC
Så nu har jag gjort mitt första c program. Men jag skulle behöva någon som kollar igenom det, jag får inga fel när jag kompilerar men jag känner mig ganska osäker på detta.
Programmet är skrivet i mikroC och koden kan laddas ner här, anledningen till att det är 2filer är för att jag har inte riktiga versionen av mikroC
Tack på förhand
Programmet är skrivet i mikroC och koden kan laddas ner här, anledningen till att det är 2filer är för att jag har inte riktiga versionen av mikroC
Tack på förhand
Det enda jag egentligen har synpunkt på är väl formateringen av koden, men annars ser det spontant bra ut. Har inte kollat särskilt noga dock.
Underligt bara att den inte klagar då det inte finns en enda "include", men allt kanske är integrerat i kompilatorn, jag har ingen aning.
Och PWM:en lär nog generera blinkningar snarare än "PWM". 2 sek cykel är väl inte av den vanligare ordningen.
Underligt bara att den inte klagar då det inte finns en enda "include", men allt kanske är integrerat i kompilatorn, jag har ingen aning.
Och PWM:en lär nog generera blinkningar snarare än "PWM". 2 sek cykel är väl inte av den vanligare ordningen.

läsningen av 1-wire sensorerna är kopierat från ett exempel som följer med kompilatorn och där fanns det inte heller någon include så jag antar oxo att det är integrerat. Och cykeln ska vara 2 sek så det är inge problem, är ett relä som ska styras 
Det som jag känner mig osäkrast på är att skicka över signalen till pic nr2. men eftersom du säger att det verkar se bra ut så får jag börja göra kretskortet (första gången jag gör det från scratch
)

Det som jag känner mig osäkrast på är att skicka över signalen till pic nr2. men eftersom du säger att det verkar se bra ut så får jag börja göra kretskortet (första gången jag gör det från scratch

Ett temperaturregleringsprogram i en fil som heter Brännare.rar...
Hur ska kommunikationen mellan dina PIC:ar funka?
Bara RC1, en bit...?

Hur ska kommunikationen mellan dina PIC:ar funka?
Kod: Markera allt
PORTC.F1 = CO; //skriv CO på pin RC1
> PORTC.F1 = CO; //skriv CO på pin RC1
Ganska värdelös kommentar, för övrigt, det står ju samma sak
i själva instruktionen. Skriv kommenterar som *tillför* något istället...
> Det som jag känner mig osäkrast på är att skicka över signalen till pic nr2.
Vad är det som är osäkert ?
Ovh varför är det *två* processorer ??
> så får jag börja göra kretskortet
Är inte det lite väl tidigt... ?
Ganska värdelös kommentar, för övrigt, det står ju samma sak
i själva instruktionen. Skriv kommenterar som *tillför* något istället...
> Det som jag känner mig osäkrast på är att skicka över signalen till pic nr2.
Vad är det som är osäkert ?
Ovh varför är det *två* processorer ??
> så får jag börja göra kretskortet
Är inte det lite väl tidigt... ?
kommentarerna kanske är ganska värdelösa för er, men för hjälper de mig att komma ihåg, faktiskt. och det som är osäkert är att jag känner att jag har inte så stor koll på detta. Har dock sett andra som gjort så som jag gjort så det borde vara ok.
som jag skrev i första posten så har jag inte riktiga versionen av mikroC, jag kan lägga till max en rad kod, kanske två men så tight är det iaf.
digitaliz: "Bara RC1, en bit...?" va menar du? om det är som jag tror så behöver den bara vara en bit då värdet är mellan 0-100
som jag skrev i första posten så har jag inte riktiga versionen av mikroC, jag kan lägga till max en rad kod, kanske två men så tight är det iaf.
digitaliz: "Bara RC1, en bit...?" va menar du? om det är som jag tror så behöver den bara vara en bit då värdet är mellan 0-100
> men för hjälper de mig att komma ihåg,
Konstigt, för kommentaren sa ju bara samma sak som instruktionen.
Jag tror att med en vettig kommentar så hade det varit uppenbart
vad du gör för fel (även om jag tror jag vet redan).
> Har dock sett andra som gjort så som jag gjort så...
Men tala om vad "så" är för något !
Vad är det du *tror* att du gör ?
Som jag sa tidigare. Skriv en vettig kommentar så blir det kanske
klarare var du gör en tankevurpa.
Jag har en ganska klar bild över var du tänker fel, men som sagt,
jag tänker inte gissa.
> om det är som jag tror så behöver den bara vara en bit då värdet är mellan 0-100
*En* bit kan bara ha värder "0" eller "1".
För värden upp till 100 (decimalt) behöver du minst 6 bitar...
Så RC1 kan enbart vara "0" eller "1", ingenting annat.
Konstigt, för kommentaren sa ju bara samma sak som instruktionen.
Jag tror att med en vettig kommentar så hade det varit uppenbart
vad du gör för fel (även om jag tror jag vet redan).
> Har dock sett andra som gjort så som jag gjort så...
Men tala om vad "så" är för något !
Vad är det du *tror* att du gör ?
Som jag sa tidigare. Skriv en vettig kommentar så blir det kanske
klarare var du gör en tankevurpa.
Jag har en ganska klar bild över var du tänker fel, men som sagt,
jag tänker inte gissa.
> om det är som jag tror så behöver den bara vara en bit då värdet är mellan 0-100
*En* bit kan bara ha värder "0" eller "1".
För värden upp till 100 (decimalt) behöver du minst 6 bitar...
Så RC1 kan enbart vara "0" eller "1", ingenting annat.
oj tänkte byte istället för bit men det hjälper mig att komma ihåg vad kommandot gör, som att skriva loopa 5ggr till for(i=0,i<5,i++)
det jag vill göra med kommandot är att sätta pinen till ett värde(%) som jag räknat ut i pic1 och kunna läsa av pinvärdet på pic1 från pic2
förövrigt så respekterar jag att du inte vill sitta och gissa, har full förståelse för det så jag ursäktar och hoppas denna information hjälper.
det jag vill göra med kommandot är att sätta pinen till ett värde(%) som jag räknat ut i pic1 och kunna läsa av pinvärdet på pic1 från pic2
förövrigt så respekterar jag att du inte vill sitta och gissa, har full förståelse för det så jag ursäktar och hoppas denna information hjälper.
- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt:
> det jag vill göra med kommandot är att sätta pinen till ett värde...
Visst, inget problem.
Och pinnen kan sättas till *två* olika värden, "1" eller "0" (hög/låg, high/low), inget annat.
Jag *gissar* att du tror att du kan skicka ut alla bitarna från
en hel byte så som du gör, men då får du nog läsa på lite till...
Visst, inget problem.
Och pinnen kan sättas till *två* olika värden, "1" eller "0" (hög/låg, high/low), inget annat.
Jag *gissar* att du tror att du kan skicka ut alla bitarna från
en hel byte så som du gör, men då får du nog läsa på lite till...

Som Sodjan riktigt påpekar så säger koden exakt vad du gör.
En bättre kommentar är att beskriva vad den biten på porten gör. Tex tänd lampan.
Ett bra sätt är att skriva kommentarerna först och sedan infoga ocheller ersätta med kod (ruskigt exemplariskt). En lärare jag hade sa att "Koden ska vara som att läsa en bok", dvs betydelsefulla och förklarande variabel- och funktions-namn samt en lättläst strutur. Och kom ihåg att den ska inte bara vara lättläst den närmaste månaden. Oftast kommer detta efter hand men man måste ändå alltid tänka på det.
Sen finns det ett gammalt arv (var det Kobol eller Fortran tro) där räknarna fick ha namnen i,j,k,... , detta har blivit defaktostandard idag. Om det sedan är bra är en annan femma... .
Och visst är det trevligt att läsa gammal kod som är uniform rätt i genom en fredags kväll framför brasan...
En bättre kommentar är att beskriva vad den biten på porten gör. Tex tänd lampan.
Ett bra sätt är att skriva kommentarerna först och sedan infoga ocheller ersätta med kod (ruskigt exemplariskt). En lärare jag hade sa att "Koden ska vara som att läsa en bok", dvs betydelsefulla och förklarande variabel- och funktions-namn samt en lättläst strutur. Och kom ihåg att den ska inte bara vara lättläst den närmaste månaden. Oftast kommer detta efter hand men man måste ändå alltid tänka på det.
Sen finns det ett gammalt arv (var det Kobol eller Fortran tro) där räknarna fick ha namnen i,j,k,... , detta har blivit defaktostandard idag. Om det sedan är bra är en annan femma... .
Och visst är det trevligt att läsa gammal kod som är uniform rätt i genom en fredags kväll framför brasan...
Kobol ??
Common Business Oriented Language, alltså COBOL (med stora bokstäver !).
COBOL har inga default typer, all data måste deklareras i "DATA DIVISION."
I Fortran (Formula Translation, med stort F och resten små bokstäver) är alla
variabler som börjar på I, J, K, L, M, N eller $ är default INTEGER, alla andra
variabler är default REAL. Om man inte deklarerar dom annolrlunda, så klart.
Detta går att överrida med IMPLICIT, där man kan tala om att variabler
som börjar med angivet/angivna tecken är av en viss "typ". Bäst och tydligast
är at explicit deklarera alla variabler, så är man inte bunden till att olika
typer måste börja p en viss bokstav. Om man även gör "IMPLICIT NONE"
så får man kompileringsfel för "otypade" variabler...
Men visst är det ett arv härifrån som gör att man ofta kallar loop-räknare
för I, J o.s.v istället för t.ex A, B o.s.v....
EDIT : En fatal förväxling av gemen/versaler rättat...

Common Business Oriented Language, alltså COBOL (med stora bokstäver !).
COBOL har inga default typer, all data måste deklareras i "DATA DIVISION."
I Fortran (Formula Translation, med stort F och resten små bokstäver) är alla
variabler som börjar på I, J, K, L, M, N eller $ är default INTEGER, alla andra
variabler är default REAL. Om man inte deklarerar dom annolrlunda, så klart.
Detta går att överrida med IMPLICIT, där man kan tala om att variabler
som börjar med angivet/angivna tecken är av en viss "typ". Bäst och tydligast
är at explicit deklarera alla variabler, så är man inte bunden till att olika
typer måste börja p en viss bokstav. Om man även gör "IMPLICIT NONE"
så får man kompileringsfel för "otypade" variabler...
Men visst är det ett arv härifrån som gör att man ofta kallar loop-räknare
för I, J o.s.v istället för t.ex A, B o.s.v....

EDIT : En fatal förväxling av gemen/versaler rättat...
Senast redigerad av sodjan 12 november 2007, 17:26:16, redigerad totalt 1 gång.
har suttit och funderat ett och kommit fram till att det borde inte vara så svårt att hitta någon med den riktiga versionen av mikroC(kanske till och med finns här) så jag satte igång och ändrade programmet för att bara använda en pic istället. När jag ändå höll på och ändra så la jag även till en lcd som visar tempen, CO samt vilket stadie programmet är i.
här är länk
här är länk