Arduino 1.8.1 & ATmega168PA

#4891503
Lesenswert?

Hallo zusammen,

jetzt muss ich doch mal paar Fragen stellen. Irgendwie komme ich nicht 
weiter. Ich arbeite mit Arduino 1.8.1 unter Win10 und benutze den 
ATmega168PA "nackt" mit ext. 8MHz, kein Arduino Board.

1) momentan mein Hauptproblem ist der Bootloader. Ich hab den Bootloader 
durch Änderung der boards.txt draufbekommen. avrdude sagt mir auch 
"Device signature = 0x1e940b (probably m168p)". Doch wenn ich dann über 
serial ein Program uploade ist die Signature "Device signature = 
0x1e9406 (probably m168)". Ich denke das kommt aus dem Bootloader, aber 
wo/wie bekomme ich den Bootloader mit der richtigen Signatur?

2) Im Internet sieht man Anleitungen, das man eigene Boards definieren 
kann. Aber irgendwie funktioniert das bei mir nicht ganz. Ich benutze 
dazu den "BOARDS.TXT Editor". Wenn ich z.B. eine Kopie vom Pro Mini 
mache und den Identifier auf "NEW" anpasse, dann bekomme ich "Board NEW 
(Plattform avr, Paket arduino) ist unbekannt". Und wenn ich den 
Identifier "pro" verwende, und dort eine neue "CPU" (bei mir Test bzw. 
8MHzatmega168p) hinzufüge, dann bekomme ich vom Compiler "avr-g++: 
error: missing device or architecture after '-mmcu='". Irgendwie scheint 
es KeyWords fürs boards.txt zugeben (pro, 8MHzatmega168, 16MHzatmega168, 
...), aber wo ist sowas definiert? wie kann ich neue Boards eintragen?

Anbei meine jetzige boards.txt

Schon mal danke für euer Feedback,
Tomasz
Angehängte Dateien:
Moderator Persönliche Seite #4892050
Lesenswert?

Tomasz L. schrieb:
> Muss ich da nach Anpassung des C Codes das ganze einfach mit "make pro8"

Vermutlich, aber ich blicke bei den vielen vorgesehen Targets im
Makefile nicht durch.

> lostreten oder wie mache ich das unter Win10?

Da müsstest du insbesondere zusehen, dass der Compiler (avr-gcc) im
%PATH% erreichbar ist.

Die zu ändernde Stelle wäre:
1
#elif defined __AVR_ATmega168__
2
#define SIG2  0x94
3
#define SIG3  0x06
4
#define PAGE_SIZE  0x40U  //64 words

Entweider du hackst dort direkt die andere Signatur hinein, oder wenn
du es sauber machen willst, dann ergänzt du den ATmega168P:
1
// alt:
2
#elif defined __AVR_ATmega168__
3
#define SIG2  0x94
4
#define SIG3  0x06
5
#define PAGE_SIZE  0x40U  //64 words
6
// neu:
7
#elif defined __AVR_ATmega168P__
8
#define SIG2  0x94
9
#define SIG3  0x0b
10
#define PAGE_SIZE  0x40U  //64 words

Dann müsstest du an allen Stellen, wo derzeit ein ATmega168 getestet
wird, aber auch den '168P nachtragen, bspw. hier:
1
// bisher
2
//#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__)
3
// danach:
4
#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__)

Abschließend im Makefile MCU_TARGET auf "atmega168p" ändern.

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