Forum: Mikrocontroller und Digitale Elektronik Verständnisproblem BTM 222 - PIO 7 am µC einlesen


von Anfänger (Gast)


Lesenswert?

Hallo,

ich habe ein BTM 222 (Bluetoothmodul) am laufen. Jetzt ist es so das es 
dort einen Pin gibt, der mir anzeigt ob das BTM verbunden ist oder 
nicht. Ist es nicht verbunden schaltet das BTM den Pin im Wechsel High 
und Low. Ist es verbunden ist der Pegel Low.

Jetzt habe ich einen XMega32A4 (Pin E0) an die Leitung geklemmt und 
wollte mit dem Pin als Eingang diese zwei Pegel auslesen und damit eine 
LED schalten. Das Problem ist jetzt aber, dass der Pegel offenbar nicht 
richtig erkannt wird. Schalte ich den Pullup vom Pin dazu ist der Pin 
dauerhaft 1, schalte ich den PullDown dazu ist der Pin dauerhaft 0.

Ich bin bisher davon ausgegangen, dass der Pin die Pegel (auch ohne 
Widerstände) erkennen kann und entsprechend ausgelesen werden kann. Das 
ist offensichtlich nicht der Fall.

Kann mir da vielleicht jemand einen Denkanstoß geben bzw. meinen Fehler 
aufzeigen?

Vielen Dank schonmal!

von Bernd (Gast)


Lesenswert?

Hallo!

Also ich habe mit diesem Modul noch nie etwas gemacht, aber ich habe mir 
gerade das Datenblatt angesehen und dort steht nichts von einem Pin der 
geschalten wird bei verbunden bzw. nicht verbunden. Es gibt lediglich 
eine Data Status LED und eine Link Status LED, die 3x blinken nachdem 
Neustart.
Ich glaube, du verwechselst etwas...

MfG

von Florian F. (flofri)


Lesenswert?

Hallo,

jetzt mit angemeldetem User.

Also ich denke das es zwei oder mehr Versionen des Datenblattes gibt. 
Ich habe ein aktuelles (glaube ich zumindest) und dort steht das PIO 7 
das oben beschriebene Verhalten hat. Es kann nur sein, dass bei 
Verbindung dauerhaft High ausgegeben wird.

Wenn ich den BTM Pin gegen GND messe dann bekomme ich im Messgerät auch 
eine schwankende Anzeige (High / Low). Nur irgendwie kommt diese 
Information nicht im Xmega Pin an...

von Bernd (Gast)


Lesenswert?

Hallo!

In meinem Datenblatt steht zu PIO7:
" Programmable I/O terminal, (Drive Link status led, active high, it 
will
flash 3 times when it reboot)".

Wenn du diesen Pegelwechsel mit dem Multimeter messen kannst, dann wird 
es wohl so sein wie du sagst. Poste bitte mal deinen Code zum Auslesen 
des Pins.

MfG

von Florian F. (flofri)


Lesenswert?

Hi,

also ich habe bereits ein gekauftes Modul hier und dort ist PIO 7 mit 
einer LED und einem R gegen GND verbunden. Es blinkt solange bis das 
Modul verbunden wurde. Nur würde ich diese Informationen eben im µC 
haben...

Also zum Code:
1
int main(void)
2
{
3
4
      PORTE.DIR=0b00000000;      // Alle Pins des PORTF werden als Eingang definiert
5
6
      PORTA.DIRSET=0xFF;      // Alle Pins des PORTE werden als Ausgang definiert
7
      PORTA.OUTSET = 0xFF; //High Pegel an allen Pins von PORTA
8
9
  while(1)
10
  {
11
12
      _delay_ms(100);
13
14
    //Vereinfacht, habe nur PE0 dran
15
    if(PORTE.IN>0){
16
17
18
      PORTA.OUTSET = 0xff; //Von High auf Low schalten
19
20
    }else {
21
22
      PORTA.OUTCLR = 0xff; //Von Low auf High schalten
23
24
    }
25
26
27
  };
28
};

Mein Problem besteht aber schon in der Wahl der richtigen Konfiguration 
für den Eingangspin...

von Bernd (Gast)


Lesenswert?

Hallo!

Also dein Code sieht sehr merkwürdig aus, leider arbeite ich nicht mit 
AVRs aber ein Hinweis. Die LED ist nachdem das Modul eine Verbindung 
hergestellt hat, dauerhaft ein(leuchtet). Das bedeutet, der Pin (PIO7) 
ist dann auf "1" geschaltet.

Erklär mir auf welchen Port hast du denn die Leitung PIO7 gelegt? auf 
PE0?
Und wo greifst du diese Leitung ab? Vor der Diode(Anode) oder auf der 
Kathode?
Deine Abfrage müsste irgendwie lauten:
1
if (PORTE.IN & PIN0) {
2
 /* Pin ist auf High tu etwas... */
3
} else if (!(PORTE.IN & PIN0)
4
 /* Pin ist auf Low tu folgendes... */
5
6
}

MfG

von Florian F. (flofri)


Lesenswert?

Hallo Bernd,

ich glaube das Problem liegt beim Abgreifen. Der Code soll folgendes 
machen: Wenn PE0 = 1 dann schalte PORTA auf High (ist auf Ausgang 
gestellt). Das schaltet dann die dort vorhandene LED an. Ich habe 
jeweils an Port A und E nur einen Pin in Benutzung. Daher die 
Massenkonfiguration für alle Pins der Ports.

Abgriff:

 BTM[PIO7] |--------------| XMega[PE0]

Irgendwie will sich kein ordentlicher Pegel am PE0 einstellen. Kein High 
und kein Low...

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.