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
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
//*******************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 } } //********************************************************************** ***************************
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.
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
"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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.