PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serielle Datenübertragung geht bei keinem Board mehr !



Projekt 2252
03.09.2014, 19:59
Hallo, ich habe 2 RN Control 1.4 und 2 Boards mit dem Atmega328-au

Bei den 328-au Boards hatte ich immer das Problem das ich obwohl die richtigen Baudraten eingestellt waren, ich keine richtige Datenübertragung hatte -> es kamen immer Kryptische Zeichen an !
Dann habe ich bemerkt das ich die FUSEBITS noch auf 1 Mhz internen Takt hatte aber davon ausgegangen bin, dass ich das Programm mit 20 MHz schreiben kann weil diese Boards ein 20 Mhz Quarz haben...

Nachdem ich besagte FUSEBITS umgestellt habe auf den Wert : 111111: Ext. Crystal/Resonator.... ging die Übertragung aber immer noch nicht...

Daraufhin habe ich dann mein RN Control 1.4 angeschlossen weil ich sehen wollte ob vielleicht der USB Serial port adapter ein an der Make hat...

Nun wird es komisch ! :

Ich habe das Board angeklemmt und hatte dort noch das TEST Programm drauf (Wo Messwerte ausgegeben werden und so) damit hatte ich dann eine Funktionierende Verbindung.
Nachdem ich dann das Board mit dem Programm geflasht habe was eigentlich auf das Board soll mit dem 328-au, habe ich auch wieder nur Kryptische Zeichen empfangen.
Dann habe ich das TEST Programm wieder drauf gespielt und es hat auch nichts gebracht ! Danach habe ich mein 2. RN Control genommen und dort das TEST Programm drauf gemacht
auch hier das gleiche !
Ab diesem Tag bekomme ich keine Serielle verbindung mehr hin bei der ich das Empfange was ich empfangen sollte es kommen immer nur kryptische Zeichen :(

Die FUSBITS habe ich auf den RN Control Boards so wie sie gehören (im anhang ist nochmal ein Screenshot) ich habe die Frequenz auf 16 MHz und die Baudrate ist auf 9600 es funktioniert trotzdem nicht mehr :(

Was kann das sein ?

Gruß

oberallgeier
03.09.2014, 20:26
... 2 RN Control 1.4 und 2 Boards mit dem Atmega328-au ... keine Serielle verbindung mehr hin ...Vielleicht die Anschlusskabel verdreht? Rx nach Tx und umgekehrt? Das ist bei mir kein unüblicher Fehler.

malthy
03.09.2014, 20:50
Was ist denn der "Empfänger"? Dein PC? Und darauf der Bascom Termnal Emulator? Ist denn auf der Seite alles korrekt konfiguriert?

Projekt 2252
03.09.2014, 22:15
Nein die Kabel habe ich nicht vertauscht :D Dann würde ja auch garnix ankommen :D Habs aber eben nochmal probiert nur um sicher zu gehen :)

Ja normalerweise benutze ich das Terminal von BASCOM hab aber auch schon das von Arduino genutzt -> kommt das selbe bei raus bzw. an :D

Die Einstellungen sind korrekt ich hab noch ein Quadrocopter hier der auch über die Serielle verbindung gesteuert wird da klappt alles wunderbar :)

Also MUSS es an der falschen Konfiguration der Boards liegen aber ich komme nicht drauf was ich falsch eingestellt habe... :/

HeXPloreR
03.09.2014, 22:31
Bscom Update kürzlich gemacht? ...dann sind vermutlich noch mehr Einstellungen zurückgesetzt...u.a. das Bascom Terminal steht vielleicht nicht auf der richtigen Baudrate.

Welche Baudrate steht denn unten im Bascom Terminal?

Projekt 2252
03.09.2014, 23:15
Nein ich habe kein Update gemacht es steht auch dir Baudrate 9600 unten im Terminal wie von mir konfiguriert.... :/

Gruß

Peter(TOO)
04.09.2014, 00:10
Hallo,

Mit den Fuse-Bits konfigurierst du die Hardware, sodass sie den Quarz verwendet.

Daraus geht nun aber nicht hervor, was da für ein Quarz dran klebt.

Um die Baudrate richtig einzustellen, muss ein Teiler mit den richtigen Faktoren initialisiert werden, dazu muss aber die Software wissen, welche Frequenz der Quarz hat.

Ich kenne Bascom nicht, aber irgendwo muss es eine Konstante F_CPU, oder so ähnlich, geben, wo du die verwendete Quarzfrequenz eingeben musst.

MfG Peter(TOO)

Projekt 2252
04.09.2014, 00:17
Die Quarzfrequenz wird im Programm mit $crystal angegeben hab ich auch gemacht. Der Quarz hat 16 MHz...
Es hat ja alles immer funktioniert nur nachdem ich versucht habe das erste mal die FUSEBITS auf dem 328-au zu ändern steckt der wurm in allen Boards.... :(

schorsch_76
04.09.2014, 07:31
Vermutlich steckt der Wurm nicht in allen Boards sondern in dem, das bei allen Tests gleich war ... dein USB RS232 Konverter. Tausch den mal aus ...

Unregistriert
04.09.2014, 08:53
Iss das Kabel in Ordnung ?

oberallgeier
04.09.2014, 09:01
... RN Control 1.4 und ... Atmega328-au ... Die FUSBITS habe ich auf den RN Control Boards so wie sie gehören ...Diese Konfiguration ist recht sicher (so stelle ich das üblicherweise ein, Ausnahmen manchmal beim EESAVE) :

mega328:
Lowbyte
0xFF
Highbyte
0xDF
Extended
0xFF

mega32:
Lowbyte
0xFF
Highbyte
0xDF

Viel Erfolg.

fredred
05.09.2014, 18:01
Hallo,

wenn Du Kryptische Zeichen bekommst, ist es der Nachweis, Verbindung ist okay.
Mit Sicherheit sind die Baudraten nicht synchron.
Ändere einfach mal im Terminal die Baudrate.
Es könnte ja auch sein Du hast im Fuse den Frequenzteiler
akteviert.

Hoffe diese Erklärung ist verständlich geschrieben.

Mit freundlichen Grüßen
fredred

malthy
05.09.2014, 18:23
wenn Du Kryptische Zeichen bekommst, ist es der Nachweis, Verbindung ist okay.

Meiner Erfahrung nach gibt es da eine Ausnahme: wenn Sender und Empfänger keine saubere Masseverbindung haben, kommt es ebenfalls zu diesem Salat.

Projekt 2252
05.09.2014, 23:23
Also ich kann es ABSOLUT ausschließen das es an falschen Baudraten oder dem USB comport Adapter liegt !!!
Die Baudraten stimmen ( ich bin kein absoluter Neuling ) und das Terminal ist auch richtig konfiguriert !
Mein Serielles GPS funktioniert an dem USB comport auch einwandfrei !
Können wir uns also bitte auf die fusebits und Konfiguration der boards fokussieren ?

Mit welchem Tool kann ich die fusebits vernünftig setzten und gibt es eine Möglichkeit sie komplett zu reseten ?
Gruß

malthy
06.09.2014, 11:51
Du kannst in BASCOM die Fuses setzen - so wie Du das bisher ja offensichtlich auch getan hast. Ich habe noch nicht gehört, dass es dabei irgendwelche grundsätzlichen Probleme gibt. Nachdem Du die gewünschten Bits in den Pulldown-Menüs gewählt hast, musst Du dann rechts auf den entsprechenden Button drücken um sie zu brennen. Danach kannst Du sie ja zur Kontrolle einmal zurücklesen. Das ist Dir aber vermutlich eh klar.

Alternativ kannst Du zB auch mit AVRDude (http://www.mikrocontroller.net/articles/AVRDUDE) über die Kommandozeile brennen. Hiermit kannst Du die gewünschten Fuses auswählen (http://www.engbedded.com/fusecalc/), am Ende der Seite werden direkt die Argumente für AVRDude erzeugt, die Du dann nur noch in die Konsole kopieren musst.

Um sicherzustellen dass Dein Controller wirklich auf der Clock läuft, die Du annimmst, kannst Du einfach einen Pin mit einer definierten Perdiode toggeln und dann gucken, ob das dann auch wirklich mit der erwarteten Geschwindigkeit passiert.

Mehr fällt zumindest mir jetzt erstmal nicht ein ...

fredred
06.09.2014, 14:23
Hallo malthy


Meiner Erfahrung nach gibt es da eine Ausnahme: wenn Sender und Empfänger keine saubere Masseverbindung haben, kommt es ebenfalls zu diesem Salat.

Einen Hardwarefehler habe ich ausgeschlossen. Ist ja das erste was geprüft werden sollte.
Sind die Kryptische Zeichen aber konstant liegt es eindeutig an den COM- Einstellungen.
Fehlt Masseverbindung kommt nicht’s oder Salat.
Sehr oft ist es, dass im Fuse der 1:4 Teiler aktiv ist. Einfach mal im Terminal ¼ Baudrate der Code Rate wählen.

Mit freundlichen Grüßen
fredred

oberallgeier
06.09.2014, 14:59
... Sehr oft ist es, dass im Fuse der 1:4 Teiler aktiv ist. Einfach mal im Terminal ¼ Baudrate der Code Rate wählen ...Ein 1:4 Teiler? Kleiner Scherz? Ich kenne nur CKDIV8 und so bei den Atmels - und die hat der Threadersteller ja in Verwendung.


...Kryptische Zeichen ... liegt es eindeutig an den COM ... Fehlt Masseverbindung kommt nicht’s oder Salat ...Interessieren würde mich noch der Unterschied zwischen "Krytische Zeichen" und "Salat".

fredred
06.09.2014, 18:17
Hallo oberallgeier,

Möchte doch nur meine Erfahrung als Amateur vermitteln. Bin nicht so ein Profi wie DU.
Meine bescheidene Erfahrung.

$regfile = "m8def.dat"
$hwstack = 64
$swstack = 40
$framesize = 40
$crystal = 8000000
$baud = 19200
........
Terminalanzeige bestens.
Neuen Mega8 gesockelt. Gleiches Problem wie Threadersteller.
Nun im Terminal Baudrate auf Custom gesetzt. Anzeige wieder OK.
Terminal zeig an 4800 Baud ist die Rate.

Das Fusebit im Controller für Taktteiler auf disabled gesetzt.
Nun konnte ich wieder eine feste Rate mit 19200 Baud einstellen.
Ist kein Scherz. Es funktioniert.
Könnte sein mein ext. Terminalprogramm macht was anderes als das von BASCOM.

Warum machst Du mich ständig lächerlich???????
Nur weil ich einen schlechten Dialekt habe, was ja auch stimmt.

Mit freundlichen Grüßen
fredred

malthy
06.09.2014, 18:31
Ich glaube oberallgeier wunderte sich nur über den von Dir genannten Faktor von 4 (bzw 1/4) bei der Clock - er taucht ja auch in Deinem Beispiel oben wieder auf. CKDIV8 teilt aber durch 8, insofern können Deine Zahlen so nicht stimmen. Aber das dieses Problem grundsätzlich bestehen kann, ist ja völlig richtig. Allerdings schien der TO in diese Richtung schon gedacht zu haben.

P.S.: und da ich den Terminus technicus "Salat" hier aufgebracht habe: ich meinte damit natürlich nichts anderes als "kryptische Zeichen" :-)

oberallgeier
06.09.2014, 18:33
... Warum machst Du mich ständig lächerlich ...Ich bitte um Entschuldigung. Das war nicht beabsichtigt.


... Sehr oft ist es, dass im Fuse der 1:4 Teiler aktiv ist. Einfach mal im Terminal ¼ Baudrate ...Diese Aussage ist falsch, in den Fuses der AVRs gibts keinen Teiler durch 4 - nach allem was ich weiß. Fuses haben mit der Baudrate nur sehr entfernt und indirekt zu tun. Dem malthy kann man da nix vormachen. Ich will aber vermeiden dass der Threadersteller mit so einem Rat aufs Glatteis geschickt wird. Ausserdem erhebst Du auch mit der Aussage dass etwas "eindeutig" sei einen Anspruch auf unbedingte Gültigkeit.

fredred
07.09.2014, 11:23
Hallo oberallgeier,

du musst dich nicht Entschuldigung. Wenn schon, dann ich, für meine oberflächigen Antworten.
Hatte nur noch im Kopf das ich 19200 Baud im Programm festgelegt hatte und es mit 4800 Baud Terminal funktionierte. Somit 1:4. Baudrate des Terminal war wohl damals doch 2400 Baud.
Eins ist sicher bei mir lag es an der Fusebit Einstellung. Dies wollte ich vermitteln. Den Rest hätte ich wirklich nicht falsch beschreiben sollen.

Mit freundlichen Grüßen
fredred