Sida 2 av 2

Re: EUSART baud rate fråga till en PIC16F690

Postat: 25 september 2016, 19:28:52
av Magnus_K
Berättigad fråga, och tyvärr är svaret ja.

TRISB = 0b00010000; och DT/CK är RB5 & 7.

Har också testat att sänka/ändra baudrate, utan framgång.

EDIT: Nu verkar det lira. Finns en risk att det fungerat hela tiden men jag har bara inte insett vilken fart datan klockas över med om jag släpper "baud rate generatorn" lös.
Just nu klockar den data med 2 MHz... liiiiiiiiiite för snabbt. Tyvärr innebär det här att det är något annat som orsakar mitt displayproblem. Återkommer säkert...
EDIT2: Nej, ska nog hålla mig så långt bort från allt som kallas för programmering. Undra hur många av mina skitprojekt som bara ligger pga att jag inte får ihop programmet...

Re: EUSART baudrate fråga till en PIC16F690

Postat: 6 oktober 2016, 15:55:17
av vfr
Det är bara att kämpa på, Magnus! Man lär sig bit för bit. Du ska inte ge upp programmeringen när du verkar ha många intressanta ideer.

Re: EUSART baudrate fråga till en PIC16F690

Postat: 10 oktober 2016, 05:43:58
av Magnus_K
Tack för att du hejjar på! :tumupp:
Fick till slut lägga ner idén med syncron överföring då jag läste det här i databladet: "Only as many clock cycles are generated as there are data bits"
Med andra ord var det en dålig idé att försöka kommunicera med ett shift-register på det här sättet, då jag alltid måste klocka in 8 bitar...

Det löste sig ändå med en mjukvarulösning som någon här lärde mig. Enligt nedan. Väldigt smidigt och snabbt måste jag säga!

Kod: Markera allt


for(j=0;j<=7;j++) {                            //Manually shift segmentbits to shift register
    if(segmentData & (1<<j)) {
      DATA = 1;
      DATA_CLK = 1;
     } else {
      DATA = 0;
      DATA_CLK = 1;
      }
DATA = 0;
DATA_CLK = 0;
}

Re: EUSART baudrate fråga till en PIC16F690

Postat: 10 oktober 2016, 10:36:45
av lillahuset
Så här skulle jag göra. NOPen för att ge lite setuptid.
Om du har optimering påslagen kan du drabbas av att instruktionerna byter ordning.

Kod: Markera allt

for(j=0;j<=7;j++) {                            //Manually shift segmentbits to shift register
    DATA_CLK = 0;
    if(segmentData & (1<<j)) {
      DATA = 1;
     } else {
      DATA = 0;
    }
    NOP;
    DATA_CLK = 1;
}