Forum: Mikrocontroller und Digitale Elektronik Atmega128 am Arduino


von S. M. (erfindix)


Lesenswert?

Hallo,

ich möchte gerne für ein Projekt einen Atmega128(a) benutzen. Nach 
einigen Schwierigkeiten, ist es mit jetzt gelungen diesen über die 
Arduino-IDE zu programmieren. Leider klappt die nur in C programmierung. 
Sobald ich ein Programm in C++ schreibe und dieses auf den Chip 
übertrage, passiert nchts.
Folgende Libary habe ich mir für den Atmega128 heruntergeladen:
https://github.com/MCUdude/MegaCore
Ich würde mich sehr freuen wenn es eine Lösung gibt,Programme auch in 
C++ zu programmierung und auf den Atmel zu schreiben


Hier einmal meine beiden Test-Blink-Programme
In C++
---------------------------------------------
void setup() {
  pinMode(8, OUTPUT);
}
void loop() {
  digitalWrite(8, HIGH);
  delay(1000);
  digitalWrite(8, LOW);
  delay(1000);
}
---------------------------------------------


Und einmal in C Programmierung:
---------------------------------------------
#include <avr/io.h>
#include <util/delay.h>

#define LED 0  // 0 steht für den Portpin == 0=PB0 1=PB1 ....

int main()
{
  DDRB |= (1<<LED);           // Configure PORTB0 as output

  while(1)
  {
    PORTB |= (1<<LED);        // Turn ON Led connected to PORTB0
    _delay_ms(1000);      // Wait for some time
    PORTB &= ~(1<<LED);        // Turn OFF Led connected to PORTB0
    _delay_ms(1000);      // Wait for some time
  }
  return 0;
}
---------------------------------------------


Freue mich über jeden Vorschlag und Idee.
Vielen Dank im Voraus.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Hast du die Fuses richtig eingestellt?

von S. M. (erfindix)


Lesenswert?

LOW Fuses = 0XFF
HIGH Fuses = 0X99
Extended Fuses = 0X01
Lockbits = 0X3F

Bisher habe ich nur die Low Fuses auf 0XFF geändert

Ich benutze einen Externen 16Mhz Quarz mit 22pf.
Der PEN-Pin ligt mit 10Kohm auf VCC

von Einer K. (Gast)


Lesenswert?

S. M. schrieb:
> Sobald ich ein Programm in C++ schreibe und dieses auf den Chip
> übertrage, passiert nchts.

S. M. schrieb:
> Und einmal in C Programmierung:

In einer Hinsicht, kann ich dich beruhigen:
Auch das ist C++.
C++ funktioniert also.
(auch wenn du das nicht glaubst)

von Walter (Gast)


Lesenswert?

wie übersetzt/linkst du das C++ Programm?
Ist da das Arduino-"Betriebssystem" mit dazu gelinkt?

von Stefan F. (Gast)


Lesenswert?

Du hast also JTAG enabled, dadurch entfallen einige I/O Pins.

Du hast den ATmega103 Kompatibilitätsmodus noch eingeschaltet, musst 
dann also auch für diesen compilieren.

von S. M. (erfindix)


Lesenswert?

Danke für eure Antworten

Welche Fuses müsste ich denn setzen.
Wenn ich die Fuses wie folgt setzte, wäre das dann richtig ?

LOW = 0XFF
HIGH = 0XD9
Extended = 0XFF
Lockbits = 0X3F

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Wenn die Boarddefinition in Ordnung ist, dann sollte es reichen, wenn du 
das gewünschte Konfiguration auswählst, einen der vielen unterstützten 
ISP Programmer dran steckst und "Bootloader brennen" drückst.

von S. M. (erfindix)


Lesenswert?

Ich nutze einen "USBtiny simple usb Programmer" mit dem "myAVR ProgTool 
V1.39" Programm.
Mal sehen ob es jetzt klappt !

von S. M. (erfindix)


Lesenswert?

Das war`s !
Jetzt funktionieren beide Programme.
Danke für eure Hilfe.

von S. M. (erfindix)


Angehängte Dateien:

Lesenswert?

Ich hätte noch eine Frage annähernd an dieses Thema.

Ich würde gerne den Atmega128 (oder auch einen Atmega328) mit einem 
CH340g Treiber über USB und der Arduino-IDE programmieren.
Dafür habe ich folgenden Schaltplan für den CH340G (Anhang) erstellt und 
ihn mit dem Atmega verbunden.
Leider musst ich feststellen, das auch nach der Treiberinstallation des 
CH340G ein Upload nicht geht, auch wenn die Arduino-IDE den Chip 
erkennt.

Darauf hin habe ich den Treiber an meinen Arduino Nano angeschlossen und 
siehe da, es funktioniert.
Letztlich habe ich es noch mit einem "CP2102 UART-TTL Modul" 
ausprobiert, mit dem selben Ergebnis.
Kann es sein, dass mir der Arduino Bootloader auf den Atmel`s fehlt, um 
ihn mit dem CH340g programmieren zu können oder an den Fuses ?

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

S. M. schrieb:
> Kann es sein, dass mir der Arduino Bootloader auf den Atmel`s fehlt, um
> ihn mit dem CH340g programmieren zu können oder an den Fuses ?

Beides!
Für den Bootloader müssen auch die Fuses passend gesetzt werden.

von S. M. (erfindix)


Lesenswert?

Ich habe die Fuses vom Atmega128 letztens so gesetzt.

S. M. schrieb:
> LOW = 0XFF
> HIGH = 0XD9
> Extended = 0XFF
> Lockbits = 0X3F

Könntet ihr mir sagen welche ich umändern muss damit es klappt?

von Stefan F. (Gast)


Lesenswert?

Den Arduino Bootloader installiert man üblicherweise mit der Arduino IDE 
bei Benutzung eines ISP Programmieradapters.

Die IDE enthält für zahlreiche AVR Controller den passenden Bootloader 
und sie setzt auch automatisch die Fuses dazu passend.

ISP Programmieradapter kauft man in der Regel als fertiges Produkt. Man 
kann sogar einen bestehenden Arduino als ISP Programmieradapter 
verwenden, dazu gibt es einen entsprechenden Sketch.

https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader

von S. M. (erfindix)


Lesenswert?

Damit hätte ich mir meine anfängliche Frage des Themas eigentlich sparen 
können.
Hat jetzt alles, wunderbar von alleine geklappt und funktioniert.
Danke

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.