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

Problem sa pis16f1824

[es] :: Elektronika :: Mikrokontroleri :: Problem sa pis16f1824

[ Pregleda: 1489 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

arakis
Filip Dulic

Član broj: 23312
Poruke: 293
*.dynamic.isp.telekom.rs.



+4 Profil

icon Problem sa pis16f182422.05.2011. u 18:36 - pre 157 meseci
imam neki nenormalan problem sa picom,
#include <htc.h>
#define _XTAL_FREQ 16000000
void main()
{
TRISA = 0;
ANSELA = 0;

OSCCON = 0b01111000;
for(;;)
{
RA0 = 0, RA1 = 0, RA2= 0;
__delay_ms(1000);
RA0 = 1, RA1 = 1, RA2= 1;
__delay_ms(1000);
}
}

ovaj kod kad ispitujem instrumentom samo menja izlaz RA2, dok RA1 i RA0 konstantno daju "1",
ako samo zamenim RA0 = 0, RA1 = 0, RA2= 0; sa PORTA = 0; i RA0 = 1, RA1 = 1, RA2= 1; sa PORTA = 0xFF;
sve radi bez problema, jel ima neko ideju zasto bi se desavala ovakva greska, hvala
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa pis16f182422.05.2011. u 18:58 - pre 157 meseci
to je hitech? sta ti je izgenerisao od koda ovaj C ? jesi pogleda asm izlaz? ja sam batalio hitech zbog slicnih gluposti .. probaj umesto RA0 da koristis LATA0, drugo dodaj u setup delu WPUA = 0; takodje probaj da navodis setovanje zasebno a ne a=0,b=0,c=0; .. bolje a=0; b=0; c=0; cak i a=b=c=0; ume da pravi problem posto se hitech optimizer vrlo cesto presmori posto RA1 nije "varijabla" u stvari vec tu kompajler treba da setuje tamo negde neki bit .. zato kad te ovako jednostavne stvari zezaju uvek proveri na sta lici asm kod koji c izgenerise
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Problem sa pis16f182422.05.2011. u 19:00 - pre 157 meseci
Problem je klasika - ne čitanje dokumentacije ;).
Po opisu problema rekao bih da su ti pinovi opterećeni, tj. imaš priključene potrošače na njima. Kad PIC upisuje stanje u neki izlazni registar, on prvo pročita postojeće stanje, izvrši potrebne izmene i onda vrati to stanje nazad na izlazni registar. Kod izmene stanja na opterećenom pinu to stanje ne uspe da se stabilizuje brzo pa ako je sledeća instrukcija izmena stanja bilo kog bita istog tog registra, PIC pročita prethodno stanje jer se novo nije stabilizovalo i dalje je sve jasno.
Ako baš imaš potrebe da menjaš stanja pojedinih bitova jedan za drugim, izmedju tih instrukcija izvrši neku drugu ili jednostavno stavi NOP. Ili ako PIC poseduje LATCH registar, izmene raditi preko njega.

Pozdrav.
Sinisha
 
Odgovor na temu

arakis
Filip Dulic

Član broj: 23312
Poruke: 293
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Problem sa pis16f182422.05.2011. u 19:17 - pre 157 meseci
Hvala na odgovorima, radi samo preko LATA,i kad postavim WPUA = 0; i razdvojim operacije i dalje nista, sto se tice opterecenje ono nepostoji, tj pinovi RA0 i RA1 nisu povezani nisacim sem sa voltmetrom, ali izgleda greska je definitivno u gorenavedenom citanju pa upisivanju u isti registar, posto NOP radi. program iznad je koriscen samo da utvrdim gde je greska posto u vecem programu nije hteo nista da mi pise na te pinove.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa pis16f182423.05.2011. u 07:30 - pre 157 meseci
ovaj 16F ima lat zato je bolje da tuces njega direkt ... takodje ta tri setovanka bi kompajler trebalo da optimizuje ... ali da se ne bi oslanjao odradis RA &= 0xF8; i RA |= 7; umesto ta tri setovanja na 0 i tri setovanja na 1... dobijes 70% kraci/brzi kod koji + radi
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Problem sa pis16f182423.05.2011. u 17:37 - pre 157 meseci
Hm, ja bih se odmah odrek'o kompajlera koji bi te 3 uzastopne operacije na istom registru zamenio jednom. Ja računam da pisac kompajlera ne može da predvidi šta sam ja hteo i tako nešto bi bilo, za moje pojmove, nedopustivo. Sa druge strane, računam da znam šta hoću od PIC-a i da znam kako da mu to jasno kažem. Ups, promašio sam temu, omaklo mi se. ;)

Pozdrav.
Sinisha
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa pis16f182423.05.2011. u 18:04 - pre 157 meseci
a=0; b=0; c=0;

to ne sme da "spoji" ali

a=b=c=0; ili a=0, b=0, c=0;

to sme / treba da spoji
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Problem sa pis16f182425.05.2011. u 08:58 - pre 156 meseci
Citat:
bogdan.kecman: ovaj 16F ima lat zato je bolje da tuces njega direkt


Kada PIC nema LATH, problem se rešava definisanjem jedne promenljive nad kojom se vrše sve operacije i onda se njeno stanje prosledi na izlazni registar.

Pozdrav.
Sinisha
 
Odgovor na temu

arakis
Filip Dulic

Član broj: 23312
Poruke: 293
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Problem sa pis16f182425.05.2011. u 17:58 - pre 156 meseci
problem je u tome sto pravi program gde ga koristim nema pravila kad i po kom se redosledu pale i gase pinovi.
tj na pocetku je napisno
#define exit1 RA0
#define exit2 RA1
#define exit3 RA2

i onda dalje u programu razlicite funkcije pozivaju
exit1=1;
exit2=1;
exit3=1;
i ne uvek u ovom redoslodi i ne uvek sve odjednom. e sad da nebi cesljao po kodu i dodavao nop();posle svake komande za dodelu exit#, najlakse resenje mi je bilo da jednostavno na pocetku programa promenim
#define exit1 LATA0
#define exit2 LATA1
#define exit3 LATA2

a asembler ne dolazi u obzir posto je kod prevelik da bi bio pregledan i debagovanje bi trajalo mesecima, a ne minutima ka sto je trenutno u C-u, a na kraju krajeva naviko sam da koristim C, i operacije mi nisu ni mem osetljive ni vremenski osetljive da mi nije potrbno da delove koda pakujem u asembler radi smanjenja prostora i ubrzavanja izvrsavanja programa.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa pis16f182426.05.2011. u 08:41 - pre 156 meseci
kada mcu ima latch na izlazu uvek je pravilno da se koristi isti ... 16F serija uglavnom nema latch na izlazu pa je tu malo cimanje za svaki moras rucno da proveris el ima latch ili ne ... al kad ima - pesma :D ... doduse, em pises C, em kazes "veliki program" .. sta trazis uopste sa 16F .. poskoci na 18F ili dspic .. ista je cena a mnooogo je lakse za rad
 
Odgovor na temu

arakis
Filip Dulic

Član broj: 23312
Poruke: 293
*.mbb.telenor.rs.



+4 Profil

icon Re: Problem sa pis16f182426.05.2011. u 17:12 - pre 156 meseci
da ne otvaram novu temu,

koliko je moguce napraviti buck dc-dc pomocu internih komponenti mcu-a, konkretno pic16f1824

on ima SR LAtch
i 2 komparatora koja me interesuju

ovako sam zamislio
SR latch se moze setvati pomocu clocka samog pica podeljenim sa 4, sto je u slucaju ovog pica 8MZ, mada moze da se i smanji i do 10Khz
i resetovati pomocu komparatora.

komparator 1 bi "citao" na jednoim pinu izlaznu voltazu regulatora. pri preskoku poziva interupt koji ima samo jednu komandu

SRSCKE =0; //ovaj bit propusta clock na set pin RS latch, ukoliko je 0 ne propusta
a pri padanju napona ispod zeljene vrednosti oped bi se javljao interupt sa komandom
SRSCKE =1;

dok bi komparator 2 citao struju sa Rsense i u slucaju prekoracenja direktno resetovao SR latch

naravno izlaz SR-a bi kontolisao prekidacki mosfet u buck topologiji.
ideja je dosla gledajuci semu 78s40 dc-dc IC-a, i ovo u potpunosti objasnjava njegov rad.

razlog ove emulacije jeste da se i napon i struja kontrolisu digitalno preko mcu-a, tako sto bi se preko SPI D/A convertera dovidili referentni naponi na komparatore.

moje pitanje da li su periferije mikrokontrolera, konkretno SR latch i comparatori dovoljno "brzi" da priblizno dobro vrse ovu funkciju.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa pis16f182426.05.2011. u 21:05 - pre 156 meseci
nisu dovoljno brzi, ni blizu ... mnogo ti je bolje da napravis to na nekom cpld-u sa externim komparatorom
 
Odgovor na temu

arakis
Filip Dulic

Član broj: 23312
Poruke: 293
*.mbb.telenor.rs.



+4 Profil

icon Re: Problem sa pis16f182426.05.2011. u 21:54 - pre 156 meseci
hvala
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Problem sa pis16f1824

[ Pregleda: 1489 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

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