Hjälp med 16F1937

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Hjälp med 16F1937

Inlägg av newbadboy »

Har precis dragit igång ett större (för mig iaf) projekt där jag ska använda ovan nämnd PIC.
Har aldrig använt denna innan så jag tänkte använda denna tråden för att ställa frågor. Använder MikroC kompilator.
Denna mcu har fler funktioner än de jag labbat med innan så jag känner mig jävligt vilse i datablad,register mm

Som första test har jag bara en summer kopplad till RC2 och vill helt enkelt aktivera den en kort stund.

På denna pinne finns seg3/p1a/ccp1/rc2.

har satt den som utgång och satt

LCDCON=0b00000000 för att stänga av segments drivaren.

Men sen reder jag inte ut hur jag stänger av ccp1 och jag fattar inte vad p1a är för ngt.


SCHEMA-> http://www.ladda-upp.se/bilder/nvuqeddljweez/
Senast redigerad av newbadboy 28 maj 2014, 15:26:33, redigerad totalt 1 gång.
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Hjälp med 16F1937

Inlägg av Klas-Kenny »

Både CCP1 och P1A har med CCP-modulen att göra, P1A är en PWM-utgång.

Det normala är att CCP-modulen är avstängd default, så personligen hade jag inte brytt mig om att göra någonting med den.

Men med det du gjort, har du fått igång utgången?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med 16F1937

Inlägg av sodjan »

P1A är en av utgångarna från PWM modulen. Se t.ex sidan 19.
Eller i index längst bak under "P":

Kod: Markera allt

P1A/P1B/P1C/P1D.See Enhanced Capture/Compare/
PWM (ECCP)............................................................ 222
På sidan 222 kallas den PxA eftersom det finns fler (P1A, P2A, P3A).

Om du sökte i databladet efter "P1A" så borde du har hittat det...

CCP1 står för "Capture Compare Pin 1".

Som Klas-Kenny säger så bör det vara avstängt efter reset, men om du vill visa att du har
tänkt på det så kan du ju i alla fall sätta rellevanta register på rätt sätt.
Se sidan 234: "0000 = Capture/Compare/PWM off (resets ECCPx module)"
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Hmmm då borde det ju funka som det är....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med 16F1937

Inlägg av sodjan »

Är det en passiv (som behöver en "signal") eller en aktiv (som
enbart behöver en matningsspänning) summer?
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Det är en aktiv. Direkt den får 5v piper den
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Hjälp med 16F1937

Inlägg av Klas-Kenny »

Hur mycket ström drar den (summern alltså)?

Testat koppla ur summern och bara mäta på utgången med multimeter för att se om du får någon spänning ut?
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Glöm allt jag skrev och jag ber om ursäkt. Jag hade skrivit fel port hade. Nu funkar det.

Kommer säkert fler puckade frågor ;)
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Ja nu har jag fått tag på alla prylar och även fått displayen monterad. Nu kommer alltså i mitt tycke det svåraste, att sätta alla register rätt :(...

Till att börja med behöver jag ha hela PORTA till IO pinnar för att kunna skicka data till displayen. Men jag vet inte vilka funktioner som behöver stängas av... ADCON0=0 är det enda jag satt men det räcker inte.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med 16F1937

Inlägg av sodjan »

Kapitlet "12.2 PORTA Registers" i databladet har det du behöver.
Kolla speciellt "12.2.1 ANSELA REGISTER" !

Hur kom du fram till att det var ADCON0 du skulle "cleara" ?!
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

ska kolla tack.


"
15.2.1 STARTING A CONVERSION
To enable the ADC module, the ADON bit of the
ADCON0 register must be set to a ‘1
"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med 16F1937

Inlägg av sodjan »

Aha, OK... :-)

Ja, där står ju sådant som gäller ADC enheten i allmänhet.
12.2 har det som gäller som gäller för PORTA specifikt.
Som sagt, ANSELA är det som du letade efter... :-)

Byt ut "ADCON0=0" till "ANSELA=0".
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Som sagt, det är en djungel. Ska prova ikväll
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Och nu verkar min hårddisk ha gått sönder. Jävla smäckkkk... Skulle precis prova..
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Nu har jag fått igång lite grejer :)


Så nu till min testkod. Jag försöker toggla hela port a men den är noll hela tiden. Så det måste vara ngt som inte stämmer. Utgången som heter katod togglas som det ska utan problem. Så programmet snurrar iaf

Kod: Markera allt

/*
Manöverpanel till fjärrvärme Pic16F1937, intern 8MHz OSC, extern MCLR

*/

#define BUZZ PORTC.F3                                                                   //Name ports
#define SERVO PORTD.F1
#define KATOD PORTC.F2
#define PWM PORTD.F1

 int k=0;

//LCD module connection
sbit LCD_RS at RA0_bit;
sbit LCD_EN at RA1_bit;
sbit LCD_D4 at RA2_bit;
sbit LCD_D5 at RA3_bit;
sbit LCD_D6 at RA4_bit;
sbit LCD_D7 at RA5_bit;

sbit LCD_RS_Direction at TRISA0_bit;
sbit LCD_EN_Direction at TRISA1_bit;
sbit LCD_D4_Direction at TRISA2_bit;
sbit LCD_D5_Direction at TRISA3_bit;
sbit LCD_D6_Direction at TRISA4_bit;
sbit LCD_D7_Direction at TRISA5_bit;
//End LCD module connection



void main() {

TRISA=0b00000000;                                                                       //Set port direction
TRISB=0b00110011;
TRISC=0b11000000;
TRISD=0b00000000;
TRISE=0b00000000;

LCDCON=0b00000000; 
ANSELA=0;
ADCON0=0;

while(1){
KATOD=1;
PORTA=1;
delay_ms(500);
KATOD=0;
PORTA=0;
delay_ms(500);
}

}
Skriv svar