PIC EUSART wake-up auto baud rate detection

Gast #2584621
Lesenswert?

Hallo zusammen,

ich habe eine Frage zur EUSART Schnittstelle des PIC12F1822. Diese 
Schnittstelle bietet zum einen das Feature bei Aktivitäten am RX-PIN 
aufzuwachen (mittels WUE-Bit setzen) und zum Anderen die Möglichkeit die 
BAUD-Rate automatisch zu ermitteln indem ein 'U' empfangen wird 
(Stichwort: auto baud-rate detection). Nun verstehe ich noch nicht ganz, 
wie das aufwachen ausgelöst wird. Im Datenblatt ist die Rede von einem 
Break-Character der aus mindestens 10 Nullen bestehen soll. Die Frage 
ist, von welcher BAUD-Rate hängt dies ab. Muss diese bereits gesetzt 
worden sein? Die Idee in meiner Applikation wäre ein Byte mit 10 Nullen 
zu senden und anschließend ein 'U' sodass die BAUD-Rate detektiert wird. 
Ist das möglich und wenn ja was muss ich beachten. Folgende 
Vorgehensweise habe ich bisher erfolglos versucht:
1
void init_eusart()
2
{
3
    CREN = 1;
4
    SYNC = 0;
5
    SPEN = 1;
6
    RXDTSEL = 1;
7
    TRISA5 = 1;
8
    return;
9
}
1
void st_sleep()
2
{
3
    ABDEN = 1;
4
    WUE = 1;
5
    SLEEP();
6
    char x = RCREG;
7
    while(!RCIF && ABDEN && !ABDOVF);
8
    if(ABDOVF)
9
    {
10
        test1();
11
        DelayUs(5000);
12
        test1();
13
    }
14
    else
15
    {
16
        char x = RCREG;
17
        test1();
18
    }
19
    return;
20
}

Die Funktion test1() lässt einen Pin 255 mal toggeln. Momentan toggled 
nichts. Die vereinfachte main():
1
int main()
2
{
3
    init_clock();
4
    init_eusart();
5
    while(1)
6
    {
7
        st_sleep();
8
    }
9
    return 0;
10
}

Quintessens der Frage ist ob für ein Wake-Up die Baud-Rate bekannt sein 
muss.

Vielen Dank für Eure Hilfe.
lowlevel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren