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:

Re: Hjälp med 16F1937

Inlägg av newbadboy »

Bra tips, ska prova under dagen..... Får se om det blir bättre. Visste inte ens att det fanns en timer kalkylator :-)
Användarvisningsbild
SeniorLemuren
Inlägg: 8427
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Hjälp med 16F1937

Inlägg av SeniorLemuren »

Detta program är testat i Proteus och fungerar.

Kod: Markera allt

//Timer0
// Prescaler 1:256; 
// TMR0 Preload = 58; 
// Actual Interrupt Time : 199,688 ms
// Pocessorclock 1.0 Mhz
// µC PIC16F1937
// INTOSC oscillator


     void InitTimer0(){
         OPTION_REG	 = 0x87;
         TMR0		 = 58;
         INTCON	 = 0xA0;
     }

     void Interrupt(){
          if (TMR0IF_bit){
            TMR0IF_bit    = 0;
            TMR0       = 58;
            //Enter your code here
            RD0_bit = 1 ;
            delay_ms(80);
            RD0_bit = 0 ;
            delay_ms(80);
          }
     }


void main(){

     TRISA=0b00000000;
     TRISB=0b00000000;
     TRISC=0b000000;
     TRISD=0b00000000;
     TRISE=0b00000000;

     INTCON=0b10111000;
     OPTION_REG=0b00000111;

     ANSELA=0;
     ANSELB=0;
     
     while(1){
     //for ever loop
     }
 }

Att inte timerinteruptet fungerade berodde på att du satt bit 5 i OPTION_REG till 1.

Kod: Markera allt

[code]bit 5
TMR0CS: Timer0 Clock Source Select bit
1 = Transition on T0CKI pin
0 = Internal instruction cycle clock (FOSC/4)
[/code]
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 »

Har fått igång det nu tack vare er och timer kalkylatorn.. Pwm utgången är perfekt.. Däremot fick jag en spännande feature. Har en annan pinne på port d som styr en fet så jag kan fimpa matningen till servot. Denna porten kan man säga togglas ihop med pwm utgången fast med en helt annan duty cycle... Men det får bli en utmaningen ngn annan dag.. Det är liv i skiten och nu ska jag ta en paus :-)
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 »

Det finns ett fenomen som kallas "read-modify-write".
När man ändrar en enstaka pinne i en port (t.ex PORTD) så sker detta:

- Hela PORTD läses direkt från det register som återspeglar själva pinnarnas läge.
- Den aktuella pinnen ändras.
- Hela PORTD skrivs tillbaka, d.v.s alla 8 bitarna (eller hur stor PORTD nu är).

Det som kan inträffa är att en enstaka pinne drivs utifrån till ett läge som inte
motsvarar det man tror att den har (d.v.s det som senast skrivs till PORTD)
och när PORTD återskrivs så kommer detta att bli det nya läget.

Det du ska se till är att pinnen som driver FET'en alltid är satt till utgång och att
det inte finns något som hårt driver pinnen utifrån. Om du ibland ställer om pinnen
till ingång, så måste det finnas pullup (eller down) motstånd så att pinnen inte "flyter".

Lösningen på de nya PIC16F1xxx modellerna är att alltid skriva till LATx (t.ex LATD)
och läsa från PORTD.

En enkel test är att byta ut #define SERVO PORTD.F1 till #define SERVO LATD.F1

Se även:
http://www.mikroe.com/download/eng/docu ... lp/rmw.htm
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 »

Jisses, ska kolla, tack för tipset. Ibland undrar jag om det inte varit bättre att ha matlagning som yrke och hobby. ....
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 »

Provade igår kväll lite snabbt och det verkade funka.. måste prova mer under veckan för att övertyga mig själv... Men en fråga. På länken du skickade fr Mikroe så står det att LATB används till PIC18, inte till PIC16.. nu verkar det som sagt fungera men ändå....
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 »

Det var en an nyheterna när PIC16F1xxx ("Enhanced Midrange") serien kom
för 2-3 år sedan. Tidigare saknades direkt tillgång till "output latches", de
fanns så klart i processorn, men de var inte mappade som ett register som
man kan läsa direkt från koden.

Och ja, sidan har alltså inte blivit uppdaterad på några år.
Ett typexempel på hur en för övrigt bra information kan bli
missvisande enbart därför att den inte underhålls...
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 »

Ahhh, det förklarar saken ;-)
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 ser det ut som projektet snart är färdigt och koden funkar finemang just nu iaf. Tack för hjälpen
Skriv svar