ATmega328p-PU mit 8MHz Quarz und SIM800L-Modul gibt keinen Anruf aus

Hallo Zusammen,
ich habe ein ATmega328, den ich den Sleep-Mode versetze und dann durch ein Input aufwecke, um einen Anruf auszugeben. Das ganze soll sehr stromsparend sein, da es direkt mit einem Lithium Akku betrieben wird und möglichst lange durchhalten soll. Leider bekomme ich keinen Anruf. Hat jemand einen Tipp? Kann es Probleme mit dem 8MHz Quarz und der Baudrate geben?

#include <avr/sleep.h>
void setup() {
pinMode(2, INPUT);
Serial.begin(9600);
}

void loop() {
Serial.println(digitalRead(2));
Serial.println("Leg mich mal hin..");
delay(80);
// Aktiviere Interrupt auf Pin2 (Interrupt 0) mit Handler isr_pin2():
attachInterrupt(0, isr_pin2, HIGH);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_mode();
// Hier gehts nach dem Schlafen weiter:
if(digitalRead(2)==HIGH)
{
Serial.println("OK");
delay(1000);
Serial.println("ATD+4915165142224;");//add target mobile number in place of xxxxxxxxxx
delay(20000);
Serial.println("ATH");
delay(1000);
}
}

void isr_pin2() {
// Deaktivieren des Interrupts, damit er nicht dauernd wieder triggert
detachInterrupt(0);
}

Einen Sketch fügt man hier mit Code-Tags ein, nicht mit Quote-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Hast du denn dein SIM800L schon eigenständig geprüft, ob Anrufe ankommen ?
Bucht dein GSM sich auch im Netz ein ?

Edit:
Wenn du einen 8 MHz Quarz verwendest, hast du auch den richtigen Bootloader drauf ?

Alles klar, danke für den Tipp.
Ich konnte mit dem originalen Chip (wurde mit 16MHz und Uno Bootloader geliefert) gute Ergebnisse erzielen, Anrufe gingen sehr zuverlässig raus. Anhand der LED sehe ich auch, dass er im Netz eingewählt ist. Ich habe den Arduino Mini Pro Bootloader 3,3V hochgeladen, das hat auch ohne Probleme funktioniert und das Quarz erzeugt auch die 8MHz.

Matthias321:
Alles klar, danke für den Tipp.
Ich konnte mit dem originalen Chip (wurde mit 16MHz und Uno Bootloader geliefert) gute Ergebnisse erzielen, Anrufe gingen sehr zuverlässig raus. Anhand der LED sehe ich auch, dass er im Netz eingewählt ist. Ich habe den Arduino Mini Pro Bootloader 3,3V hochgeladen, das hat auch ohne Probleme funktioniert und das Quarz erzeugt auch die 8MHz.

Deine Erklärung verstehe ich leider nicht.

Funktioniert es jetzt oder noch nicht ? Das geht leider nicht klar aus deinem Post hervor.

Bitte setze den Sketch noch in Code-Tags, du weißt doch wie es funktioniert ?

Ich habe die Mikrocontroller bestellt und auf diesen war schon der Arduino Uno Bootloader. Ich habe ein 16MHz Quarz angeschlossen, den Code geladen und es funktionierte.
ich brauche aber 8MHz, um den Controller auch noch bei 2,7V Battieriespannung zu betreiben, also habe ich den Bootloader des Arduino Mini Pro (dieser wird ja mit einem 8 MHz Quarz betrieben) auf den Controller gebrannt und den Code hochgeladen. Mit dem neuen Bootloader und dem 8MHz Quarz habe ich allerdings keine Funktion. Mache ich etwas grundlegendes falsch, ich bin noch einiger Maßen frisch dabei.

#include <avr/sleep.h>
void setup() {
  pinMode(2, INPUT);
  Serial.begin(9600);
}
 
void loop() {
  Serial.println(digitalRead(2));
  Serial.println("Leg mich mal hin..");
  delay(80);
  // Aktiviere Interrupt auf Pin2 (Interrupt 0) mit Handler isr_pin2():
  attachInterrupt(0, isr_pin2, HIGH);
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_mode(); 
  // Hier gehts nach dem Schlafen weiter:
   if(digitalRead(2)==HIGH)
  {
    Serial.println("OK");
    delay(1000);
    Serial.println("ATD+4915165142224;");//add target mobile number in place of xxxxxxxxxx
    delay(20000);
    Serial.println("ATH");
    delay(1000);
  }
}
 
void isr_pin2() {
  // Deaktivieren des Interrupts, damit er nicht dauernd wieder triggert
  detachInterrupt(0);  
}

Matthias321:
Mache ich etwas grundlegendes falsch, ich bin noch einiger Maßen frisch dabei.

Ja, der Pro Mini Bootloader funktioniert nicht auf einem Uno und umgekehrt auch nicht.

Da sollte auch eine Fehlermeldung kommen.

Ich habe ja auch nur den nackten ATmega328, ich benutze einen Uno als ISP-Programmer, aber das ist ja unabhängig davon. Also kann ich nicht den Mini Pro Bootloader auf den nackten ATmega328 laden? Es hat zumindest ohne Fehlermeldung funktioniert.

Matthias321:
Ich habe ja auch nur den nackten ATmega328, ich benutze einen Uno als ISP-Programmer, aber das ist ja unabhängig davon. Also kann ich nicht den Mini Pro Bootloader auf den nackten ATmega328 laden? Es hat zumindest ohne Fehlermeldung funktioniert.

Ok, ich habe es selber noch nicht getestet.
Aber der Bootloader eines Pro Mini funktioniert nicht auf einem Uno-Controller.
Da ist ein anderer Controller drauf, der hat mehr Pins als SMD-Ausführung.
Somit funktioniert das nicht.
Du musst einen 8MHz-Uno-Bootloader verwenden.

Ok, vielen Dank, hast du einen Tipp, wo ich den bekommen kann? Google, hilft mir da irgendwie nicht wirklich weiter:-/

Dann schau mal hier.

Wieso brauchst Du eigentlich einen Bootloader wenn Du den Uno als ISP hast?

Klaus_ww:
Wieso brauchst Du eigentlich einen Bootloader wenn Du den Uno als ISP hast?

Da hast du auch wieder recht.

Allerdings setze ich bei meinen Atmega-Projekten (StandAlone) auch immer einen Bootloader ein.
Das Flashen ist so für mich einfacher.

Den Bootloader will ich ja mittels Uno auf den nackten ATmega brennen. Muss ich dem nackten Atmega nicht mittels Bootloader mitteilen, dass er jetzt mit 8 MHz taktet, damit die Zeit stimmt?

Matthias321:
Den Bootloader will ich ja mittels Uno auf den nackten ATmega brennen. Muss ich dem nackten Atmega nicht mittels Bootloader mitteilen, dass er jetzt mit 8 MHz taktet, damit die Zeit stimmt?

Das kannst du über den Bootloader machen, oder über das setzen der Fuse-Bits.
Letztendlich erreichst du damit "fast" das selbe.
Wenn du es entsprechend meinem obigen Link machst, wird es funktionieren.
Ich habe die Atmega328 auch schon auf diesem Wege um Laufen gebracht.