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


von Paul (Gast)


Lesenswert?

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

Vielen Dank

von willivonbienemaya (Gast)


Lesenswert?

schau mal nach RS-232

von Peter D. (peda)


Lesenswert?

UART, 1-Wire, PWM, diverse IR-Codes, ....

Such Dir was aus.


Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

SPI hast du noch vergessen.  Macht eigentlich genau das.

von Peter D. (peda)


Lesenswert?

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

Aber SPI braucht mindestens 2 Pins.

von Thorsten (Gast)


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


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.