Det er altså rarest med 8 bit men du har jo ikke mange pins tilbage til andet sjov.
MPLAB er ikke en C compiler, men snarere en editor kombineret med noget simulerings/brændings værktøj. Men div. C-compilere kan anskaffes og hægtes på MPLAB så i sidste ende kommer det hele til at foregå i MPLAB.
Microchip.com laver iøvrigt ikke compilere til PIC16 serien.
Ups .. så lige du vil skrive på LCD ud fra data modtaget via UART (RS232).
Glem det .. der er ingen UART i en PIC16F84, så den skal laves manuelt med sølle 1K prog. space har du knapt plads til at håndtere displayet. Vælg noget nyere der har en hardware UART onboard. Eller begræns det i første omgang til at lege med displayet uden data ind ude fra.
OK det er fint, uden uart. Hvis du laver sourcen, så kan jeg selv tilpasse det en større PIC, når jeg har styr på LCD kontrollen. Hvis du kan lave nogle gode kommentarer omkring timing(XTAL, andet vigtigt) ville det bare være super. Jeg tror det er der det går galt i mine egne forsøg. PS. Mine PIC'er har en max på 4Mhz
OK. Men prøv lige at se om det er til at skaffe en compiler til formålet. Den "lite" version de har eller andet er det gratis ?
Så skal jeg vide hvilke pins der går til hvad eller rettere et diagram. Meget gerne et link til display datablad. Hvad har du til at hælde programet i den ?
Den er tilmed som jeg læser det ANSI compliant, mere eller mindre da, det tror jeg du vil takke dig selv for senere hen.
Ellers ok med mig.
CCS er sikkert fin nok men de gør meget ud af IKKE at være ANSI tro og det måske nok godt bide sig selv lidt i måsen på længere sigt. ANSI har lavet en standard for bla. C compilere, det kan der siges meget om for og imod men vænner du dig først til en compiler der er ANSI compliant kan du altid gå direkte til enhver C compilere der er ANSI compliant. Lige meget hvilken controller du måtte stå overfor.
Hvad ville du sige til at vælge en større PIC? en 18F4320.
Den har nemlig uart, så kan jeg udvikle direkte vidre på den kode du laver. Hvis du ikke er interaseret i at skifte fra 16f84, så beholder vi bare den.
Meget bedre. 16f84 er totalt outdated jeg fatter ikke hvorfor den sådan hænger fast i folks bevisthed. 18F har også en gratis compiler direkte fra Microchip.
jeps. Jeg har en udemærket programmer, og en stor flok sample chips, så jeg testede lige hvilke der var understøttet. og det er den, så der skulle ikke være nogle problemer.
Lav et diagram over hvor du have LCD til at sidde etc. pas nu på ikke at optage UART pin's rx og tx til det. Lav det sådan at display data pins går direkte D0-portben0 og D7-portben7, kontrol signaler til en anden port der helst ikke er portB den er nemlig unik til taster som du nok gerne vil have på engang.
Nej jeg laver det bare sådan at du kan skifte port som du lyster. Du skal lige have fat i C18 det bliver vel "student version" jeg regner ikke med du vil gi 4.000kr for full version lige nu.
Jeg kender ikke "student version", vi har kun full men jeg mener den eneste begrænsning er lidt mindre effektiv kode når preprocessoren bliver disabled efter 30dage. INternal oscillator har jeg aldrig brugt men det kan der ikke være noget hokus pokus i. Husk at hente databladet til controlleren det er helt basalt vigtigt.
Jah det var egentlig også det jeg ville spørge dig om. Har du fået MPLAB og C18 installeret ?
Vi skal lige have sikret at oscillatoren kører og hvor hurtigt (ca.). Der for har jeg lavet et lille prog. der blinker en LED. Det er kun for at sikrer at den faktisk kører, programmet faktisk kommer rigtigt ind i den og at LED'en blinker i et tempo vi nogenlunde forventede. Jeg sender det lige til morgen tidlig for det ligger på min notebook på arbejde.
Prøv finde frem til hvilket hex format den kan bruge. MPLAB kan genere flere typer det er ikke givet det lige er en din programmer kan lide. "Fuses" er et gammelt udtryk for konfigurations bit.
#pragma config WDT = OFF #pragma config OSC = INTIO2 #pragma config PWRT = ON #pragma config BOR = ON #pragma config PBAD = DIG #pragma config BORV = 42
#define LCDdataPort PORTB //Vælg den port hvor Display data hænger på. #define LCDdataTris TRISB //Ligeså her.
#define LEDpin LATCbits.LATC2 //Her er valgt portC pin 2 #define LEDpinTris TRISCbits.TRISC2 //Der blot at ændre den her til den pin LED'en faktisk er koblet på.
Kan jeg lige få en kommentar: #pragma config WDT = OFF //watchdog #pragma config OSC = INTIO2 //osc type #pragma config PWRT = ON // ?? Power on Timer #pragma config BOR = ON // ?? #pragma config PBAD = DIG // ?? #pragma config BORV = 42 // ??
Desuden er der det problem at LEDPin (RC2) ikke oscilerer - Det syntes jeg da den burde, den bliver holdt høj.
Jeg har valgt oscilator typen til at være den hvor RA6 er osc out, og har et scope på, så jeg kan se den kører.
OK. Jeg kommer med noget display stuff når jeg lige får lidt ro til det en sen nat el.lign. Prøv at hægte displayet på og læg grundigt mærke til hvor du hænger RS, R_W, og enable på uC'en. Baggrund lyset er ligegyldigt, displayet virker uden lyset er tilkoblet.
#define DoEnableDisp DispEnable = 1; //Dette er kun til for at gøre koden mere læsbar. #define DoDisableDisp DispEnable = 0; #define SelectDispReg DispRS = 1; #define DeSelectDispReg DispRS = 0; #define ReadDisp DispR_W = 1; #define WriteDisp DispR_W = 0;
//Testings: #define LEDpin LATCbits.LATC2 //Her er valgt portC pin 2 #define LEDpinTris TRISCbits.TRISC2 //Der blot at ændre den her til den pin LED'en faktisk er koblet på.
Prøv dette her. Jeg kan ikke afprøve det på noget Hardware men det burde virke eller i det mindste sætte dig på sporet. Vær opmæksom på timingen det er jo ISR der styrer det du skal nok have det trimmet sådan at du har et intr. ikke oftere end hver 5mS. Det kan sagtens være langsommere men bliver displayet bare så sløvt.
Jeg må desværre fortælle at min brænder er brændt af, og jeg kan ikke finde fejlen, så projektet kan godt få lange udsigter. men svar, så kigger jeg på det når jeg får en ny.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.