Probleme mit Serieller Schnittstelle bei Selfmade-Platine

Hallo Leute,

nach langer Zeit mit dem Uno und dem Nano und einigen Prototypen aus Hartpapier, habe ich es gewagt und mir eine eigenständige PCB entworfen und bestellt. Den "Kern" bildet die Schematic angehaucht vom UNO. Mit dem feinen Unterschied das ich einen Atmega328-U verwende. OHNE P! Atmega328P-U
Soweit auch noch kein Problem. Ich habe ein eigenes board in "boards.txt" erstellt wie folgt:

##############################################################

atmega328bb.name=ATmega328

atmega328bb.upload.protocol=arduino
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.maximum_data_size=2048
atmega328bb.upload.speed=57600

atmega328bb.bootloader.tool=arduino:avrdude
#atmega328bb.bootloader.tool=avrdude

atmega328bb.upload.tool=avrdude

atmega328bb.bootloader.low_fuses=0xE2
#atmega328bb.bootloader.low_fuses=0xFF
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0xfd

atmega328bb.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F

atmega328bb.build.mcu=atmega328
atmega328bb.build.f_cpu=16000000UL
#atmega328bb.build.core=arduino:arduino
atmega328bb.build.core=arduino
#atmega328bb.build.variant=arduino:standard
atmega328bb.build.variant=standard
###Experimental name:
atmega328bb.build.board=AVR_BARE

##############################################################################

atmega88.name=ATmega88
 
atmega88.upload.protocol=arduino
atmega88.upload.maximum_size=7168
atmega88.upload.speed=19200
 
atmega88.bootloader.low_fuses=0xe2
atmega88.bootloader.high_fuses=0xdf
atmega88.bootloader.extended_fuses=0x00
atmega88.bootloader.path=atmega88
atmega88.bootloader.file=atmega/ATmegaBOOT_88_m88.hex
atmega88.bootloader.unlock_bits=0x3F
atmega88.bootloader.lock_bits=0x0F
 
atmega88.build.mcu=atmega88
atmega88.build.f_cpu=8000000L
atmega88.build.core=arduino
atmega88.build.variant=standard

##############################################################

Bootloader brennen funktioniert perfekt über den USBasp. Auch das Programmieren über USBasp.
Jetzt kommt der Haken:
Ich bekomme keine Serielle verbindung her. Weder über einen USB-TTL Umsetzer noch über einen Arduino als solchen verwendet. Den Reset setze ich händisch per Pushbutton. TX und RX sind richtig verbunden.

folgende Fehlermeldung spuckt die IDE aus:

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Berni\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x28
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x28

avrdude done.  Thank you.

Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Die serielle Schnittstelle wäre vorallem für den Debug nützlich. Weiters verwende ich UART auf der PCB und kann nicht sicher sein, ob dieser auch funktioniert.
Was kann ich tun?

LG

maker_berni:
Weiters verwende ich UART auf der PCB und kann nicht sicher sein, ob dieser auch funktioniert.

Könntest Du bitte etwas genauer erklären, was Du damit meinst?

Gruß Tommy

Am besten zeigst du uns ein Schaltbild deiner Platine, damit wir sehen können, was du gebaut hast.

maker_berni:
Die serielle Schnittstelle wäre vorallem für den Debug nützlich. Weiters verwende ich UART auf der PCB und kann nicht sicher sein, ob dieser auch funktioniert.

Du verwendest aber nicht die Anschlüsse TX und RX die Du nach außen geführt hast auch auf der Platine zur Kommunikation?

Bitte Schaltplan zeigen.

Gruß, Jürgen

Danke für die schnellen Antworten! :slight_smile:

Die TX/RX Pins trenne ich vom UART mittels Jumper. Schaltplan ist im Anhang.

Dazu sei noch gesagt, das der UART im Moment noch nicht aktiv ist. Später kommt ein ESP8266-12 (als Webserver) drauf, welcher per UART mit dem Atmega kommuniziert.

Lt. deinem Schaltbild hast dur RX und TX vertauscht/falsch angeschlossen.

Es muss RX von Atmega mit TX vom FTDI verbunden werden.

maker_berni:
Später kommt ein ESP8266-12 (als Webserver) drauf, welcher per UART mit dem Atmega kommuniziert.

Bitte nein. Programmier den E12 direkt und lass den Atmega weg. Wenn du dir es einfach machen willst, nimm einen NodeMCU oder Wemos D1.

noiasca:
Bitte nein. Programmier den E12 direkt und lass den Atmega weg. Wenn du dir es einfach machen willst, nimm einen NodeMCU oder Wemos D1.

Naja...für die Zukunft ist das ok.
Erstmal lernen, mit dem Atmega richtig umgehen ist schon ok.

HotSystems:
Lt. deinem Schaltbild hast dur RX und TX vertauscht/falsch angeschlossen.

Es muss RX von Atmega mit TX vom FTDI verbunden werden.

Ich habe auch versucht die RX/TX Leitungen vom FTDI jeweils anders anzustecken.. leider selbes Ergebnis.

noiasca:
Bitte nein. Programmier den E12 direkt und lass den Atmega weg. Wenn du dir es einfach machen willst, nimm einen NodeMCU oder Wemos D1.

Ich verstehe den Ansatz, das nächste mal sicher eine Überlegung wert.

maker_berni:
Ich habe auch versucht die RX/TX Leitungen vom FTDI jeweils anders anzustecken.. leider selbes Ergebnis.

Dann hast du noch einen anderen Fehler.

So jedenfalls ist deine UART falsch angeschlossen und kann nicht funktionieren.

HotSystems:
Dann hast du noch einen anderen Fehler.

So jedenfalls ist deine UART falsch angeschlossen und kann nicht funktionieren.

Ich werde das nochmal gegenprüfen, vielen Dank!
An den Fuses im board.txt kann es nicht liegen oder? Bin mir bei dieser Spezifikation nicht 100% sicher.

maker_berni:
Ich werde das nochmal gegenprüfen, vielen Dank!
An den Fuses im board.txt kann es nicht liegen oder? Bin mir bei dieser Spezifikation nicht 100% sicher.

Poste doch mal einen Link zum Datenblatt des Atmega328-U.
Den kann ich nicht finden.
Evtl. ist da noch ein Problem.

HotSystems:
Poste doch mal einen Link zum Datenblatt des Atmega328-U.
Den kann ich nicht finden.
Evtl. ist da noch ein Problem.

Findest du im Anhang. "Atmega328/P" soll wohl heißen, dass es für beide Typen gültig ist..

Atmega328.pdf (397 KB)

Ich kann auch nur den Atmega328-PU finden, meinst du den ?

Auf dem Atmega selber steht "Atmega328-U" am Lieferschein "Atmega328-PU"

Ok....dann sollte das passen.
Also ich habe schon mehrere Atmega328P-PU so aufgebaut und auch seriell per UART programmiert, das funktioniert also.

Da muss in deinem Aufbau noch ein Fehler sein.

Ok, dann mach ich mich auf die Suche. Vielen Dank für deine Mühe.

Was genau unterschiedet den 328 vom 328P?

maker_berni:
Ok, dann mach ich mich auf die Suche. Vielen Dank für deine Mühe.

Was genau unterschiedet den 328 vom 328P?

Gerne....ich habe den Unterschied nicht rausgefunden.

Hast du mal versucht, den Atmega328 als Uno zu flashen ?
So mache ich es immer mit meinen.

Den Bootloader hast du drauf ?

Ok...grad gesehen, das klappt.
Du kannst aber nach dem Flashen per ISP nicht mit UART flashen, da der Bootloader wieder weg ist.

HotSystems:
Gerne....ich habe den Unterschied nicht rausgefunden.

Hast du mal versucht, den Atmega328 als Uno zu flashen ?
So mache ich es immer mit meinen.

Den Bootloader hast du drauf ?

Ok...grad gesehen, das klappt.
Du kannst aber nach dem Flashen per ISP nicht mit UART flashen, da der Bootloader wieder weg ist.

Habe ich versucht, aber es kommt dann die Meldung das der erwartete Chip ein 328p ist mit der Signature 0x1E 0x95 0x0F ist. Deshalb auch die geänderte boards.txt. Der 328 hat eine andere Signature.
Wird wohl das einfachste sein, einen 328p zu holen.

Waaaaas? Ja dann.. wenn ich den Bootloader regelmäßig wieder runter schmeiß mit dem ISP flash.. daran könnte es evtl auch noch liegen