Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

snimiti program u PIC 16F877

[es] :: Elektronika :: Mikrokontroleri :: snimiti program u PIC 16F877

[ Pregleda: 6977 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon snimiti program u PIC 16F87720.10.2008. u 22:52 - pre 188 meseci
poitrebna mi je pomoć!!!!!

dali je moguće da je sledeći program (dole) neispravan???
ako je ispravan,ne znam zašto ne mogu da ga prebacim u PIC 16F877
imam PICFlash2 programer
Molim vas ako je moguće da mi pojasnite korak po korak proceduru
Šta mi je još potrebno i kako da budem siguran da se program nalazi u PIC-u
unapred puno hvala,..


'Program korektor napona.
'Meri mrezni napon i zavisno od rezultata merenja
'ukljucuje odgovarajuci relej i tako na autotransformatoru
'bira odgovrajuci izvod zavisno od mreznog napona.

Define ADC_BITS 10 ' Broj bita
Define ADC_CLOCK 1 ' Klok (0=Oscilator /8)

AD_Rez var word ' Rezultat AD konverzije
Napon var word ' Promenljiva za dobijanje napona
TRISA = %11111111 ' Port A je ulazni
TRISC = 0 ' Port D je izlazni
ADCON1 = %10000010 ' Port A je u analognom modu, 0 i 5V su
' referentni naponi a rezultat je desno formatiran.
Dummy var byte ' Promenljiva za 32 bitno delenje i mnozenje
symbol DQ = porte.2 ' DQ linija za termometar
symbol Greska = portb.5 'Linija LED diode greske
symbol Rucni = portb.4 'Linija za identifikaciju rucnog rada
symbol Rucni_rad = portb.2 'Linija za identifikaciju rucnog rada

temperatura Var Word ' Izracunata temperatura
temper1 Var Word ' Izracunata temperatura
count_remain Var Byte ' Ostatak
count_per_c Var Byte ' Po stepenu C

Pocetak:
'----------------MERI TEMPERATURU--------------------------------------

OWOut DQ, 1, [$CC, $44] ' Start merenja temperature
Sacekaj:
OWIn DQ, 4, [count_remain] ' Provera da li jos traje
IF count_remain = 0 Then Sacekaj
OWOut DQ, 1, [$CC, $BE] ' Procitaj temperaturu
OWIn DQ, 0, [Temperatura.LOWBYTE, Temperatura.HIGHBYTE, Skip 4, count_remain, count_per_c]
Temperatura = (((Temperatura >> 1) * 100) - 25)+ (((count_per_c - count_remain)*100) / count_per_c)
Temper1 = Temperatura / 100

If Temper1 < 70 Then Radi

High Greska
pause 500
Low Greska
pause 500
High Greska
pause 500
Low Greska
pause 500
High Greska
pause 500
Low Greska
pause 500
PortD = $00
Goto Pocetak

'-------------RAD KOREKTORA------------------------------------------
Radi:
' Procitaj 1 kanal na RA2 i prikazi

ADCIN 2, AD_Rez ' Izvrsi konverziju na RA2 i 16 bita i rezultat smesti u AD_Rez.

Dummy = AD_Rez * 5 * 100
Napon = Div32 1023
Pause 5000 ' Pauza 10 sec

' - - - - Napon 180 - 190 - - - - - - - - - - - - - - - - - -
If AD_Rez > 731 Then RE2
PortC = $01
Goto REE
' - - - - Napon 190 - 200 - - - - - - - - - - - - - - - - - -
RE2: If AD_Rez > 775 Then RE3
PortC = $02
Goto REE
' - - - - Napon 200 - 210 - - - - - - - - - - - - - - - - - -
RE3: If AD_Rez > 811 Then RE4
PortC = $04
Goto REE
' - - - - Napon 210 - 220 - - - - - - - - - - - - - - - - - -
RE4: If AD_Rez > 867 Then RE5
PortC = $08
Goto REE
' - - - - Napon iznad 220 - - - - - - - - - - - - - - - - - -
RE5: PortC = $10
Pause 2000 ' Pauza 2 sekunda
REE:
Goto Pocetak ' Kreni ponovo na merenje
'------------RUCNI RAD----------------------------
Iskljucen:
PortC = $10
Rucni = 1
Return

End ' Kraj programa

1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 10:00 - pre 188 meseci
Da li je program ispravan ili neispravan ne bi trebalo da ima nikakve veze sa tim da li ti nesto mozes ili ne mozes upisati u flash mikrokontrolera. Ti u njega mozes upisati sta god hoces, pa cak i ako to nije program.

Kad napises neki program, prvo ga kompajliras. Ako je ispravan kompajler ce ti napraviti .hex fajl. Taj .hex fajl je ono sto treba da upises u mikrokontroler. E sad, kad imas taj .hex fajl, onda mozes da koristis PicFlash2 i neki program za programiranje PIC-a (npr. PicProg ili ne znam koji vec imas) da ubacis taj .hex u mikrokontroler. Tvoj programator PicFlash i taj program se uopste ne vode brigu o tome da li je taj .hex fajl ispravan, tj. ti si mogao u medjuvremenu i da ga pokvaris, oni ce ga svejedno upisati.

Drugi nacin na koji je moguce da se radi je da imas neki IDE, npr. MPLAB u koji se taj PicFlas2 integrise i onda je moguce da se programiranje obavlja odmah iz okruzenja u kome i pises program. U tom slucaju je moguce da se automatski prilikom kompajliranja programa program (hex) odmah i upisuje u mikrokontroler. Tada se nece moci upisati ako je neispravan, jer kompajler nece u tom slucaju napraviti .hex i nece imati sta da se upise u mikrokontroler.

U bilo kom slucaju od ova dva, pogledaj kakve poruke (log) izbacuje kompajler/programator pa to napisi ovdje.

Ako programiras na prvi nacin (Picflash2 i neki program za programiranje), onda u tom programu sigurno ima i opcija za iscitavanje sadrzaja iz mikrokontrolera, pa tako mozes i procitati sta je u njega upisano. Medjutim to ce biti .hex fajl, a ne izvorni kod kao ovaj sto si ovdje napisao, pa neces moci bas lako da utvrdis da li je to to sto si ti htjeo da upises. Ali mozes koristiti taj iscitani .hex i onaj koji je kompajler generisao od tvog programa pa uporedjivanjem njih znati da li ti je program otisao u mikrokontroler.
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 11:15 - pre 188 meseci
Odin D. super je što si se javio,..
iz prošle teme znaš da sam rekao da sada imam flesh prog,..pa kako sve to dobro radi i.t.d.
pa sam probao da odem malo dalje ali se iskomplikovalo,.. imam, bar mislim dobru literaturu i u njoj interesantnih primera.
probao sam da učeći iz knjige i gledajući gotove primere programa datih i istoj knjizi, pravim male korekcije da na primer:
menjam vreme koliko će neki port biti na visokom ili niskom nivou,..
da zamenim RB2 sa RB5,...

znači to su neki jednostavni programi sa LED diodicama,...
kakvu god da sam napravio izmenu i sada tako izmenut program prebacim u PIC program se izvršava po starom kodu, kapiram da ga nisam izmenio!!!!!!! kako se to radi??????

sledeći problem je onaj gore izvorni kod koji sam okačio,... nevrovatno šta sam jutros oko pola četiri ukapirao:::
lik koji je pisao program postavio je C port kao izlazne
Na PCB-u i električnoj šemi kao izlazne potrove postavio je D port

večeras bi trebalo da na PCB-u prelemim portove C,D pa da vidim dali ce raditi jer ovako uređaj je MRTAV, ne dešava se ništa što je i logično
ukoliko mi na taj način ne proradi,..eto mene,...

za sada, Odin D. kako se realizuje unešena promena u izvorni kod

na raspolaganj mi je:
-PicFlesh 2 prog.
-mikroBasic kompajler
-mikroCod studio
-MPLAB IDE
-WinPic 800
-icprog




1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 19:09 - pre 188 meseci
Ako imas izvorni kod (pisan npr. u Basic-u ili u C-u), potrebno je da ga pomocu kompajlera, koji postoji integrisan u tom okruzenju u kojem radis (mikroBasic za Basic, MPLAB za asembler, itd), prevedes u .hex fajl. Program mora biti ispravan da bi se kompajliranje uspjesno zavrsilo. Imas u helpu svakog IDE-a kako se to radi (prvo treba da podesis IDE za tvoj mikrokontroler, pa otvoris novi projekat, pa otkucas program, pa "Build" itd....)

Kad si dobio taj .hex fajl (a on se obicno nalazi u direktorijumu u kome si otvorio projekat) onda ga pomocu programatora PicFlash2 i odgovarajuceg programa (npr. icprog) treba ubaciti u mikrokontroler. Prvo trebas spojiti i konfigurisati sve prema uputstvu (vidi u helpu i u tom prirucniku sto si dobio uz PicFlash2), a ostalo se obavlja u dva koraka: "load .hex file" (odaberes onaj fajl koji si dobio kompajliranjem) i "program device" (ili kako vec glasi komanda, ne znam) ga posaljes u mikrokontroler. I to je to.

Svaki put kad promjenis nesto u programu, moras ga opet iskompajlirati i novodobijeni .hex opet upisati u mikrokontroler.
Kod novijih razvojnih sistema je stvar obicno takva da se razvojna plocica spaja preko JTAG konektora sa kompjuterom, a programator se integrise u razvojno okruzenje, tako da odmah po kompajliranju .hex fajl ide direktno u mikrokontroler, cime se procedura pomalo ubrzava, zaobilazenjem onog drugog koraka kad to sam radis pomocu programa za upis (icprog ili WinPic 800).

Ako ti eksperimentises sa onom plocicom sa pocetka teme, onda ti svaki put kad hoces da napravis izmjenu u programu mikrokontrolera moras da ga iscupas iz podnozja na plocici, ubodes ga u programator, ucitas novi .hex fajl i vratis mikrokontroler u podnozje na plocici.
 
Odgovor na temu

grabik

Član broj: 32507
Poruke: 311
212.15.188.*



+7 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 19:10 - pre 188 meseci
Ne zaboravi setovati pravilno konfiguracione bitove za oscilator, watchdog timer i low voltage program, jer kod pogresnog setovanja uC nece raditi kako treba ili uopce nece raditi.
Vecina programa za programiranje prije zakljucavanja 16f877 vrsi verifikaciju pravilnog upisa a ako nema napravi to manualno da budes siguran da je program pravilno upisan.
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 20:26 - pre 188 meseci
ljudi ja ne znam šta bi da nije vas,..

@Odin D.
e sada mi je dosta tog jasnije,,,,znači da svaki jezik ima svoj kompajler,,,e a ja sam to brkao pa mi se dešavalo da neki prog. mogu da učitam a neki ne,.. ali sada mi je jasno šta se ustvari dešavalo, rasčistio sam tu dilemu "ŠTA JE SAD"

definitivno sada kapiram svoju grešku, od ranije sam nabavio knjigu koja obrađuje asemblerski program i knjiga za picbasic,........pa sve to pomešao,..

da eksperimente vršim sa onom pločicom. jasno svaki put čupam vraćam pic,..stavio duplo podnožje pa se ne bojim za nožice samog pica

Citat:
Odin D.

Svaki put kad promjenis nesto u programu, moras ga opet iskompajlirati i novodobijeni .hex opet upisati u mikrokontroler.

dali, ako deset puta unesem izmenu a pritom ih deset puta iskompajliram,dobijem deset novih HEX. fajlova ili se onaj prethodni prepravi i takav ostaje


@grabik
samo nisam siguran za watchdog timer (čemu služi)
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

Stojan Trifunovic

Član broj: 15156
Poruke: 366
*.yu
Via: [es] mailing liste



+8 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 22:10 - pre 188 meseci
Prilikom izmene programa nista se ne menja, sve dok se program ne kompajlira. Tek onda ce stari .hex fajl biti izbrisan, i na njegovom mestu dobice se novi. Ovo se moze lako proveriti jednostavnim pregledom vremena modifikacije fajla (desni klik preko fajla pa properties).

Ako niste sigurni za watchdog tajmer, onda ga sigurno ni ne koristite. Zato, podesite njegov konfiguracioni bit u softveru programatora na WDT OFF.

Zatim, CP OFF (da bi mogao verifikovati program).

Onda, LVP OFF (ponekad zbog niskog napona programiranja kasnije dolazi do korupcije programa unutar isprogramiranog PIC-a).

Takodje tip oscilatora (pretpostavljam da koristite kristal, pa odaberite XT OSC).

Ukratko, trebate podesiti sve konfiguracione bitove PIC16F877 mikrokontrolera (a ima ih jos) za svoj konkretan slucaj. Mozete ih najlakse shvatiti kao podesavanje TRIS registara.

Postupak podesavanja konfiguracionih bitova razlikuje se od programatora do programatora (softvera), i najcesce je odmah dostupan u glavnom prozoru programatora. Ukoliko nije, potrazite po opcijama configuration bits.
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 23:01 - pre 188 meseci
pozdrav,..

konfigurisao sam upravo kako si mi rekao ali čini mi se da je ipak problem do samog koda
dali je moguće da je namerno napravljeno grešaka da se taj projekat ipak nemože dobiti za DŽ.

molim vas ako ste raspoloženi da probate kompajlirati kod koji sam ostavio gore
kada ja to probam u MikroCode Studio obavezno mi izbaci nekoliko grešaka

pokušavajući da shvatim stvari ipak sam činimi se našao greške u samom pisanju istog tog koda (neke nelogične stvari)

evo dela programa:

AD_Rez var word ' Rezultat AD konverzije
Napon var word ' Promenljiva za dobijanje napona
TRISA = %11111111 ' Port A je ulazni
TRISC = 0 ' Port D je izlazni

kakav to sledi komentar na TRISC,.......port D je izlazni
i naravno našao sam još sličnih mislim grešaka

Šta mislite o tome
iz iste knjige, uzmem drugi primer kompajliranje bude bez greške

knjiga: Programiranje mikrokontrolera PICBASIC-om autor: Vojo Milanović

molim vas za komentar jer iz tog razloga nastali su mi svi ovi "problemi" pa mi se već čini da je programiranje MC kao vađenje zuba


da probao sam da pravim izmenu u kodu i efekat je jasan nakon kompajliranja
polako mi se slažu kockice samo još onaj gore program nikako!!!!!!!

1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87721.10.2008. u 23:14 - pre 188 meseci
evo i šema iz koje se jasno vide izlazni portovi
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
Prikačeni fajlovi
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
91.148.92.*



+28 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 06:29 - pre 188 meseci
Sto programa koji si postavio tice, koliko sam ja video, tu nema gresaka, osim
Citat:
TRISC = 0 ' Port D je izlazni

sto si i ti primetio, trebalo bi da stoji
Code:
TRISD = 0

sledeca 'greska'
Citat:
Symbol DQ = PORTE.2 ' DQ linija za termometar

treba da bude
Code:
Symbol DQ = PORTC.2

Ovo programce, malko prepravljeno, se lepo i bez gresaka kompajlira u Proton+ :
Code:

'Program korektor napona.
'Meri mrezni napon i zavisno od rezultata merenja
'ukljucuje odgovarajuci relej i tako na autotransformatoru
'bira odgovrajuci izvod zavisno od mreznog napona.
Device 16F877A
XTAL 4
PORTB_PULLUPS false

Declare ADIN_RES 10         ' Broj bita
Declare ADIN_TAD 8_FOSC     ' Klok (0=Oscilator /8)

Dim AD_Rez As Word          ' Rezultat AD konverzije
Dim Napon As Word           ' Promenljiva za dobijanje napona
TRISA = %11111111           ' Port A je ulazni
TRISD = 0                   ' Port D je izlazni
ADCON1 = %10000010          ' Port A je u analognom modu, 0 i 5V su
                            ' referentni naponi a rezultat je desno formatiran.
Dim Dummy As Byte           ' Promenljiva za 32 bitno delenje i mnozenje
Symbol DQ = PORTC.2         ' DQ linija za termometar
Symbol Greska = PORTB.5     'Linija LED diode greske
Symbol Rucni = PORTB.4      'Linija za identifikaciju rucnog rada
Symbol Rucni_rad = PORTB.2  'Linija za identifikaciju rucnog rada

Dim Temperatura As Word     ' Izracunata temperatura
Dim Temper1 As Word         ' Izracunata temperatura
Dim Count_remain As Byte    ' Ostatak
Dim Count_per_c As Byte     ' Po stepenu C

Dim i As Byte
Pocetak:
'----------------MERI TEMPERATURU--------------------------------------

OWrite DQ, 1, [$CC, $44]    ' Start merenja temperature
Sacekaj:
ORead DQ, 4, [Count_remain] ' Provera da li jos traje
If Count_remain = 0 Then 
    GoTo Sacekaj
EndIf
OWrite DQ, 1, [$CC, $BE]    ' Procitaj temperaturu
ORead DQ, 0, [Temperatura.LowByte, Temperatura.HighByte, Skip 4, Count_remain, Count_per_c]
Temperatura = (((Temperatura >> 1) * 100) - 25)+ (((Count_per_c - Count_remain)*100) / Count_per_c)
Temper1 = Temperatura / 100

If Temper1 < 70 Then Radi

For i = 1 To 3
    High Greska
    DelayMS 500
    Low Greska
    DelayMS 500
Next i
PORTD = $00
GoTo Pocetak

'-------------RAD KOREKTORA------------------------------------------
Radi:
' Procitaj 1 kanal na RA2 i prikazi

AD_Rez = ADIn 2 ' Izvrsi konverziju na RA2 i 16 bita i rezultat smesti u AD_Rez.

Dummy = AD_Rez * 5 * 100
Napon = Div32 1023
DelayMS 5000 ' Pauza 10 sec

' - - - - Napon 180 - 190 - - - - - - - - - - - - - - - - - -
If AD_Rez > 731 Then 
    GoTo RE2
EndIf
PORTC = $01
GoTo REE
' - - - - Napon 190 - 200 - - - - - - - - - - - - - - - - - -
RE2: 
If AD_Rez > 775 Then 
    GoTo RE3
EndIf
PORTC = $02
GoTo REE
' - - - - Napon 200 - 210 - - - - - - - - - - - - - - - - - -
RE3: 
If AD_Rez > 811 Then 
    GoTo RE4
EndIf
PORTC = $04
GoTo REE
' - - - - Napon 210 - 220 - - - - - - - - - - - - - - - - - -
RE4: 
If AD_Rez > 867 Then 
    GoTo RE5
EndIf
PORTC = $08
GoTo REE
' - - - - Napon iznad 220 - - - - - - - - - - - - - - - - - -
RE5: 
PORTC = $10
DelayMS 2000 ' Pauza 2 sekunda
REE:
GoTo Pocetak ' Kreni ponovo na merenje
'------------RUCNI RAD----------------------------
Iskljucen:
PORTC = $10
Rucni = 1
Return

End ' Kraj programa


Konfiguracija za ovaj program: HS_OSC, WDT_OFF,...

Svaki put kada kompajliras program, kompajler 'pravi' hex fajl sa istim nazivom koji ima i tvoj izvorni program, i ukoliko takav hex postoji, jednostavno ga obrise i snimi novi, tako da se ne desava da ti napises jedno, a u PIC 'turis' nesto sto je starije.

Dobro je inace da si i sam uocio greskicu sa setovanjem portova, kada koristis tudje primere, mora da budes veoma pazljiv i da ukljucis mozak u 'turbo'
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 08:16 - pre 188 meseci
@Sepa 011
puno ti hvala na utrošenom trudu i savetu
reci mi to što sam primetio sa setovanjem porta C i D

dali da prepravim tako što ću setovati pinove porta D i prilagoditi datoj šemi ili obratno,..
pitam to zato što je port C.2 zauzet termo elementom
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 08:35 - pre 188 meseci
dali bi to trebalo da izgleda ovako:

'-------------RAD KOREKTORA------------------------------------------
Radi:
' Procitaj 1 kanal na RA2 i prikazi

AD_Rez = ADIn 2 ' Izvrsi konverziju na RA2 i 16 bita i rezultat smesti u AD_Rez.

Dummy = AD_Rez * 5 * 100
Napon = Div32 1023
DelayMS 5000 ' Pauza 10 sec

' - - - - Napon 180 - 190 - - - - - - - - - - - - - - - - - -
If AD_Rez > 731 Then
GoTo RE2
EndIf
PORTD = $01
GoTo REE
' - - - - Napon 190 - 200 - - - - - - - - - - - - - - - - - -
RE2:
If AD_Rez > 775 Then
GoTo RE3
EndIf
PORTD = $02
GoTo REE
' - - - - Napon 200 - 210 - - - - - - - - - - - - - - - - - -
RE3:
If AD_Rez > 811 Then
GoTo RE4
EndIf
PORTD = $04
GoTo REE
' - - - - Napon 210 - 220 - - - - - - - - - - - - - - - - - -
RE4:
If AD_Rez > 867 Then
GoTo RE5
EndIf
PORTD = $08
GoTo REE
' - - - - Napon iznad 220 - - - - - - - - - - - - - - - - - -
RE5:
PORTD = $10
DelayMS 2000 ' Pauza 2 sekunda
REE:
GoTo Pocetak ' Kreni ponovo na merenje
'------------RUCNI RAD----------------------------
Iskljucen:
PORTD = $10
Rucni = 1
Return

End ' Kraj programa


1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 09:32 - pre 188 meseci
e sad sam skroz pobrko lončiće,..

zašto Proton+


1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 12:45 - pre 188 meseci
Nema veze sto je Proton+, on mozda ima taj kompajler pa je probao na njemu da li je program ispravan. Ako je program ispravan trebao bi da se iskompajlira na bilo kom kompajleru. Ti iskompajliraj na onom sto ti imas (MPLAB), svejedno je. Ako je ispravan dobices i ti taj .hex fajl.
Ima vise kompajlera raznih proizvodjaca, raznih kvaliteta, raznih cijena i za razlicite jezike. Svi oni na kraju naprave .hex fajl bez obzira u kom ti programskom jeziku pisao program (asembler, C, Basic, Pascal, ....).
U mikrokontroler mozes samo .hex fajl da upises. To su naredbe koje procesor mikrokontrolera moze da razumije (masinski jezik). Medjutim vrlo je nezgodan za covjeka, pa stoga mi pisemo programe u nekom visem programskom jeziku razumljivijem za covjeka, a kompajler to prevodi u masinski jezik razumljiv za mikrokontroler, sto na kraju rezultuje .hex fajlom bez obzira od kog ti programskog jezika krenuo.

Ovako male programe, kao sto je ovaj tvoj primjer, mozes jos uvijek pisati u asembleru, ali za malo vece programe asembler je pravo mucenje, stoga ces ih pisati u C-u, Basicu, Pascalu,....
Za bilo koji jezik za koji se odlucis moras imati odgovarajuci kompajler, od kojih ti vec imas neke (npr. MPLAB za asembler, PicBasic za Basic). I kao sto rekoh, ima ih vise i od raznih proizvodjaca, neki se placaju, neki su dzaba itd.


 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 13:23 - pre 188 meseci
hvala vam na strpljenju i volji da mi pomognete,..

kada kompajliram kod koji mi je Sepa prepravio, u MicroCod Studio, izbaci mi grešku,na kraju ne dobijem hex.fajl

If Count_remain = 0 Then (markirana linijao kao greška)






kada kompajliram u microBasic-u ne izbaci mi grešku ali nemam ni hex fajl.


1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 16:13 - pre 188 meseci
Provjeri kako se u tom programskom jeziku u kom radis vrsi uporedjivanje.
Ako koristis

a = b

to obicno znaci da se vrednost iz b smjesta u a.

Ako koristis npr.

a == b

to moze znaciti (npr. u C-u) da se ispituje "da li je a jednako b"
sto pretpostavljam da tebi treba, jer se taj uslov nalazi u naredbi IF.

Ako vec ne poznajes jezik u kom su napisani ti primjeri sa kojima vjezbas, bilo bi ti u svakom slucaju od koristi da se prvo malo u to uputis, jer ces onda razumjeti kako program radi, a ne samo sta radi kad ga pokrenes.
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 19:55 - pre 188 meseci
@Odin D.

slažem se sa tobom, jako puno tog ne znam, da bi se upustijo sam u takvu jednu avanturu sa MCU
poneo sam se mišlju da,
imam knjigu
imam programator,koji inače autor knjige preporučuje
imam "kod", gde ga je sam autor knjige pisao
imam kompajler kojeg opet isti taj autor preporučuje
imam sch
imam pcb
imam volju
imam vas na ES.

pa sam mislio da ću ja sad capcarapa i gotov zanimljiv uređaj,...ali eto
pošao sam od jednostavnih programa tek da bi video kako se kompajlira i šalje sam kod u pic,(ali eto utešno je da sam bar to naučio)
i na kraju ipak, jasno mi je da moram prvo sesti dobro zagrejati stolicu i savladati elementarne stvari,..

neću odustati ali nebih ni vas da preterano smaram,..moram vas čuvati za kasnije

samo mi još nikako nije jasna ta knjiga, čemu sve kada to provereno Neradi,...

Veliki pozdrav i hvala svima vama na vremenu,..


1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
*.adsl.beotel.net.



+28 Profil

icon Re: snimiti program u PIC 16F87722.10.2008. u 21:24 - pre 188 meseci
@lm741
Zasto Proton+? Paaa.. evolucija posle PicBasic Pro
To sto imas knjigu, programator, kompajler, itd. je super, jedino sto UVEK kada koristis primere iz knjiga dobro otvori oci i uporedi shemu sa programom. Tako se nalaze slucajnonamerne greske autora napravljene u nameri da citalac ponesto i nauci a ne samo da se bavi prepisivanjem.

PicBasic i microBasic su dve razlicite zverke. mikroBasic pomalo podseca na Pascal (a itakodje i MikroC ) Da bi iz bilo kog programskog jezika dobio upotrebljiv .hex mora dobro da poznajes 'dijalekt' tog jezika. Ja za brzo i brljavo pisanje nekriticnih programcica koristim, sto si i primetio, Proton+, a za nesto ozbiljnije CCS C ili HI-TECH C. Mozes predpostaviti kako izgleda kada se zaboravim i pocnem da pisem na pogresnom 'dijalektu' C-a

@Odin D.
Ne mora da znaci da se sitni i kratki programi najlakse pisu u assembler-u. Veoma cesto se pored mnogih dnevnih obaveza 'siva materija' malko preoptereti pa se u assembleru lako zapetljas k'o pile u kucine. Visi programski jezici su ipak malko pregledniji (mada istini za volju i malko sporiji prilikom izvrsavanja). Za brzinu uvek ima lek: brzi mikrokontroler. Nije uvek potrebno koristiti max. frekvenciju oscilatora za odredjene zadatke ukoliko to nije potrebno. Struje ipak nemamo na pretek. (cak je i Intel smanjio klok na svojim porocesorima - Core generacija, a poceli su da, po brzini racunanja, ostavljaju starog Pentium-a daleko za sobom).

 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: snimiti program u PIC 16F87723.10.2008. u 10:25 - pre 188 meseci
Pa nisam bas imao na umu da se sitni programi najlakse pisu u asembleru, nego da se veci pisu teze. Ako ne moram, ja asembler ne koristim cak ni da mi je program velicine dva reda. A vecina (mada ne svi) proizvodjaci mikrokontrolera vec duze vreme optimizuju jezgra za C, tako da stvarno treba biti baksuz pa doci u situaciju da ne moze bez asemblera. Tu i tamo par linija u svrhu optimizacije necega nije problem, ali ako bih morao citav program gurati u asembleru... :-(
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: snimiti program u PIC 16F877

[ Pregleda: 6977 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.