Forum: Mikrocontroller und Digitale Elektronik Tyni13 und seriell


von Kurt (Gast)


Lesenswert?

Hallo Techniker,

möchte mit Tiny13 ein paar Bytes übertragen.
Es soll der interne RC  bei 4.8 Mhz verwendet werden.
Frage: wo ist die Gefahr von "Zeitproblemen" größer?
1200  oder 9600 Baud

Gruss Kurt

von Peter D. (peda)


Lesenswert?

Da ist kein Unterschied, beides ist gleich schlecht.


Peter

von Kurt (Gast)


Lesenswert?

OK Peter,

gleich schlecht ist gut.
Hab halt den Umstand mit den wenigen Pins.

Soll auch nur solange herhalten bis die Rutinen(n)
für Bi-phase laufen.

Gruss Kurt

von josef (Gast)


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
          }
         }
//********************************************************************** 
***************************

von crazy horse (Gast)


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.

von Peter D. (peda)


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

von josef (Gast)


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

von Kurt (Gast)


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

von josef (Gast)


Lesenswert?

Lieber Kurt !

Was willst du mir sagen ?


SG Josef

von Kurt (Gast)


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

von josef (Gast)


Lesenswert?

Was ist "Bi - phase" ?


Josef

von Kurt (Gast)


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

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.