Sida 2 av 5
Re: Uart försök med 12F1840
Postat: 21 november 2016, 15:25:55
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.
Re: Uart försök med 12F1840
Postat: 21 november 2016, 15:30:08
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"
Re: Uart försök med 12F1840
Postat: 21 november 2016, 16:25:10
av newbadboy
Ofan. Då hade jag missuppfattat helt vad den är till för. Ska prova imorgon och göra rätt delimiter. Återkommer.
Re: Uart försök med 12F1840
Postat: 21 november 2016, 17:34:39
av Icecap
En delimiter är ett "här tar texten slut"-tecken/sekvens. Om du använder t.ex. Enter kan den vara \r.
Re: Uart försök med 12F1840
Postat: 28 november 2016, 10:09:25
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
Re: Uart försök med 12F1840
Postat: 28 november 2016, 12:17:58
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.
Re: Uart försök med 12F1840
Postat: 28 november 2016, 13:27:20
av newbadboy
jepp de billigaste kina modulerna
Re: Uart försök med 12F1840
Postat: 2 december 2016, 14:27:48
av newbadboy
Kan inte riktigt se framför mig hur jag ska gå tillväga. Putta mig i rätt riktning....
Re: Uart försök med 12F1840
Postat: 2 december 2016, 18:45:49
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?
Re: Uart försök med 12F1840
Postat: 4 december 2016, 10:28:45
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.
Re: Uart försök med 12F1840
Postat: 4 december 2016, 10:52:31
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?
Re: Uart försök med 12F1840
Postat: 4 december 2016, 11:19:12
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.
Re: Uart försök med 12F1840
Postat: 4 december 2016, 11:45:39
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?
Re: Uart försök med 12F1840
Postat: 4 december 2016, 12:12:53
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?
Re: Uart försök med 12F1840
Postat: 4 december 2016, 12:14:02
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