Hallo, Irgendwie komme ich mit dem Atmel Mega32 nicht so zurecht, wenn ich mit Bascom folgendes Programm für einen 90S8515 teste dann klappt alles und die Led schaltet ein wenn ich mit einem Terminal TEST sende. Wenn ich das Programm aber nun in einen M32 flashe klappt das irgendwie nicht mehr. Kann mir da jemand helfen? Hat das vielleicht was damit zu tun das der Mega32 jetzt einen Buffer für einkommende Zeichen hat? Der M32 scheint ansonsten zu funktionieren, also ich kann auch auf der Seriellen Schreiben und das auch am Telnet sehen. Hoffe mal das mir einer von euch helfen kann. Danke schon mal Parker $regfile = "m32def.dat" $crystal = 8000000 $baud = 19200 Ddrb = 255 Portb.0 = 0 'Debug LED Portb.1 = 1 'LED Power_ON on Portb.2 = 1 'LED_2 off Portb.3 = 1 'LED_3 off Const Cmaxchar = 40 'number of characters Dim B As Bit Dim C As Bit Dim E As Bit Dim Bc As Byte 'byte counter Dim Buf_2 As String * 5 Dim Buf As String * Cmaxchar 'serial buffer Dim D As Byte B = 0 Buf = "" On Urxc Rec_isr 'define serial receive ISR Enable Urxc 'enable receive isr Enable Interrupts 'enable interrupts to occur Do Portb.1 = 0 'power LED on Print "Hallo Welt" 'to see OSC and Compiler Settings are OK for Serial If B = 1 Then Buf_2 = Mid(buf , 1 , 4) If Buf_2 = "TEST" Then Portb.0 = 1 Reset B End If End If Buf = "" Bc = 0 Reset B 'reset receive flag Loop Rec_isr: Toggle Portb.2 If Bc < Cmaxchar Then 'does it fit into the buffer? Incr Bc 'increase buffer counter If Udr = 10 Then Buf = Buf + Chr(0) Bc = Cmaxchar B = 1 Else Buf = Buf + Chr(udr) 'add to buffer End If End If Return
Die Formatierung ist nicht so gelungen darum nun im Anhang noch einmal das File. Danke Parker
Erstmal würde ich, nur testweise mal auf Interrupts verzichten und es einfach mal so testen. Ich vermute aber mal, dass du das schon richtig gebastelt hast. Deshalb Plan B: Wie stehts mit der Taktung deines M32 ?? Die musst du natürlich kennen und Bascom mitteilen. Sonst gibts einen falschen Wert im UBRR. Das wäre schlecht. Die Tatsache, dass du die Zeichen im Terminal siehst, weist nur daruf hin, dass am anderen Ende jemand ist, der fleißig die Zeichen aufnimmt. Ob er sie "versteht" (aufgrund falscher Baudrate zB.) ist eine andere Frage. Best regards
hi, die Taktung ist ein externer Chrystl mit 8MHz was ich Bascom auch mitgeteilt habe, auch die Fusebits sind richtig gesetzt. CPU läuft mit 8MHz und auch wenn ich eine LED toggle stimmt die gemessene Zeit mit der errechneten überein. Sonst würde Telnet auf dem PC mit einer einstellung von 19.200 wie in Bascom die Zeichen auch nicht empfangen. Die ISR würde ich nur ungerne umschreiben, zu viel arbeit. Mein Programm soll ja später mal mit der ISR laufen. Das gleiche Programm läuft ja auf einem 8515 ohne weitere Probleme. Hat noch jemand eine Idee was ich noch probieren könnte? THX
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.