- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: Soft-Uart - Intergerzahlen ohne ext. Quarz übermitteln

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.09.2011
    Beiträge
    32

    Soft-Uart - Intergerzahlen ohne ext. Quarz übermitteln

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich möchte einen Atmega 8 und einen Atmega 16 seriell über Soft-Uart verbinden.
    Beide laufen mit 8 Mhz. Ein externer Quarz ist nicht vorhanden.
    Während der Versuche habe ich die Baudrate bis auf 300 reduziert.
    Am Ergebnis hat sich nichts geändert.
    Scheinbar werden Daten emfangen.
    Eine Auswertung für die „4“ im nachfolgenden Code erfolgt aber nicht.

    Sender - Atmega 16 -:

    For X = 1 To 6
    Open "comd.7:300,8,n,1," For Output As #1
    Print #1 , X
    Waitms 500
    Print #1 , 0
    Waitms 500
    Close #1
    Next X


    Empfänger -Atmega 8-:

    Open "comc.3:300,8,n,1," For Input As #2

    Eingangseriell = Inkey(#2)

    If Eingangseriell = 4 Then Led1 = 1 Else Led1= 0
    If Eingangseriell <> 0 Then Led2 = 1 Else Led2 = 0


    Led 2 blinkt im Halbsekundentakt, also werden Daten empfangen.
    Led1, welche die „4“ auswerten soll, bleibt aus.

    Im Netz liest man oft, dass bei serieller Übertragung ein ext. Quarz notwendig ist, andere behaupten, dass es bei genügend hoher Taktfrequenz des Atmega funktioniert.

    Liegt es am fehlenden Quarz, den ich nur sehr schwer nachrüsten kann, weil alle Pins belegt ?

    Oder muß ich die Zahlen anders übermitteln ?
    Später sollen Zahlen zwischen 1 und 10 000 als Integer übertragen werden.

    Ich bin auch mit sehr niedrigen Baudraten zufrieden. Hauptsache es funktioniert.
    Wie weit kann man die Baudrate reduzieren ?

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Vielleicht stört das Öffnen und Schliesen der Schnittstelle in der Schleife?

    Code:
    Open "comd.7:300,8,n,1," For Output As #1
    For X = 1 To 6
      Print #1 , X
      Waitms 500
      Print #1 , 0
      Waitms 500
    Next X
    Waitms 500
    Close #1
    Der Verdacht dahinter: Vielleicht schafft es Bascom nicht das Zeichen innerhalb der Waitms 500 abzusenden?
    (Das Senden der 10 Bits sollte bei 300 Baud allerdings nur 0,033 Sek. dauern)

    Die Geschwindigkeit von COM-Verbindungen gibt man in Bit/Sekunde oder Baud an. 14.400 Baud bedeutet, dass 14.400 Bit/Sekunden über die Leitung übertragen werden. Bei den üblichen Standardeinstellungen braucht man zum Übertragen von 8 Bit (1 Byte) genau 10 Bit. Es kommt ein Start-Bit und ein Stop-Bit dazu. Bei einer Geschwindigkeit von 14.400 Baud werden also 1.440 Byte die Sekunde über die Leitung gejagt. Bei einer Baudrate von 115.200 werden 11.520 Byte die Sekunde übermittelt.
    (Quelle, auch mit Angaben zu den maximalen Baudraten: http://halvar.at/elektronik/kleiner_..._zum_computer/)

    Auch ohne Quarz sollten niedrige Baudraten möglich sein, 300 Baud funktioniert bestimmt. Läuft der Mega8 wirklich mit 8MHz? Sollen die Integerwerte als High-/Lowbyte (16-bit) oder als ascii-Ziffern (BCD) übertragen werden?

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2011
    Ort
    Graz
    Beiträge
    29
    Hallo,

    Print Var gibt die Zahl als lesbaren String aus, beim Empfänger wertest du aber den Byte-Wert 4 aus, Input liefert dir aber den ASCII-Code.
    (ASCII "4" = 52).

    mfg
    Geändert von da_reefer (10.10.2011 um 16:14 Uhr)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    14.09.2011
    Beiträge
    32
    Print Var gibt die Zahl als lesbaren String aus, beim Empfänger wertest du aber den Byte-Wert 4 aus, Input liefert dir aber den ASCII-Code.
    (ASCII "4" = 52).
    Das war's, danke!

    Bei den Zahlenformaten hängt's bei mir noch. Vielleicht habt Ihr noch einen Tip (Programmcode), wie ich am besten z.B. die Zahl 5246 sende und empfange.
    Geändert von #fritz# (10.10.2011 um 18:48 Uhr)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2011
    Ort
    Graz
    Beiträge
    29
    Hallo,

    siehe dir dazu am besten die Befehle Printbin und Inputbin an, damit kannst du die Werte im Binärformat übertragen und sparst dir die (langsame) String-Auswertung.

    mfg

Ähnliche Themen

  1. Soft-UART mit Standardtakt 1MHz
    Von gorra im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 09.09.2008, 19:39
  2. Soft-UART in BAscom?
    Von mar_phil im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 19.08.2008, 19:44
  3. ATTiny2313 Grundschaltung ohne Quarz möglich ?
    Von Juergen151 im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 26.05.2008, 17:56
  4. Ohne quarz??
    Von Crocodile im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 04.08.2005, 21:16
  5. Programmieren ohne Quarz?
    Von Trabukh im Forum AVR Hardwarethemen
    Antworten: 13
    Letzter Beitrag: 26.01.2005, 20:30

Stichworte

Berechtigungen

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

Labornetzteil AliExpress