Nun, ich seh in dem Programm keine Baudraten-Angabe ?
($BAUD=nnnn)
Hallo,
ich hab da mal so ein Anfängerproblem,
Ich hab mir gestern überlegt, da ich inzwischen das 3. 27*4 LCD von Polin kaputt gemacht bzw. Bescheidenen Erfolg hatte(weis nicht warum), hab ich es also gestern mal mit Serial probiert. Ich hab einen Max232n von Pollin entsprechend angeschlossen, nur kommt eine merkwürdige Ausgabe am PC. Vieleicht weis einer von euch woran das liegt.
Die Baudraten kann ich von 1200 bis 9600 beliebig beim Prozessor und Gleichzeitig im Terminal um stellen es kommt immer die gleiche anzeige.
Die ausgabe wenn ich nun auf z.B. die 5 der Fernbedienung drücke ist:Code:$regfile = "m16def.dat" $crystal = 800000 '------------------------------------------------------------------- ' RC5.BAS ' (c) 1999-2003 MCS Electronics ' based on Atmel AVR410 application note '------------------------------------------------------------------- Config Pina.2 = Output 'Strom für IR Empfänger Porta.2 = 1 Config Pina.3 = Output ' Gnd für IR + LED Porta.3 = 0 Config Pina.4 = Output 'Strom für Status LED Porta.4 = 1 'use byte library for smaller code $lib "mcsbyte.lbx" 'This example shows how to decode RC5 remote control signals 'with a SFH506-35 IR receiver. 'Connect to input to PIND.2 for this example 'The GETRC5 function uses TIMER0 and the TIMER0 interrupt. 'The TIMER0 settings are restored however so only the interrupt can not 'be used anymore for other tasks 'tell the compiler which pin we want to use for the receiver input Config Rc5 = Pina.0 'the interrupt routine is inserted automatic but we need to make it occur 'so enable the interrupts Enable Interrupts 'reserve space for variables Dim Address As Byte , Command As Byte Print "Waiting for RC5..." Do 'now check if a key on the remote is pressed 'Note that at startup all pins are set for INPUT 'so we dont set the direction here 'If the pins is used for other input just unremark the next line 'Config Pind.2 = Input Getrc5(address , Command) 'we check for the TV address and that is 0 If Address = 0 Then 'clear the toggle bit 'the toggle bit toggles on each new received command 'toggle bit is bit 7. Extended RC5 bit is in bit 6 Command = Command And &B01111111 Print Address ; " " ; Command Print "Waiting for RC5..." End If Loop End
öû«•ëQ=-ÿiú›
Úü[y•£££åÿöû«•ëQ=--#1¿3!y•£££åë
Also was mach ich da nun noch falsch.
MfG[/img]
Nun, ich seh in dem Programm keine Baudraten-Angabe ?
($BAUD=nnnn)
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Den falschen Code benutzen?Also was mach ich da nun noch falsch.
Ich sehe im Code nichts, was einen MAX232 benötigt.
Außerdem hast du "nur" einen 800kHz Quarz angeschlossen. Damit kann es nur zu Fehlern kommen, wenn du in wirklichkeit 8MHz meintest.
print ?Zitat von Marco78
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Das mit dem Quartz ist mir noch garnicht aufgefallen
die Baudrate stelle ich im Bascom ein, aber ich hab jetzt mal im Code mit aufgenommen, aber trotsdem ist die Anzeige imer noch wirwar.
doch doch Print ist mit drinnen da soll jedesmal senden wenn ich auf der Fernbedinung etwas Drücke. Ist ein Sample von Bascom zum verstehen lernen.
Code:$regfile = "m16def.dat" $crystal = 8000000 $baud = 9600
Sorry, das Print habe ich überlesen bei den ganzen Kommentaren.
Im Terminal ist die gleiche Baudrate eingestellt? Das Anschlusskabel ist 100%ig richtig? Der MAX232 ist 100%ig richtig angeschlossen?
Im Code ist sonst kein Fehler zu sehen. Das Baud in den Settings eingestellt ist, ist Ok. Sobald ein Print o.ä. kommt, wird die Einstellung übernommen.
Ich weis garnicht was mann da so noch falsch machen kann, die Schaltung hab ich schon xmal geprüft.
Eigentlich wird ja auch so alles gemacht was er soll er wartet braf bis ich was auf der FB drücke und schickt alles zum Pc, nur die Zeichen sind nicht lesbar, das heist für mich eigentlich das ich das richtig verdratet hab, sonst würde doch garnix zucken oder ?
Kann ich da irgenwas mit einem Multimeter messen um die Funktion zu überprüfen ?
ich war wohl nicht eingeloggt ...
das Kabel ist eins mit 2 weiblichen steckern wo ich den stecker auf das board stecken kann ich hab da stiftleisten zurechtgebogen damit es passt.
Ich hab mich an dieser http://www.mikrocontroller.net/tutorial/uart Schaltung orientiert nur die Dräte wegen des kabels Spiegel verkehrt angeschlossen damit ich die selbe funktion hab und den MAX323N entsprechend dem Datenpbatt angeschlossen. Ist doch so richtig oder den sonst würde ja nix am PC ankommen.
Wenn $crystal und $baud stimmen und auch die Fuses für externen Quarz eingestellt sind (und der Quarz auch stimmt), sind die Bascom "Print"-Funktionen Büffel, die immer funktionieren.
Back to the roots: Schreib ein Programm, das einmal in der Sekunde "Hello" schreibt.
DO
PRINT "HELLO"
Waitms 1000
LOOP
Egal, was du am Terminal siehst, du kannst abschätzen, ob die Sekunde auch stimmt.
Wenn du NUR am AVR die Baudrate änderst, sollten sich die Zeichen auch irgendwie verändern. Tun sie das nicht, iswas mit der Hardware am MAX (Pegel verkehrt oder sonstwas)
Sind die Zeichen, die du siehst, Sonderzeichen > 127, nimmt er dein Stop-Bit als Datenbit, ---> d.h. Der AVR ist zu schnell.
Noch was: HELLO + LF + CR sind sieben Zeichen. Wieviele Zeichen siehst du am Schirm (für ein "Hello") ?
Mehr Zeichen am Schirm ---> AVR zu langsam
Weniger---> AVR zu schnell
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
für ein Hello kommen 6 zeichen wenn ich im terminal die Baudrate kleiner als des MC kommen drei zeichen wenn ich höher mache als MC kommen tatsächlich mehr zeichen raus.
oder meinst du ich soll an dem MC eine kleinere Frequenz einstellen ? Ich benute noch derzeit den Internen Quartz, oder ist genau das mein problem?
Lesezeichen