www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik invertierten UART Empfangen mit Atmega88


Autor: Sebastian Böhm (sebastian_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich möchte UART gern in Software invertieren (Empfang).

Dazu verbinde ich die UART Leitung mit Pin D2 und verbinde Pin C5 mit 
RXD.

Immer wenn wenn ein Pin change auf D2 kommt, ändere ich C5 was dann in 
den RXD Pin geht.

Problem ist: es kommt hin und wieder zu bitfehlern (selten, aber sie 
kommen), die nicht auftreten wenn ich die invertierung in hardware 
mache.

Das ist der Code:


ISR(PCINT2_vect)
{
    if(PIND & (1<<PIND2))
    {
        PORTC &= ~(1<<PORTC5);
    }
    else
    {
        PORTC |= (1<<PORTC5);
    }
}


void PCINT_Init()
{
    PCMSK2 |= (1<<PCINT18); // D2
    PCICR |= (1<<PCIE2);
}


Jemand ne Idee ?


Grüsse
Sebastian

Autor: AVR-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ufff, so irre Idee hab ich noch nie gesehen.
Klar daß das Probleme machen kann. Ein Hardware Inverter
braucht gerade mal die Gatterlaufzeit, einige ns.
Per SW umdrehen, das dauert unterschiedlich lange,
jenach dem wann der Int kommt. Es muß ja noch der vorige
Befehl abgearbeitet werden, das kann dann schon mal
die Flanke des Signals um 1µs..2µs verschieben,
kommt halt auf die Clock-Frequenz des µC an.
Und das ist je nach Baudrate halt zu viel.

Autor: Mirko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm doch einfach einen Transistor + Basis-R als Inverter (pull up an), 
das passt zur Not auch noch fliegend auf eine fertige Platine.

Viele Grüße,

Mirko

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Baudrate verwendest du? Wie oft kommt es zu Bitfehlern?

Autor: Leo B. (luigi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du evtl noch andere Interrupts, oder atomare codeabschnitte, in 
denen du interrupts abschaltest? beides könnte den von AVR-Fan 
beschriebenen Fehler zufällig auftreten lassen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.