ATMega32 und Telit GM862

OP #2242270
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");
   }


  }
   }
#2243490
Lesenswert?

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren