Forum: Mikrocontroller und Digitale Elektronik ATXMega128A1u - Uart Interrupts zu GSM Modul


von Altug T. (altug_t)


Lesenswert?

Hallo,

Habe meinen ATXMEGA128A1U mit einem GSM Modul über COM4 verbunden.

Jetzt möchte ich mit meinem ATXMega128A1U einen AT Command absetzen und 
interrupt-gesteuert die Antwort des GSM Moduls empfangen.

Dazu habe ich mich durch einige Quellen gelesen und einen Code 
geschrieben.

Zuerst die Quellen:
- avrhelp.mcselec.com/index.html?enable.htm
- avrhelp.mcselec.com/index.html?on_interrupt.htm
- avrhelp.mcselec.com/atxmega.htm?zoom_highlightsub=usarte0
- www.g-heinrichs.de/attiny/bascom-avr20manual%20201_11_7.pdf
- www.rowalt.de/mc/avr/avrboard/06/avrb06.htm
- rn-wissen.de/wiki/index.php?title=Bascom_Interrupts

Nun der Code:
1
$regfile = "xm128a1def.dat"
2
$crystal = 8000000
3
$hwstack = 80
4
$swstack = 80
5
$framesize = 80
6
$loadersize = 8192
7
$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014
8
Config Osc = Enabled , 32mhzosc = Enabled , 32khzosc = Enabled , 32khzpowermode = Low_power
9
Config Sysclock = 32mhz , Prescalea = 4 , Prescalebc = 1_1
10
Config Clock = Soft , Rtc = 1khz_32khz_crystosc
11
12
' CPU zu Putty Kommunikation
13
Config Com5 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
14
Open "COM5:" For Binary As #5
15
16
' CPU zu GSM Kommunikation
17
Config Com4 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
18
Config Serialin3 = Buffered , Size = 254
19
Open "COM4:" For Binary As #4
20
21
' Interrupts für SIM 808
22
Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
23
Enable Interrupts
24
On Urxc Ongsmrecieveinterrupt
25
Enable Urxc
26
27
' schreib irgendeinen AT Command ins GSM Modul
28
Print #4 , "AT+ECHARGE?"
29
Print #5 , "written AT command to GSM Module"
30
31
Do
32
nop
33
Loop
34
End
35
36
Ongsmrecieveinterrupt:
37
   Print #5 , "Called the interrupt Routine for the GSM module!"
38
Return

Leider bestätigt sich meine Erwartung nicht: Das Label 
Ongsmrecieveinterrupt wird nicht aufgerufen, während der Schleife des 
Hauptprogramms.

Die LEDS auf dem GSM Modul leuchten eine blinkt alle 3 Sekunden. (SIMCOM 
808)

Warum feuert der Interrupt nicht und führt das Label aus?

von Max M. (maxmicr)


Lesenswert?

Was ist das für eine Programmiersprache? Bascom?

von Altug T. (altug_t)


Lesenswert?

Max M. schrieb:
> Was ist das für eine Programmiersprache? Bascom?

Ja leider. Genau! Das ist Bascom AVR.

von Mario M. (thelonging)


Lesenswert?

Altug T. schrieb:
> On Urxc

Der RX-Interrupt für COM4 wird mit "On Usartd1_rxc" gesetzt.

siehe Seite 15: 
https://www.mcselec.com/index.php?option=com_docman&task=doc_download&gid=248

von Axel R. (Gast)


Lesenswert?

Open for binary as #4 und dann fehlt am Ende ein "\r\n"
Was gibt es da noch, vllt. "Open for text as #4"? Evtl. Option "EOL 
always on" oder sowas?
Dir fehlt hinterm Text/Befehl ein <ENTER> ;)

Sowas mit BASCOM? okay...

StromTuner
1
You can use the serial buffer function Config serialin and Config serialout for COM1 …..COM4.
2
Serial buffer for COM5…COM8 is not supported at the moment.
StromTuner
GSM nimmt ja COM4, alles richtig: aber mit 9600Baud?

StromTuner

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.