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

Pomoc pri porgramiranju PIC16F84A

[es] :: Elektronika :: Mikrokontroleri :: Pomoc pri porgramiranju PIC16F84A

[ Pregleda: 2310 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BigBadM
student
Kragujevac

Član broj: 184486
Poruke: 6
89.216.83.*



Profil

icon Pomoc pri porgramiranju PIC16F84A17.08.2008. u 13:25 - pre 157 meseci
Pozdrav svima koji citaju ovaj post, isprva nisam hteo da zatrazim za pomoc jer me je bilo sramota zbog svih onih poruka od strane mojih kolega sa fakulteta.Znam da su bili bezobzirni i da su se ponasali kao mala deca "date im prst a oni otmu celu ruku",pa sam se jednostavno okrenuo na drugu stranu i potrazio pomoc "gugletu" trazeci dodatne tutorijale, materijal,predavanja i sta vec,ali bezuspesno.Nije da nisam nasao, imam gomilu raznih stvari na kompu vezano za programiranje mikrokontrolera pocev od raznih zadataka,tudjih seminarskih,raznih preporuka i tutorijala u stilu naucite za 21 dan ,sto na srpskom sto na engleskom, ali vrlo malo stvari mi je bilo od ikakve pomoci.Naime problem je u tome sto smo svi u grupi za informatiku na fakultetu ovde u Kragujevcu imali zavrsni rad iz oblasti programiranje kontrolera u softveru MPLAB u asembleru i svako od kolega je dobio zadatak kao uslov da bi uopste mogao da izadje na usmeni ispit iz predmeta Arhitektura racunarskih sistema.Ako pogledate postove od pre dva meseca mozete da vidite zadatke koji su postavljeni a vecina je uspesno resena.Prvi zadatak koji je bio postavljen je da se napravi oscilator razlicitih ucestanosti i koji je resio neki decko iz Nisa kome sam veoma zahvalan ali je unapred ukazao da postoje neke greskice.
Zadatak glasi ovako :

; Realizovati oscilator razlicitih,unapred definisanih,ucestanosti.
; Zadatak realizovatoi pomocu mikrokontrolera PIC16F84A na asembleru.
;
; PORTA.0 Izlaz oscilatora
; PORTA.1 Invertovani izlaz oscilatora
; PORTB.0 60 impulsa/min
; PORTB.1 120 impulsa/min
; PORTB.2 240 impulsa/min

Resenje koje je ponudjeno i to veoma brzo sto me je narocito iznenadilo u poredjenju na ostale forume (tipa ovog kao forum sk) nije bilo ispravno i forma u kojoj je predstavljeno izgleda :

LIST P=16F84, F=INHX8M
include "P16F84.inc"

count1 equ 0x0c
count2 equ 0x0d

bsf STATUS,Rp0
clrf trisa
movlw b'111'
movwf TRISB
bcf STATUS,Rp0

goto main

delay
movlw d'243'
movwf count2

pom
nop
decfsz count1,f
goto pom
decfsz count2,f
goto pom
return

main
btfsc portb,0
call freq1
btfsc portb,1
call freq2
btfsc portb,2
call freq3
goto main

freq1
movlw b'01'
movwf porta
movlw b'10'
movwf porta
call delay
call delay
call delay
call delay
return

freq2
movlw b'01'
movwf porta
movlw b'10'
movwf porta
call delay
call delay
return

freq3
movlw b'01'
movwf porta
movlw b'10'
movwf porta
call delay
return
end

Nakon konsultacija sa predmetnim asistentom i nekim smernicama uspeo sam da ispravim program i omogucim da ostvari impulse 60/s i 120/s dok ucestalost od 240 nisam uspeo da isprogramiram ,iskreno da kazem nemam pojama kako bih to izveo, ove stvari koje sam ispravio kako bih omogucio vec pomenute ucestalosti jeste analizirajuci vec resene zadake sa foruma tako da program sada izgleda ovako:


LIST P=16F84A, F=INHX8M
include "P16F84A.inc"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


count1 equ 0x0c
count2 equ 0x0d

bsf STATUS,RP0
clrf TRISA
movlw b'111'
movwf TRISB
bcf STATUS,RP0
clrf PORTB

goto main

delay
movlw d'243'
movwf count2

pom
nop
decfsz count1,f
goto pom
decfsz count2,f
goto pom
return

main
btfsc PORTB,0
call freq1
btfsc PORTB,1
call freq2
btfsc PORTB,2
call freq3
goto main

freq1
movlw b'01'
movwf PORTA
call delay
call delay
movlw b'10'
movwf PORTA
call delay
call delay
return

freq2
movlw b'01'
movwf PORTA
call delay
movlw b'10'
movwf PORTA
call delay
return

freq3
movlw b'01'
movwf PORTA
movlw b'10'
movwf PORTA
call delay
return
end


Ali pri tom da ova ucestalost od 240 impulsa/sec ne radi pa bih hteo da zamolim nekog ko ima volju i malcice slobodnog vremena da mi pomogne da resim ovaj problemcic jer ne verujem da je potrebno vise od desetak minuta nekome ko zna programiranje u assembleru da pogleda zadatak i da ispravit tih par reda koda...

P.S. Ako zelite da pomognete pomognnite ,ako ne necu da se ljutim, kako bi bata Zika rekao skalabudzicu ga neko..

:)
 
Odgovor na temu

pera89
Petar Dobrota
Zajechar

Član broj: 51904
Poruke: 64
212.200.192.*



Profil

icon Re: Pomoc pri porgramiranju PIC16F84A18.08.2008. u 02:04 - pre 157 meseci
Zadatak sam ti resio ja i jeste tacan. Generise 60, 120 i 240 impulsa u sekundi sto je i trazeno. Razlika izmedju onoga sto sam ja napisao i sto si ti ispravio je u tome sto moj kod generise impuls duzine 2uS pa 1S pauza( znaci 60 impulsa u minutu), a tvoj kod generise impuls duzine 0,5S pa 0,5S pauze( sto je opet 60 impulsa u minutu). U zadatku je bilo navedeno broj impulsa u minutu, nigde nije naglaseno koliki treba da bude odnos izmedju impulsa i pauze. Tako da je zadatak tacan 100%(rekao sam da MOZDA ima greske jer ga nisam proveravao). A ako impuls i pauza moraju da budu iste duzine onda u delay rutini gde pise d'243' prepravis na d'122' dobijas pauzu od 125ms umesto 250ms. I onda lako mozes da to napises i za 240 impulsa.
P.S. dobar vam je taj asistent.
 
Odgovor na temu

Stojan Trifunovic

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



+8 Profil

icon Re: Pomoc pri porgramiranju PIC16F84A18.08.2008. u 09:33 - pre 157 meseci
Toplo Vam preporucujem da umesto na papiru napisete program u MPLAB-u, i da napravite program (Project - Make). Vec tu cete otkriti par (banalnih) gresaka, kao i error poruke koje Vam mogu pomoci u njihovoj ispravci.

Nakon toga simulirajte napravljeni kod (Debugger - Mplab SIM ili Proteus VSM (ukoliko ga imate instaliranog) ili pak koristite PIC simulator IDE sa www.oshonsoft.com ). Uputstva mozete naci u help-u (Help - Topics - Debuggers - MPLAB SIM). U simulatoru cete moci korak po korak videti sta se dogadja u svakom trenutku programa.

Iz ranijih postova (ukoliko su vase kolege ispravno opisale situaciju u sta ipak izrazavam sumnju) uocljivo je da ni asistent a ni profesorka ne poznaju dovoljno PIC da bi Vam mogli pomoci oko realizacije i ispravki zadataka. Prilikom postavki ovakvog zadatka, morali ste dobiti i trazeni odnos signal/pauza, frekvenciju oscilatora, da li su na ulazima pull-up ili pull-down otpornici (to je samo deo nedoumica. Ukoliko pogledate postove od pre dva meseca naci cete ih mnogo mnogo vise). Upravo zato Vam preporucujem simulator. On ce retko kada pogresiti, i na njemu cete odmah moci videti rezultat, sto mozete u slucaju potrebe i odbraniti pred profesorkom. Ako ljudi grese, simulator nece, a Vama ce steceno znanje pomoci i prilikom kasnijih programa.
 
Odgovor na temu

BigBadM
student
Kragujevac

Član broj: 184486
Poruke: 6
89.216.83.*



Profil

icon Re: Pomoc pri porgramiranju PIC16F84A19.08.2008. u 10:17 - pre 157 meseci
ufffff ovako ,nisam stigao da odgovorim ranije jer nisam imao vremena btw hvala obojici na odgovorima ali izgleda da niste razumeli moj problem.Ovako,nije frka u tome da li program teoretski radi, rade obe verzije i jedna i druga u similatoru, program radi bez greski i kako simulator kaze sve je OK i to sam proverio pre nego sto sam poslao onaj prvi post.Analizirajuci logiku kojom si se vodio pri resavanju zadatka zakljucio sam da je ono sto si hteo da namestis je da se lampica pali radi neko vreme pa ugasi a tu onda ide delay u odnosu na ucestanost i to je ok.Problem se javlja kada mikrokontroler prebacim na demonstracionu plocu
tj kada pustim u praksi da radi tj ne ide sve kako je zamisljeno.U tvom programu ,prvobitnom, ucestanostu 60 i 120 rade nesto ,svickaju one ali nekako cudno se pale lampice, da ne bude neke zabune, ali ne broji 60 i 120 (1,2,3,4,5,6.... da ne ispadne posle kako ne znam da izbrojim do hiljadu .. :) )dok za 240 ne radi apsolutno nista kao da je mrtav.Kada ubacim moju verziju tj ovo ispravljeno dobijem ono sto treba tj naizmenicno se pale 60/120 puta u minuti dok za 240 i dalje ne radi nista...

Ali ako se pogleda u zadatku tj kako je postavljen, PORTA.0 je izlaz a PORTA.1 invertovani izlaz sto znaci da kada je PORTA.0 ukljucen tj ima vrednost logicke jedinice dok je PORTA.1 iskljucen i ima vrednost nule,a u zavisnosti od ucestanosti od 60,120 i 240 impulsa/m lampice se naizmenicno pale i gase sporije odnosno brze.Portovi PORTB.0,PORTB.1 i PORTB.2 su kako da kazem kao opcije ,znaci izaberes ucestalost 60 i oni trepcu do besvesti naizmenicno jedan pa drugi i tako redom i za ove druge ucestanosti. Znam kako program treba da radi ali sam obican tuntuz za elektrotehniku i elektroniku i tim stvarima ne zalim da se bavim "kad odrastem" :) niti me te stvari zanimaju da budem iskren ,znaci ne znam kako kako se programira u assembleru nije da nisam pokusao da naucim ,imam na hardu jedno 100 meaga tutorijala ,upustva i sema ali jednostavno u te stvari se ne razumem i zato trazim pomoc.Nisam od onih sto zele leba bez motike ,mogu da kazem da sam strucan u drugim oblastima kao CATIA i PROEngineer ,cak je moja srednja skola Tehnicka skola za masinsto i saobracaj u Kragujevcu osvojila zlatnu medalju za inovaciju na sajmu tehnologije u Beogradu pre tri godine za masinu namenjenu reciklazi plastike koju sam ja modelirao,mozda bi bilo mnogo lakse kad bih mogao da ga isprogramiram u c-u ali profesor trazi striktno da bude assembler ciju logiku programiranja ne shvatam. Nemojte da shvatite ovo kao da se hvalim ja sad tu nesto nego necu da me shvatite kao neozbiljnog coveka, ako ne uradim ovaj zadatak ne mogu da polozim ispit a ako ne polozim necu moci da upisem trecu godinu studija jer nemam finansijskih sredstava da se sam finansiram zato pomozite ko boga vas molim...
 
Odgovor na temu

pera89
Petar Dobrota
Zajechar

Član broj: 51904
Poruke: 64
212.200.192.*



Profil

icon Re: Pomoc pri porgramiranju PIC16F84A19.08.2008. u 21:17 - pre 157 meseci
Prakticno, na ploci sa pravim led diodama se ne vidi zato sto je duzina impulsa od 2 mikro sekunde suvise mala da bi ljudsko oko zabelezilo promenu. Evo ti ovaj kod sa kojim ce se videti.
Code:

LIST      P=16F84, F=INHX8M
include "P16F84.inc"

count1  equ 0x0c
count2    equ 0x0d

bsf    STATUS,Rp0
clrf    trisa          ; RA0..RA5 izlazi
movlw     b'111'        ; RB0..RB2 ulazi
movwf    TRISB
bcf    STATUS,Rp0

goto     main

delay    ;rutina za pauzu od oko 125mS
    movlw d'122'
    movwf count2

pom    ;pomocna labela u rutini za pauzu
    nop
    decfsz count1,f
    goto pom
    decfsz count2,f
    goto pom 
    return


main

    btfsc portb,0
    call freq1
    btfsc portb,1
    call freq2
    btfsc portb,2
    call freq3
    goto main

freq1
    movlw b'01'   ;ukljuci portA.0
    movwf porta
    call delay    ;pauza od 4x125mS
    call delay
    call delay
    call delay
    movlw b'10'   ;iskljuci portA.0
    movwf porta
    call delay    ;pauza od 4x125mS
    call delay
    call delay
    call delay
    return

freq2
    movlw b'01'   ;ukljuci portA.0
    movwf porta
    call delay    ;pauza od 2x125mS
    call delay
    movlw b'10'   ;iskljuci portA.0
    movwf porta
    call delay    ;pauza od 2x125mS
    call delay
    return

freq3
    movlw b'01'   ;ukljuci portA.0
    movwf porta
    call delay    ;pauza od 125mS
    movlw b'10'
    movwf porta
    call delay    ;pauza od 125mS
    return

    end


Sada bi trebalo da se vidi i prakticno. I ovo ce da radi samo ako su na ploci na portu B pullDown otpornici, sa pullUp nece raditi.
 
Odgovor na temu

Stojan Trifunovic

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



+8 Profil

icon Re: Pomoc pri porgramiranju PIC16F84A20.08.2008. u 09:14 - pre 157 meseci
Ako program vec radi ispravno u simulatoru, skoro da je nemoguce da ne radi i u praksi.
Koliko vidim odavde: "__CONFIG _XT_OSC" koristite kvarcni oscilator, tako da pretpostavljam da ste isti program ostavili i na "demonstracionoj ploci".

Ukoliko vec u simulatoru (sa pravilno izabranom frekvencijom oscilatora) dobijate 60Hz, nema sanse da cete to uopste moci primetiti na ploci. Svetlost fluo cevi ili televizora treperi frekvencijom od 50Hz (kod monitora kompjutera ove frekvencije su nesto vece), a ipak ljudskom oku ipak izgleda da konstantno svetle.

Da biste uopste mogli videti rezultat ne menjajuci program, morali bi koristiti osciloskop ili smanjiti frekvenciju oscilatora.

Dobro bi bilo da prilozite i elektricnu semu, kako se ne bi nagadjalo sta trazite (do Vaseg prethodnog posta nije se znalo da su na izlaze povezane LED, a i dalje je nejasno da li ste spolja povezali pull-up otpornike), i kako bi mogli otkriti i eventualne hardverske greske.
 
Odgovor na temu

pera89
Petar Dobrota
Zajechar

Član broj: 51904
Poruke: 64
212.200.193.*



Profil

icon Re: Pomoc pri porgramiranju PIC16F84A20.08.2008. u 20:21 - pre 157 meseci
Stojane u pitanju su frekvencije 1,2 i 4 Hz(60 puta u minutu, ne u sekundi).
 
Odgovor na temu

Stojan Trifunovic

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



+8 Profil

icon Re: Pomoc pri porgramiranju PIC16F84A20.08.2008. u 21:39 - pre 157 meseci
Uops, moja greska! Ko radi, taj i gresi.
 
Odgovor na temu

BigBadM
student
Kragujevac

Član broj: 184486
Poruke: 6
89.216.83.*



Profil

icon Re: Pomoc pri porgramiranju PIC16F84A23.08.2008. u 07:30 - pre 157 meseci
Ma nije bre nikakav problem :)))) nisam stigao da odgovorim ranije crko mi racunar pa sam morao da se snadjem negde drugde.Zadatak radi sve kako treba trebalo je par stvarcica da se ispravi ali radi ,hvalati vam do dva neba za pomoc...
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Pomoc pri porgramiranju PIC16F84A

[ Pregleda: 2310 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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