mikrocontroller.net

Forum: Compiler & IDEs 16Bitwort über ein PORTPIN ausgeben?


Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie kann ich ein 16 Bit Wort seriell über einen Portpin ausgeben?

Vielen Dank

Autor: willivonbienemaya (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal nach RS-232

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART, 1-Wire, PWM, diverse IR-Codes, ....

Such Dir was aus.


Peter

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI hast du noch vergessen.  Macht eigentlich genau das.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> SPI hast du noch vergessen.  Macht eigentlich genau das.

Aber SPI braucht mindestens 2 Pins.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,

in einem Projekt hatten wir mal untiges Verfahren für den Master und die 
Debug-Ausgabe verwendet, alledrings haben wir nach einem Byte schon den 
Bus wieder mit Strom versorgt und der Master hat, wenn ein Slave senden 
sollte ein Start-Bit gesendet.

void outputSerial(UInt16 value)
{
  UInt8 bitPos;
  setPin(On); // Default Zustand
  for(bitPos=0; bitPos<16; bitPos++)
  {
     setPort(Off);
     sleep(a);
     if(value & 1 == 1)
     {
        setPort(On);
     }
     Sleep(b);
     setPort(On);
     sleep(c);


     value >> 1;
  }
}


Die Einsen und Nullen hatten wir in die Länge des Aus-Zustandes codiert, 
weil wir auf der anderen Seite anhand der Fallenden Flanke wissen 
wollten, dass ein neues Bit herein kommt. Dann haben wir geprüft ob es 
"lange" oder "kurz" aus war.

Während der Zeit C hatten die Slaves Zeit dieses Bit entsprechend zu 
verarbeiten und auf das nächste Bit zu warten. Wir haben auf der Slave 
Seite (etwa Faktor 10 langsamer als der Master, Assembler verwendet und 
die Sleeps durch einige handverlesene NOPs realisiert.

Wenn der Bus über einen Pullup auf "High" gezogen wird, können alle 
Teilnehmer des Busses senden und empfangen.

Wenn man dann noch dafür sorgt, dass der Master den Pullup in gewissen 
Fenstern überbrückt, können in dieser Zeit auch die Stützkondensatoren 
der Slaves geladen werden und die Slaves erhalten über diese Leitung 
auch ihren Strom.

Grüße,
  Thorsten


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.