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!
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
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...
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
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...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.