ATTiny2313 Software UART

Gast #2529115
Lesenswert?

Hallo

Ich brauche eine zweite UART auf dem ATTiny, die sollte so 
prozessorsparend wie möglich sein ;)

Habe diese gefunden 
(http://www.siwawi.arubi.uni-kl.de/avr_projects/#softuart) aber die 
braucht soviel ich sehe eine hohe Prozessorlast (da Timerbasierend)

Diese sieht zwar toll aus 
(Beitrag "Software UART mit FIFO") aber irgendwie 
lässt er mir die auf einem ATTiny2313 nicht compilieren vermute dem geht 
das eine oder andere ab oder?
(zB.: T1FR1, T1M1 ... )

sonst hängt nichts auf dem tiny drann, nur die zwei UARTS (und eventuell 
wo ne led oder so ... )

welches nehmen?
#2529166
Lesenswert?

sn00py schrieb:
> Habe diese gefunden
> (http://www.siwawi.arubi.uni-kl.de/avr_projects/#softuart) aber die
> braucht soviel ich sehe eine hohe Prozessorlast (da Timerbasierend)
Alle mir bekannten Software-UARTS laufen über Timer. Wie soll man auch 
sonst das exakte Timing einhalten? Diese Lösungen brauchen auch immer 
mehr Prozessorzeit als Hardware-UARTS.


> lässt er mir die auf einem ATTiny2313 nicht compilieren vermute dem geht
> das eine oder andere ab oder?
Zeig mal die genauen Fehlermeldungen.


Gruß Oliver
Gast #2529391
Lesenswert?

Kannst auch mal in den SW-Application Notes von Atmel schauen. Da gibt 
es eine in Assember geschriebene SW-UART, die habe ich auf dem recht 
leistungsschwachen Tiny15L schon oft erfolgreich eingesetzt.

Wenn du den Code nicht findest und Interesse hast kann ich den hier 
posten.
Gast #2530412
Lesenswert?

So, ich habe nun alle TIMSK1 durch TIMSK ersetzt, nun lässt sich das 
TEil kompilieren. Habe auch die Ports umgelegt auf die richtigen für den 
ATTiny2313.
Aber in der init routine steht eine Zeile drinnen, wo er hängen bleibt 
(Lasse ein Led blinken, mit der Zeile, blinkts nicht mehr, ohne der 
Zeile passt alles)

  TIMSK = 1<<ICIE1^1<<OCIE1A;    // enable tx and wait for start

an was kann das liegen?

Oder hat wer einen funktionierenden Code für den ATTiny2313?
(Firma: JDCC) #2530455
Lesenswert?

Es geht mit sehr wenig Aufwand auf dem tiny:
1
        void
2
        sputc(
3
        char    c
4
        )
5
{
6
        register unsigned char i;
7

8
        outbit( 0);
9
        for ( i=1; i; i=i*2)
10
                outbit( c & i ? 1 : 0);
11
        outbit( 1);
12
        outbit( 1);
13
        _delay_us( 1000.0);
14
}
15

16
        static
17
        outbit(
18
        char    on
19
        )
20
{
21
        if ( on) PORTB |= 0x08; else PORTB &= 0xf7;
22
        _delay_us( 101.5);
23
}

Die delays habe ich mit einem 2-Kanaler experimentell ermittelt.
Vielleicht nicht die reine Lehre ... ich habe da aber auch nur
ein kleines 2-Zeilen Display dran hängen.
#2530465
Lesenswert?

Bei mir steht da auf Seite 162:

Datenblatt schrieb:
> 16.4 Alternative USI Usage
> The flexible Design of the USI allows it for other tasks when serial
> communication is not needed. Below are some examples.
> 16.4.1 Half-Duplex Asynchronous Data Transfer
> Using the USI Data Register in three-wire mode it is also possible to
> implement a more compact and higher performance UART than by software,
> only.

mfg mf

PS: Weil der Text nicht kopierbar ist und nur Exorzismus-Zeichensalat 
erzeugt, musste ichs auch noch abtippen. Oh Mann... Aweng mitdenken, 
Atmel...
Gast #2531061
Lesenswert?

Hallo :(

Kann mir wer noch einen Tipp geben wo und was ich noch schauen kann?

Irgendwie will das alles nicht, alle soft uart sind für andere 
Controller, und nach dem ich alles anpasse für den ATTiny2313, funkt es 
leider nicht mehr.

Die ATMEGA mit 2*UART sind leider zu groß, hab mir schon überlegt, ob 
ich einfach 2*ATTiny2313 nehmen soll, die dann per I2C oder so 
kommunizieren, falls das geht, aber ist ja auch nicht das gelbe vom ei 
oder?

Hat noch wer eine Idee, wie ich zu so was komme?
#2531077
Lesenswert?

Du könntest ganz einfach selbst einen eine schreiben?

Zumindest TX ist kein Problem, RX gibt schon etwas mehr zu tun.


Hast du ein Oszilloskop? Das ist meiner Meinung nach die Voraussetzung 
um so etwas umzusetzen, habe letzte Woche nur TX für einen attiny26 
geschrieben. (Nicht besonders wiederverwendbar, nur zum Testen, könnte 
ich dir aber geben)



mfg Andreas
Gast #3911730
Lesenswert?

Holler schrieb:
> Kannst auch mal in den SW-Application Notes von Atmel schauen. Da gibt
> es eine in Assember geschriebene SW-UART, die habe ich auf dem recht
> leistungsschwachen Tiny15L schon oft erfolgreich eingesetzt.
>
> Wenn du den Code nicht findest und Interesse hast kann ich den hier
> posten.

@Holler:
ich hätte gerne entweder source oder link.....

möchte gerne an zb. NANO V40 oder UNO (ATMEGA328) GPRS-datenstream aus 
UBLOX-modul (TTL-seriell) auslesen und via USB/RS232 selektiv 
weitersenden....
nur assembler, kein C oder MBASIC o. dgl.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren