www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 -> AVRTerm zeigt nichts an


Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Bin neu hier im Forum und wollte einfach mal mein konkretes Problem kund 
tun, da ich da gerade nicht weiter komme.
Habe mir von rowalt.de das Buch gekauft und bei Segor de mC-Bausatz.
Zusammengelötet usw.
So, LEDs ansteuern und Taster auslesen auf diesem Testboard klappt 
prima, lediglich die Ausgabe von irgend nem Text auf der seriellen 
Schnittstelle (AVRTerm am laufen) bleibt leer (Windows98) bzw. irgend 
ein kryptisches Zeugs aus Sonderzeichen (WinXP mit USB2Serial-Adapter).
eingestellt, keine Parität, kein Stopbit, das Übliche eben.

Brennen über Parallelport klappt im übrigen auch.
Was mache ich bei der RS232 falsch?
Danke,
ping

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wahrscheinlichste ist, dass die Baudrate nicht stimmt.
Dabei ist wiederrum das wahrscheinlichste dass dein Programm
mit der falschen Taktfrequenz rechnet.

Also: Hast du einen Quarz am µC?
Ist der auch aktiviert?

Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, der Quarz ist am uC dran.. und ist auch aktiviert.

Baudrate ist 9600, also

Com1:9600,8,1,N

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann zeig doch mal dein programm vielleicht liegt da der hund begraben 
!!!

Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'0003.BAS:   UART-Sender
'Hardware:  MAX232 an PD0/PD1, Nullmodemkabel zum PC
'---------------------------------------------------
$Regfile = "2313def.dat"  'AT90S2313-Deklarationen
$Crystal = 3686400    'Quarz: 3.6864 MHz
$Baud    = 9600       'Baudrate der UART: 9600 Baud

Dim i As Byte
Dim wTest As Word

i = 1
wTest = 35000

Do
  Printbin i ; wTest
  Print "Hallo AVR: " ; i ; wTest
  Print "<--->" ;
Loop
End


Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bascom
da kann eigentlich nicht viel schiefgehen.
Ich tippe immer noch darauf, dass der Quarz nicht
aktiv ist. Es reicht nicht, dass du den Quarz
ranlötest, du musst auch die FuseBits im Prozessor
entsprechend umstellen. Hast du das gemacht?

Ein einfacher Test:
Schreib da mal rein:
$Crystal = 1000000

also 1 Mhz.

Moment!
$Regfile = "2313def.dat"  'AT90S2313-Deklarationen

Ich denke du hast einen Mega8? Warum steht dann
da dass ein 2313 am Werk ist?

Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so, hab nochmal nachgesehen,
bin endlich wieder vorort.

Im Programm steht derzeit drin:

                                  $regfile = "m8def.dat"
                                  $crystal = 3686400

                                  $baud = 9600

                                  Dim I As Byte

                                  Dim Wtest As Word

                                  I = 1
                                  Wtest = 35000

                                  Do
                                    Printbin I ; Wtest
                                    Print "Hallo AVR: " ; I ; Wtest
                                    Print "<--->";

                                  Loop
                                  End

soweit so gut, hmm..
also hab die richtige regfile drin, hatte den quelltext von ner anderen 
Seite kopiert.

Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe die fusebits nochmal neu gesetzt, jetzt funktioniert es..
vielen dank!

Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und da türmt sich auch gleich schon ein weiteres Problemchen.

Hab folgendes Programm abgetippt:

$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600


Config Serialout = Buffered , Size = 200                     '20 Bytes 
Warteschlange

Ddrd.5 = 1                                                  'PD5 als 
Ausgang konfigurieren

Do
   If _rs_head_ptrw0 = _rs_tail_ptrw0 Then                  'Sendepuffer 
leer?
      Print "Dies ist ein Test."
   End If
   Portd.5 = Not Portd.5 
'Speakerausgang invertieren

   Waitms 1                                                 'Eine 
Millisekunde warten
Loop

End


Nun ist die Frage, warum er im AVRTerm lediglich  "Di" ausgibt, nach 
drücken von Reset, gibt er erneut Di aus ... aber jweils nur einmal..
scheinbar arbeitet er den Puffer nicht ab.. deswegen geht er auch nicht 
zurück in die schleife. hmm. vielleicht hat jemanden nen tip,
vielen dank

Autor: Homer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Waitms 1 wird zu klein sein!

Autor: ping (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zwischen 1 und 6ms ist kein Unteschied.. bei 10 gibt er dann gar nichts 
mehr aus,.. hmm..

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.