Tyni13 und seriell

Gast #150668
Lesenswert?

//*******************Softuart Byte senden***//lowest Bit zuerst
****Baud 9800  **************BTime = 250 bei 4.8 Mhz
void Wr_Char (char Data)
{
  char loop;

   TX = 0;    //Startbit
   delay_us (BTime);    //Baud 9800

  for (loop = 0; loop < 8; loop ++)                  // char Variable
Bitweise ausgeben
                  {
                   if  ( (Data  &  (1<< loop))   >=  1 )    TX = 1;
else TX = 0;
                  delay_us (BTime);
                  }
    TX = 0;    //Stoptbit
    delay_us (BTime);    //Baud 9800
    TX = 1;            //Ende Stopbit
}
//*********************Softuart*Pin seriell einlesen LSB
zuerst***getestet*******************
char In_Char (void)
  {
       char loop,Help,data;

       while (RX == 1) {};             //warten auf Signal

        delay_us ( BTime + (BTime / 2) );  //Startbit abwarten,in der
Mitte des Datenbit lesen

        for (loop = 8 , Help = 0 ; loop  >   0;  loop -- )  //Bit
seriell einlesen    Ergebnis in test binär     getestet
 //highest Bit zuerst
            {
                  if ( RX == 1)    data  |=  (1 <<  Help);
                    Help++;
                    delay_us (BTime);
                    }
         return data;
         }
//****************************Text aus Flashtabelle
ausgeben*****************************************
void Text_Uart(char flash *Table)
  {
         char Loop,Dat;
  while (1)
    {
          Dat = *Table++;            //char aus Tabelle holen
          if (Dat == 0) break;
          Wr_Char(Dat) ;
          delay_ms(1);      //Zeichenverarbeitung abwarten
          }
         }
//********************************************************************** 
***************************
Gast #150669
Lesenswert?

hübsch - aber schlecht. Wie willst du empfangen, wenn du sendest oder
irgendwas anderes tust? In ganz begrenztem Umfang ist das einsetzbar,
normalerweise aber nicht. Geht eigentlich nur sinnvoll mit externem
Interrupt (der das STartbit erkennt) und Timerinterrupt für die
Bitabtastung.
#150670
Lesenswert?

Ja zum Debuggen ist es natürlich ausreichend.

Ich hab mir bei meinen ATMega8 erstmal eine Pin-Toggle Routine
reingebrannt und dann mit dem Frequenzmesser (Digitaloszi) die genaue
Frequenz ausgeben lassen. Die AVRs habe ich dann durchnumeriert, damit
keine Verwechslungen auftreten.


Peter
Gast #150671
Lesenswert?

"hübsch - aber schlecht. " -  schnell geschrieben - Hirn kam zu spät.

Machs besser. Im Datenblatt vom Tiny13 wirst du herauslesen, dass
er nur 1 KByte Flash hat. Also zeig mir mal , was du alles für
Mega-Komplex-Routinen hineinbringst ;-). Freu mich schon.


SG Josef
Gast #150672
Lesenswert?

Hallo Josef,

daraus sehe ich (kann nicht "C") dass einzelne Bytes
mit Start- und Stopbit erzeugt, und ausgegeben bzw. eingelesen
werden.
Habe wegen der Ser-Ausgabe BASCOM verwendet, allerdings ist der
Speicher mit der kleinen Anwendung auch schon ganz voll.
So ähnlich, jedoch für Bi-phase und in Assembler stelle ich mir die
Übertragung der Bytes vor.
Dabei ist der Zeitfaktor nicht so kritisch und ich kann dann beruhigt
den RC-Osz verwenden.


Gruss Kurt
Gast #150674
Lesenswert?

Hallo Josef,

der erste Teil war eine Antwort auf deinen Artikel den Du mir so
schnell bereitgestellt hast (Danke).
Er sollte warsch. auch meine Verlegenheit zeigen (wegen C).

Im zweiten Teil hab ich meine Gedanken "kreisen" lassen und hoffe auf
eine pos. Bestätigung ob ich richtig liege.


Gruss Kurt
Gast #150676
Lesenswert?

so ein neuer Tag, ein neues "Leben",

hallo Josef, Bi-phase (versuch es mit meinen Worten zu sagen)
ist eine Übertragungsart wo
a' der Gleichspannungsanteil im Mittel gleich ist (notwendig bei
   Leitungen [speziell Funk] wo keine Null Herz übertragen werden
   können.

b' der Takt eindeutig ohne grossen Aufwand wiedergewonnen werden kann

C' wegen der Taktrückgewinnung auch zeitliche Schwankungen nicht so
   sehr stöhren.

d' direkt von einem uC erzeugt und auch ausgewertet werden kann (SW)

usw.

es gibt natürlich auch Nachteile.

z.B. ist die Kanalnutzung nicht so "mächtig" da eigentlich jedes Bit
doppelt übertragen wird.

Gruss Kurt

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