PIC Behaving mærkeligt

R

rpisharody

Guest
Jeg skrev følgende kode på CCS C compiler til at teste en PIC16LF877A ..

void main () (
set_tris_a (0xFF); set_tris_b (0x00); set_tris_c (0x00);

while (1) (
output_bit (PIN_B1, 1);
output_bit (PIN_B2, 0);
)
)

Kan nogen påpege, hvad der er galt i denne kode?

Reagrds,
Rahul

 
Hvad gør du tror, at koden er forkert?

Hvad er den mærkelige adfærd PIC?

Skål,

 
en historie, ingen tvivl om historie, ingen konklusion i slutningen af historien.

nogen måde!

Problemet kan være i banken / page valg!

i din kode, er der ingen bank udvælgelse linje >>>>>>>>>

Jeg er ikke C-programmør for pic, men jeg gætter.

Port A = inputport
havn c = output port
port b = output port

 
Jeg tror ikke, at skrive i C kræver bank switching.

og koden er forkert, fordi du bruger funktioner som ikke ...noget (; men sandsynligvis du ikke ved hvad. hvad er formålet med at skrive set_tris (), hvis du kan gøre det samme ved blot at skrive: TRISx = 0x00 (naturligvis kun, når oversætteren ikke er så dum at forbyde at). Det samme gælder for tildeling af nogle værdier for havne.

0x41 0x56 0x45!

 
namqn,

Jeg er ikke sikker på, at koden er forkert.Nogen påpegede, at koden kan være forkert.Så jeg tænkte at jeg hellere vil sende koden her, så nogen kan påpege de fejl, hvis der er.Som i den mærkelige adfærd, er PIC ikke tænde en LED forbundet på pin b1.Det er normalt tilfældet, hvis skrevet på denne måde, som jeg har gjort det tidligere.Men jeg er ny til C. Jeg har prøvet både grundlæggende og samling til en vis grad.

manish12,

Sorry for den underlige format spørgsmålet!Jeg var en smule travlt og så ikke tænke på disse ting, mens udstationering dette her.Mange tak for din tålmodighed til at læse og forstå dette!Som "Freddie Chopin" påpegede, ingen bank udvælgelse er nødvendig i CCS C.

Freddie Chopin,

Som jeg tidligere har sagt jeg er ny til PIC programmering i C. Så jeg lære de funktioner, som det er påkrævet.Jeg fandt ud af set_tris_x () funktion fra CCS C produkt manual og jeg bruger det.Så jeg tror det er rigtigt?Tak for besvarelse.Jeg vil prøve, hvad du foreslog.dvs, at skrive "TRISx =".I den mellemliggende tid, kan du tænke på noget andet sandsynlige fejl i forbindelse med arkitektur eller noget?

 
Prøv dette

Kode:

void main ()

(

set_tris_a (11111111); / / 1 til input og 0 for udgang, det er nemt at huske

set_tris_b (00000000);

set_tris_c (00000000);while (1) (

output_high (PIN_B1);

output_low (PIN_B2);

)

)
 
Jeg har ikke brugt tris_x (11111111) format.
Men jeg har prøvet output_high () funktion.Jeg ved ikke, om det er årsagen, men når jeg gør det, gør det PIC ikke lyse op den førte.Men hvis jeg trækker Vss forbindelsen og sætte det rght tilbage, LED lyser op!!

Nogen idé?
Og er der nogen tror på noget thats dårligt konfigureret i programmet?

 
hvis du kender forsamling, ville det være nemt for dig at kontrollere demonteringen notering og kontrollere, om det ser godt ud.

0x41 0x56 0x45!

 
Hej,
wrong with the original code.

Der er intet
galt med den oprindelige kode.Hvis du ikke har en # USE_FAST_IO erklæring i din kode, den foregående set_tris_x () er ikke necesarry at køre pin B1 og B2.

Som en supplerende bemærkning, får det ingen synlig indsats for at gentage output_bit ()-funktionen i en løkke.

as well.

Hvis du ønsker at stoppe yderligere PIC indsats på dette punkt, kan du bruge en tom, mens (1) ();
også.Eller lave et simpelt program, der skaber en vekslende LED-indikator:
Kode:

while (1) (

output_bit (PIN_B1, 1);

output_bit (PIN_B2, 0);

delay_ms (500);

output_bit (PIN_B1, 0);

output_bit (PIN_B2, 1);

delay_ms (500);

)
 
Tak Frank, for din flotte svar.
Desuden vil jeg gerne vide, hvad er de indre sikringer, at du talte om at gøre
PIC arbejde??

 
sikringer er et begreb, siger, at FVM sandsynligvis bruger AVR [; i PICs der er nogle konfiguration bytes / ord i den øvre programhukommelsen plads specifikke for hver familie og model af UC.de definerer sådanne ting som udvalgt oscillator, funktion MCLR pin, Low Voltage programmering osv. tjekke manualen for din compiler og datablad for din PIC for detaljer.

0x41 0x56 0x45!

 
Mikrochip, der anvendes til at kalde dem fuse bits på den gamle OTP dele.Som som en lunte, når de blev blæst kunne de ikke blive nulstillet.Nu er de blot kaldte config bits, de blot forudindstille microcontroller med magt op defaults.(dvs. oscillator type, Brownout, WDT etc. ..)

 
Hej,
keyword to define Microchip configuration bits, cause Rahul uses CCS.

Jeg var især henvise til CCS PIC-compiler, der har en # sikringer
søgeord til at definere Microchip konfiguration bits, forårsage Rahul bruger CCS.Du er korrekte så vidt, at jeg bruger PIC kun blandt andre processorer, herunder AVR.Således Jeg tænkte ikke CCS bruger et udtryk ualmindeligt at Michrochip.Men i modsætning ved jeg, om CCS compiler og betydningen af PIC specifikke indbyggede funktioner.

Der er nogle få mulighed bits afgørende for et design, fx udvælgelse af oscillatorer konfiguration, vagthund aktivering, funktion MCLR pin.Andre beskæftiger sig med særlige karakteristika, der ikke ville forhindre et design fra drift, f.eks Brownout detektor tærskel, start timer.Nogle er enheden eller familie specifikke, Microchip dokumentation samt CCS online hjælp fortæller om deres funktion i detaljer.

Normalt kan man bruge # sikringer indstilling fra et CCS eksempel program som skabelon (Jeg starter som regel med indstillingerne fra en tidligere PIC-design) og overveje, hvilke ændringer der kunne være relevant for det nye design.

Jeg tror ikke, at forkert henholdsvis manglende # sikringer indstilling er meget sandsynligt, at skabe problemer i Rahuls design, jeg ville bare nævne det som en betingelse, som skal tjekkes.

Hilsen,
Frank

 
rpisharody skrev:

Jeg skrev følgende kode på CCS C compiler til at teste en PIC16LF877A ..void main () (

set_tris_a (0xFF); set_tris_b (0x00); set_tris_c (0x00);while (1) (

output_bit (PIN_B1, 1);

output_bit (PIN_B2, 0);

)

)Kan nogen påpege, hvad der er galt i denne kode?Reagrds,

Rahul
 
Faktisk sker der ingenting.Det er th problem.Men når jeg trækker ud i marken, LED lyser op på et meget svagt lys.Når jeg lægge den tilbage, til tider, det førte kan glød.

Jeg prøver det igen i morgen.
I mellemtiden pls hjælp mig, hvis der er noget galt ...

 
Hej,

ikke ved, hvor du "trække ud i marken", men sandsynligvis processoren er ikke udfører din kode, ikke indstilling af havne til produktion, ikke at sætte den højt eller lavt, osv.

Nogle spørgsmål til at gå videre fra de endeløse diskussion:

Hvad er din programmering miljø?
Hvordan ved du, at din kode er blevet hentet til flash?
Hvordan ved du, at processoren er i brug (f.eks har et ur), og er fuldbyrdende din kode?
Er du i stand til enkelt skridt afvikling af kode med ICD?
Har du en evne til at gøre noget elektroniske målinger, fx have et multimeter til at kontrollere levere niveauer eller en oscolloscope til at se signal bølgeformer?

Hilsen,
Frank

 
Jeg bruger CCS C compiler indefra MPLAB til program, som jeg absolut hader deres CCS IDE.
Faktisk har jeg ikke vide, om processoren er i drift.Men det bliver ordentlig VDD og VSS.Jeg selv målte ouput spænding af pin beregnet til at være høj.Det viser omkring 2,2 volt.Men det er alligevel ikke lyser den LED.Måske det har en lav nuværende produktion.Jeg er ikke sikker.I'd tvivl om arbejdet med det programmør jeg bruger.Dens en Xeltek 280U Programmer.Der er rygter om her i mit kollegium, at det ikke er ordentligt arbejde.Men ingen har faktisk forsøgt at se det, om det faktisk fungerer eller ej.Igen den samme programmør arbejdet for mig sidste år.Men jeg brugt PICBASIC at programmere og min chip var en PIC16F84A.Jeg deaktivere Brown ud sikringerne i programmør.Jeg vælger HS oscillator for Xtal af 4MHz, simpelthen fordi, sidste år Xtal osc.valgmulighed i den programmør didn't work for me.

Jeg har ikke prøvet enkelt styrke med ICD, men som jeg sagde, havde jeg brug Oshonsoft's PIC Simulator til at simulere.Det virkede fint i sim.Jeg prøver igen i morgen.Så vil komme tilbage i dag sig selv, ok?

Hilsen,
Rahul

 
Din C-kode ikke indstille config sikringer, så de ansvarlige personer er misligholdelse RC ur.Kig på # pragma erklæring til et fingerpeg.
PS Simulatorer ikke simulere oscillator og altid køre.

 
Hej alle,

Jeg kunne ikke få adgang til internettet i løbet af en uge på grund af maintanence her.Thats hvorfor forsinkelsen.
I sidste uge, købte jeg en ny PIC og testet koden.Det er ikke i orden.plus, ingen sinusbølge er der hele Xtal.Jeg vil prøve igen i morgen med forsamling.
vil melde tilbage.
Tak til alle

Hilsen,
Rahul

 

Welcome to EDABoard.com

Sponsor

Back
Top