-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: komisches Verhalten ATmega8 und RS232

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.08.2007
    Ort
    Frankfurt/Oder
    Alter
    36
    Beiträge
    40

    komisches Verhalten ATmega8 und RS232

    Anzeige

    Hallo zusammen.

    Durch rumprobieren mit verschiedenen Baudraten ist mit folgendes aufgefallen.

    Wenn ich die gleiche Baudrate nehme im Terminal wie im Controller kommt dabei nur Müll raus.

    Wenn ich z.b. im Controller die Baudrate auf 19200 setze und im Terminal auf 1200 dann klappt die Kommunikation ohne Probleme.
    Es kommt auch genau das an was ankommen soll im Terminal.

    Hat einer eine Idee woran das liegen kann.

    MFG

    Mario

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.380
    fehler in der formel zur baudberechnung ?
    richtige frequenz im programm eingestellt?

    ein codefetzen in dem du UART initialisierst und die controller einstellungen wäre hilfreich um das problem einzugrenzen ^_^

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.08.2007
    Ort
    Frankfurt/Oder
    Alter
    36
    Beiträge
    40
    Hallo

    Welche Formel meinst du??

    UART initialisieren??

    $regfile = "m8def.dat"


    $crystal = 16000000 'Quarzfrequenz
    $baud = 19200

    ICh nutze das Atml Board von Pollin

    MFG

    Mario

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Bist Du sicher, dass die Fuses für die 16Mhz richtig gesetzt sind?
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    05.08.2007
    Ort
    Frankfurt/Oder
    Alter
    36
    Beiträge
    40
    Woran seh ich das die Fuses für 16 MHz gesetzt sind.

    Bei mir sind folgende Fuses aktiviert:
    Bootsz1, Bootsz0, SUT0, CKSEL3, CKSEL2 und CKSEL1 sowie SPIEN. Den letzten kann ich nicht ändern.


    Ich bin noch Anfänger.

    MFG

    Mario

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Dazu müsstest Du erstmal mehr Details zu Deiner Schaltung nennen. Ist überhaupt ein externer Quarz dran, oder ein Quarzoszillator? Am besten wäre, wenn Du im Programm erstmal die Crystal umstellst. z.B. auf 1000000 und dann gucken, ob die Kommunikation passt. Wenn nicht 2000000 ausprobieren, usw. In jedem Fall nicht einfach an den Fuses rumschrauben, wenn Du nicht genau weißt, was Du machst.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.08.2007
    Ort
    Frankfurt/Oder
    Alter
    36
    Beiträge
    40
    Also

    Ich bin noch voll am Anfang. Ich will erstmal probieren, damit ich ein Gefühl dafür bekommen.

    Auf dem Board sind 3 Quarze vorhanden. 1 mal 8 MHz und 2 mal 16 MHz.
    An den Atmega8 sind der 16MHz angeschlossen.

    So habe den Crystal auf 1000000, da kommen nur irgendwelche Symbole an in HTerm bei 2000000.

    Baudrate habe ich im Terminal 9600 und im Programm auch.

    Was ich nicht versteh, wenn ich im terminal die Baudrate auf 600 umstelle. dann kommen die daten an die ich über den Controller sende.

    MFG

    Mario

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Dass die Kommunikation mit 19200 Bd am Controller und 1200 Bd am Terminal läuft, ist interessant. Dabei fällt auf, dass 19200 / 1200 genau 16 ergibt. Das heißt, dass Dein Controller wohl nur mit 1/16 der vermuteten Frequenz läuft. Und das riecht sehr danach, als wäre der interne 1MHz-Oszillator aktiv.

    Wenn Du die fuses CKSEL 3, 2 und 1 aktiviert hast, ist der interne 1MHz-Oszillator aktiv. Ein extrem hilfreiches Fuse-Tool findest Du hier:

    http://www.engbedded.com/cgi-bin/fc.cgi

    Also - änder´doch einfach mal $Crystal auf 1000000, oder ändere die CKSEL-Fuses auf 1110 (exakt - "aktiviert" entspricht Low!).

    Mit welcher Software programmiertst Du denn die Fuses?

    Gruß,

    Daniel

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    05.08.2007
    Ort
    Frankfurt/Oder
    Alter
    36
    Beiträge
    40
    Das mit den umstellen auf 10MHZ habe ich schon probiert. kein erfolg.

    Ausgelesen habe ich die Fusebits mit Ponyprog2000.

    Wegen den Fusebits. Da muss ich also:
    CKSEL3, CKSEL2 und CKSEL1 haken raus und bei CKSEL0 den Haken rein.

    Oder habe ich das jetzt falsch verstanden.

    MFG

    Mario

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Das mit den Haken ist genau richtig.

    Wenn Dein Controller mit dem internen Oszillator mit 1 MHz getaktet wird, kann´s mit 10 MHz ($Crystal = 10.000.000) auch nicht klappen.

    Probier´s entweder mal mit 1 (!) MHz als $Crystal-Wert, oder setze eben die CKSEL-Fuses auf 0001. Dann ist der externe Quarz aktiviert.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •