EUSART baudrate fråga till en PIC16F690

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: EUSART baud rate fråga till en PIC16F690

Inlägg 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...
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: EUSART baudrate fråga till en PIC16F690

Inlägg 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.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: EUSART baudrate fråga till en PIC16F690

Inlägg 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;
}
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: EUSART baudrate fråga till en PIC16F690

Inlägg 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;
}
Skriv svar