Forum: Mikrocontroller und Digitale Elektronik ATMega32 und Telit GM862


von Stephan T. (michi123)


Lesenswert?

Hallo, bin der Stephan. 32 und Elektrotechniker.
Bin relativ neu hier und deswegen erstmal Hallo an alle!

Ich hoffe Ihr könnt mir helfen.

Ich möchte gern ein Telit GM862 GSM Modul an einen ATMega32 
anschliessen.
Ich will bei bestimmten Ereignissen eine SMS Senden.

Ich bekomms aber einfach nicht hier.
Ich peil das mit der USART nicht. Hab schon viele Beispiele gefunden, 
aber irgendwie will das nicht in meinen Kopf :-(

Ich hab ein kleines Program geschrieben, darin wird die Schnittstelle 
konfiguriert. Das mit den Registern is mir klar, aber jetz komm ich 
nicht weiter. Wie krieg ich die Daten gesendet und empfangen?

Achja, das Display funktioniert und den Timer brauche ich noch für was 
anderes. Der geht aber auch.

Hier mein Code:


//PORTD.4 = Ausgang GSM Modul Ein/Aus
#include <MEGA32.h>
#include <DELAY.h>
#include <lcd.h>
#include <stdio.h>
#include <math.h>
void init (void);
int TaktZ_1s=0;
int Tatkt_1s=0;
char zeile1[25];
char zeile2[25];


void init (void)
{
 #asm
   .equ __lcd_port=0x18 ;PORTB
 #endasm
    lcd_init(16);
    DDRD=0xff;          // PortD als Ausgang
    DDRC=0x00;          // PortC als Eingang
    SREG=0x80;          // Freigabe Interrupt
    TIMSK=0x04;         // Timer Overflow aktivieren
    TCCR1A=0x00;        // Teiler auf 64
    TCCR1B=0x03;        // Teiler auf 64
    TCNT1=64910;        // 625*16 µs = 0,01 Sekunde, 65535-625=64910
    lcd_clear();

    // USART
    //  8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;     // nur gultig dei 4 MHz

 }

//-------------------------------------------------------------------
interrupt [10] void timer1_overflow(void)  // 10 ms Takt
{
 TCNT1 = 64910;         // 625 * 16 µs = 0,01 Sekunde, 65535 - 625 = 
64910
 TaktZ_1s++;

// 1 Sekunde:

 if (TaktZ_1s==100)     // 100 * 0,01s = 1 Sekunde
 {
  TaktZ_1s=0;
  Tatkt_1s=~Tatkt_1s;
   PORTD.6=Tatkt_1s;
  }


};                      // end timer
//-------------------------------------------------------------------
void main (void)        // Hauptfunktion "main"
{
  init();
  while (1)
  {

  if(PINC.0==1)         // Schalter, GSM Modul ein bzw aus- nur zum Test
  {
   PORTD.4=1;
   lcd_gotoxy(1,1);
   lcd_putsf("GSM Ein");
   }
    else
   {
    PORTD.4=0;
    lcd_gotoxy(1,1);
    lcd_putsf("GSM Aus");
   }


  }
   }

von Michael_SS (Gast)


Lesenswert?


von Stephan T. (michi123)


Lesenswert?

Hallo Michael, besten Dank dafür.

Ich will aber Daten an ein GSM Modul senden und nicht an einen PC.

von Harald N. (harald_)


Angehängte Dateien:

Lesenswert?


von Stephan T. (michi123)


Lesenswert?

Hmm, das bringt mich auch nicht wirklich weiter. Ich will doch nichts 
fertiges kaufen.

Dann muss ich wohl weiter probieren.

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.