Einfachstes serielles Hallo läuft nicht?

OP #3140292
Lesenswert?
• ▲
▼
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 #3140309
Lesenswert?
• ▲
▼
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
Gast #3143119
Lesenswert?
• ▲
▼
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 #3143150
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.