- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Attiny13 auf 57600 Baud ?

  1. #1

    Attiny13 auf 57600 Baud ?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    uC-Programmierung ist noch relativ neu für mich.

    Ich stehe vor folgendem Problem. Mein Testprogramm soll jede Sekunde "Test" an die serielle Schnittstelle senden. Mit 9600 Baud geht's problemlos, nur benötige ich 57600 Baud. Hier kommt vom ATtiny keine Rückmeldung mehr.

    Eingestellt in den Chip-Settings ist: 57600 Baud, Crystal 1200000, Attiny13.dat. Bei den Schnittstellen-Einstellungen sagt Bascom auch richtigerweise: Not possible, egal was ich einstelle, weil der AVR keine Hardware-UART hat. Alle Werte sind auf 16 gestellt.

    hier der Code:
    Code:
    $regfile = "attiny13.dat"
    $crystal = 1200000
    Baud = 115200
    
    Open "comb.1:115200,8,n,1,INVERTED" For Output As #1
    
    Do
     Print #1 , "This is a test with 57600 Baud"
     Wait 1
    Loop
    
    End
    Wer kann mir helfen ?

    Vielen Dank!

    Kai

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.06.2005
    Alter
    35
    Beiträge
    364
    Ich weiß nicht wieviel Performance die Soft-UART braucht, aber du hast ja nur 1200000Hz zur Verfügung, und deine UART soll 57600Bit/s haben, kann gut sein dass das Zeitlich so gar nicht mehr klappt! Der Tiny kann doch einiges mehr an Taktrate, mit geeignetem Quarz...

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377

    Re: Attiny13 auf 57600 Baud ?

    Zitat Zitat von KaiP
    Mit 9600 Baud geht's problemlos, nur benötige ich 57600 Baud. Hier kommt vom ATtiny keine Rückmeldung mehr.

    Eingestellt in den Chip-Settings ist: 57600 Baud, Crystal 1200000
    Hallo Kai!

    Lies dir das mal durch:
    http://www.loetstelle.net/forum/view...hp?p=7207#7207

    Und noch etwas. Nimm den größtmöglichen Quarz. Denn Software UART belastet den µC enorm. Ich weiß nicht wie weit du mit der Baudrate nach oben gehen kannst, aber 115200 ist verdammt hoch.

    Um in Bascom den Baudrechner einsetzen zu können, brauchst du nur vorübergehend einen anderen µC einstellen. Der Baudrechner sagt dir dann, ob die Quarzfrequenz für deine gewünschte Baudrate funktioniert oder nicht. 12 Mhz wäre für Baud 57600 gar nicht mal so schlecht. Nur 0,16 % abweichung. Für Hardware-UART würde das locker genügen.

    In deinem Fall wäre es **vielleicht** mit einem 18,432 Mhz Quarz möglich, die 57600 raus zu holen. Aber wie viel ein genauer Quarz bei Software-UART bringt, kann ich dir nicht sagen. Zumindest habe ich bei Software-UART noch nie mehr als 9600 Baud gesehen.

    Bei 12 Mhz und 57600 Baud hat der Attiny13 für jedes Bit nur 208 Takte zur Verfügung. In dieser Zeit muss LOW oder HIGH erkannt werden (was bei Hardware-UART, glaube ich, ca. 16 Ticks braucht). Dann muss das Bit noch in ein Register geshiftet werden, es muss mitgezählt werden, wieviel Bit schon angekommen sind. Dann muss noch das Datenframe überprüft werden, Stopbit, usw. Also bei 12 Mhz bleibt keine Zeit mehr für andere Dinge.

    Bei 18,432 Mhz und 57600 Baud hat der ATtiny13 für jedes Bit 320 Takte zur Verfügung. Das ist immer noch sehr sehr wenig. Aber vielleicht ist das genug Zeit um die Daten korrekt zu empfangen. Nur bei 320 Takten je Bit hast du kaum mehr genügend Zeit um damit auch etwas anfangen zu können. Und wieviel die Software-UART von diesen 320 Takten aufbraucht, weiß ich nicht.

    Diese Daten auch wieder zurück zu schicken -- das kannst du vergessen. Das Zurückschicken mit PRINT, blockiert den ATtiny13 total. Es kann in der Zwischenzeit nichts empfangen werden und einen Buffer kannst du auf Grund des fehlenden Speichers und der fehlenden Hardware-UART auch nicht einrichten.

    Also, je mehr ich darüber nachdenke, desto eher glaube ich, dass du das mit dem ATtiny13 nicht oder nur sehr eingeschränkt zusammen bringst. Nimm einen besseren Mikrocontroller dafür. Irgendeinen mit Hardware-UART, z.B. einen ATtiny2313 oder gleich einen ATmega8.

    mfg
    Gerold
    :-)

  4. #4

    Super, danke.

    Hallo,

    Ich werde es mal mit einem ATmega8 probieren. Vielen Dank für die Antworten.

    Kai

Berechtigungen

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

12V Akku bauen