Uart försök med 12F1840

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mr Andersson
Inlägg: 1397
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Uart försök med 12F1840

Inlägg av Mr Andersson »

En delimiter är en avgränsare mellan olika "saker", i ditt fall strängar.
Om du t.ex. har "test" som delimiter och skickar in "123test" så kommer du få "123" i output. Skickar du "123456" kommer du inte få någon output alls eftersom delimitern inte finns med.
Shimonu
Inlägg: 295
Blev medlem: 21 oktober 2015, 22:44:33

Re: Uart försök med 12F1840

Inlägg av Shimonu »

Precis, delimiter är något som delar upp en mängd. Säg att du väl göra en enkel lista av siffror 1,2,3,4,5,6,7,8. Då kan du ange komma(',') som delimiter och få ut en Array av tal istället. Eller i ditt fall så läser du in tecken tills en delimiter dyker upp. Det är relativt vanligt att ha radbrytningstecken som delimiter då man i vissa fall skickar med ett enterslag.

Så du skulle kunna skicka något som "test\n" och sen ha "\n" som delimiter. Då får du ut "test"
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Ofan. Då hade jag missuppfattat helt vad den är till för. Ska prova imorgon och göra rätt delimiter. Återkommer.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Uart försök med 12F1840

Inlägg av Icecap »

En delimiter är ett "här tar texten slut"-tecken/sekvens. Om du använder t.ex. Enter kan den vara \r.
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Det funkar fint nu med en kabel mellan TX ocg RX pic. Kopplade nu istället på 433Mhz moduler och det missar första pulsen så hela paketet blir korrupt. Finns det ngn allmän praxis att lösa detta?

RX Koden nedan är den som funkar bra med kabel.

Kod: Markera allt

#define  OUT LATA.F2
char uart_rd[15];

void main(){

  TRISA=0b00000010;
  ANSELA=0b000000000;
  C1ON_bit=0;
  SRLEN_bit=0;
  UART1_Init(9600);
  delay_ms(100);


    while(1){
             OUT=0;
             if(UART1_Data_Ready()==1){
               UART1_Read_Text(uart_rd, "\n",255);

                if(uart_rd[0]=='K')
                   if(uart_rd[1]=='a')
                     if(uart_rd[2]=='r')
                       if(uart_rd[3]=='o')
                         if(uart_rd[4]=='l')
                           if(uart_rd[5]=='y')
                             if(uart_rd[6]=='S')
                               if(uart_rd[7]=='i')
                                 if(uart_rd[8]=='m')
                                   if(uart_rd[9]=='o')
                                     if(uart_rd[10]=='n'){
                                     OUT=1;
                                     delay_ms(100);
                                     }
                }
              }
           }



CH1 TX
CH2 RX
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Uart försök med 12F1840

Inlägg av Icecap »

newbadboy: Vilka 433MHz moduler?
Om det är de billiga skitmoduler från t.ex. K&C är du tvungen att skicka lite synkroniseringstecken först och sedan ett tecken som betyder "slut på synkroniseringen, nu kommer det data på riktigt".

Självklart ska man lägga till en checksum osv. då de moduler jag tänker på är så usla att det inte går att säkerställa vettig kommunikation.
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

jepp de billigaste kina modulerna
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Kan inte riktigt se framför mig hur jag ska gå tillväga. Putta mig i rätt riktning....
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Uart försök med 12F1840

Inlägg av Magnus_K »

Är säkert ute och snurrar nu men signalerna vi ser på dina bilder är alltså skickad och mottagen data? Är det en MCU som pratar med en annan via två 433-moduler alltså?
Det kan inte vara så att du ligger fel på någon enhet med hur serieklockan står vid initieringen, dvs idle hög/låg?

Kan du länka till modulerna du köpt?
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Här är modulerna jag använder

http://www.dx.com/p/diy-433mhz-wireless ... ion-446975

Vad jag kan se är sändar sidan ch1 hög när ingen signal skickas dvs är idle. Mottagarsidan är däremot låg i idle mode. Så den går hög först när den tagit emot en uppåtgående flank vad jag kan se. Sedan börjar den följa sändar signalen men som sagt första pulsen som också är data missar den ju då den ser den som ngn enable signal. Detta är min analys men det kanske är fel
Rätt lökigt kan man tycka. Jag har provat med pullups men den är driven låg när ingen signal finns.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Icecap skrev:newbadboy: Vilka 433MHz moduler?
Om det är de billiga skitmoduler från t.ex. K&C är du tvungen att skicka lite synkroniseringstecken först och sedan ett tecken som betyder "slut på synkroniseringen, nu kommer det data på riktigt".

Självklart ska man lägga till en checksum osv. då de moduler jag tänker på är så usla att det inte går att säkerställa vettig kommunikation.

Vilka moduler tänker du på som är bättre?
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Uart försök med 12F1840

Inlägg av Icecap »

Det ska ställas ett DC-nivå i data-slicern och drt görs vid att skicka ett antal tecken med 50% DC-nivå, t.ex. 0x55. Drt behövs 5-20 tecken av dessa innan nivån är på plats.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Uart försök med 12F1840

Inlägg av Magnus_K »

Kan kika mer på det i kväll men ditt problem känns kanske mer relaterat till start-bit.
Fungerar allt som det ska om du lägger till en nolla som start-bit, framför din data?
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Har inte provat med nolla.
Menar du att jag ska skriva uart('0')? Ellet sätta pinnen 0 som en gpio om det ens går när jag konfat den som uart?
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Uart försök med 12F1840

Inlägg av newbadboy »

Icecap skrev:Det ska ställas ett DC-nivå i data-slicern och drt görs vid att skicka ett antal tecken med 50% DC-nivå, t.ex. 0x55. Drt behövs 5-20 tecken av dessa innan nivån är på plats.

Oj. Är inte med vad data slicer och drt är. Fattar dc nivå m en det är nog allt jag fattar
Skriv svar