Einfachstes serielles Hallo läuft nicht?

OP #3140292
Hallo.

Das sind die Momente, wo man ab liebsten alles hinschmeissen möchte..

Hardware: ATmega328P mit 20MHz Quarz. Serielle Anbindung über einen
USB Dongle. Ich habe mit genau dieser Hardware eine andere Firmware 
geflasht, die etwas an der serielle Schnittstelle ausgibt = ok = 
Hardware läuft!
(9600 8N1)

Dann habe ich das Programm von hier:
http://hekilledmywire.wordpress.com/2011/01/05/using-the-usartserial-tutorial-part-2/

genommen. Bekomme partout keine serielle Ausgabe?
Habe auch mal den String mit PROGMEM in den Flash gelegt, weil ich nur 
die HEX geflasht habe. So ist der AVR geflasht:
avrdude -c usbtiny -p m328p -e -U flash:w:serial.hex
avrdude -c usbtiny -p m328p -U lfuse:w:0xf7:m -U hfuse:w:0xdf:m

Was ist da nur falsch..?

Peter
Angehängte Dateien:
OP
Hmm.. ok. Hatte es jetzt mal mit einem buffer im Ram und 
strcpy_P(buffer,String); probiert.. wieder/immer noch nichts.
---
Habe dann mal das alles Original belassen (ohne progmem) und auch den 
Eeprom Teil
geflasht:
avrdude -c usbtiny -p m328p -e -U flash:w:serial.hex
avrdude -c usbtiny -p m328p -e -U eeprom:w:serial.eep
avrdude -c usbtiny -p m328p -U lfuse:w:0xf7:m -U hfuse:w:0xdf:m

= nichts :-(

Peter
Tja... also... wenn ich die CPU Frequenz auf 16MHz ändere (weil der 
Quarz gerade im Board steckt) und das "PROGMEM" aus der String 
Deklaration entferne, alles compiliere und dann flashe, dann 
funktioniert es einwandfrei.

Wie soll ich dann weiter helfen?
Gast
J.-u. G. schrieb:
> Peter Sieg schrieb:
>> Hardware: ATmega328P mit 20MHz Quarz.
>
> Sind die Fuses so gesetzt, dass er auch mit diesem Quarz läuft?

Hätte auch vermutet dass entweder der interne Oszillator oder der 
Clockdiv aktiv ist...
Gast
Peter Sieg schrieb:
> Das sind die Momente, wo man ab liebsten alles hinschmeissen möchte..

Das wäre in diesem Falle wohl auch das Beste. Du hast ne komische Art, 
Software füe uC zu schreiben.

Also:
ich hätte an deiner Stelle mir für solche Tasks wie serielle Ein- und 
Ausgaben eine Unit geschrieben, die das wirklich ausprobiertermaßen 
tut und die wenigstens ein bissel eigensicher ist. Schlimmes Beispiel 
von dir: dein Programm wartet sich tot beim Senden, wenn aus irgendeinem 
Grunde die "Sender-ist-frei" Kondition nicht kommt. Sowas würde ich 
zeitlich begrenzen und im Fehlerfalle wenigstens ins aufrufende Programm 
zurückspringen. Obendrein würde ich sowieso die ganze serielle I/O auf 
Buffer und Interrupts umstellen, damit das Ganze nicht blockierend ist.

OK, vielleicht sind die AVR's für sowas auch nur zu klein, aber selbst 
bei den ebenso kleinen PIC16Fxxx organisiere ich den seriellen I/O per 
Buffer und Interrupts. Das geht. Und wenn man es einmal wirklich gut 
ausgetestet hat, dann geht's immer wieder in allen folgenden Projekten.

Ansonsten kommen mir für dein Problem nur folgende Fragen:
- Power für UART eingeschaltet?
- Clock für UART freigegeben?
- Pins für UART richtig konfiguriert?
- UART aktiviert und richtig eingerichtet?
- eventuell konkurrierende Peripherie dediziert deaktiviert?

W.S.
Gast
Hi

Bei einem ATmega328P mit 20MHz Quarz:

>- Power für UART eingeschaltet?

kann man nicht abschalten

>- Clock für UART freigegeben?

Wird mit UBRR eingestellt

>- Pins für UART richtig konfiguriert?

Macht die UART selbst mit RXEN und TXEN

>- UART aktiviert und richtig eingerichtet?

Kann man an Hand des Datenblatts überprüfen

>- eventuell konkurrierende Peripherie dediziert deaktiviert?

Gibt es nicht.

Wie kann man eigentlich so viel Stuss erzählen?

@to

>Dann habe ich das Programm von hier:
>http://hekilledmywire.wordpress.com/2011/01/05/usi...
>...

>Was ist da nur falsch..?

Du liest kein Datenblatt.

MfG Spess
Gast
> #define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 16UL))) - 1)
Da schon mal versucht herauszufinden, was das bedeutet? Wenn du das 
Makro nicht angepasst hast, dann hast du die falsche Baudrate.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.