Forum: Mikrocontroller und Digitale Elektronik PIC EUSART wake-up auto baud rate detection


von lowlevel (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.