Hallo,
ich hab das jetzt mal versucht umzusetzen. Leider ohne irgendeinen Erfolg. Es tut sich einfach nichts...
Hab unten mal den aktuellen Code angehängt.
Eigentlich soll folgendes funktionieren:
Ich sende 4 Ziffern, bsp.:
5049 (50 für PORTD.6 und 49 für "an")
5050 (50 für PORTD.6 und 50 für "aus")
5159 (51 für PORTD.7 und ...)
Leider scheint bei der Übertragung so einiges nicht zu funktionieren. Ich verwende als UART-to-USB Converster ein mysmart USB MK II. Ich habe die RXD und die TXD Leitung angeschlossen und die Masse verbunden. Komischerweise hängt sich das Teil fast immer auf. Verbinde ich die Masse nicht passiert das nicht, aber dann bekomm ich für jedes gesendete Zeichen einen komischen Schnörkel zurück.
Code:' ############################################################# ' #### USB-IO-plus ' #### by Jonathan Lorenz $PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes. ' #### USBtoUART -> AVR ' #### Interface: GPIO, ADC, PWM, I2C, etc. (->Datasheet AVR) ' ############################################################# ' #### empfange Anweisungen vom PC über USBtoUART ' #### setzen oder lesen der Pins ' #### Steuerung der Schnittstellen ' ############################################################# ' #### getting instructions from PC over USBtoUART ' #### writing or reading the pins ' #### driving the Interfaces ' ############################################################# ' #### Bascom-AVR IDE [1.11.9.8] ' ############################################################# $regfile = "M8def.dat" '.dat-file ATmega8' $crystal = 8000000 'Taktfrequenz 8MHz' $hwstack = 350 'Größe Hardwarestack' $swstack = 350 'Größe Softwarestack' $framesize = 200 'Größe Frame' $baud = 19200 'Baudrate UART 'Tccr1a = &B10100010 'initialisieren der PWM-Frequenz 30,52 Hz bei 9 Bit 'Tccr1b = &B10000010 'initialisieren der PWM-Frequenz 30,52 Hz bei 9 Bit 'Declare Sub Empfang() Declare Sub Verarbeitung() Declare Sub Setzen() 'Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Start Adc Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portd.5 , Db7 = Portb.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 Config Portd.6 = Output Config Portd.7 = Output Config Portb.0 = Output Dim I as Byte ' Splitting der Hauptschleife Dim Empfang_string As String * 10 Dim Port As String * 10 Dim Wert As String * 10 Dim B_port As Byte Dim B_wert As Byte Dim Zaehler As Byte Portd.6 = 0 Portd.7 = 0 Portb.0 = 0 Zaehler = 0 Enable Interrupts 'Interrupts global zulassen Enable Urxc 'Interrupt URXC einschalten On Urxc Empfangen 'Interrupt-Routine setzen Cls Cursor On Blink Lcd "USB-IO_plus" Waitms 150 Locate 2 , 1 Lcd "." Waitms 150 Locate 2 , 2 Lcd "." Waitms 150 Locate 2 , 3 Lcd "." Waitms 150 Locate 2 , 4 Lcd "initialisiert" ' ############################################################# ' #### Hauptprogramm ' ############################################################# Do ' Toggle Portb.0 'Blinkende LED zur Kontrolle des Programmdurchlaufes ' For I = 0 To 200 ' Waitms 1 ' Next I ' Empfang ' Verarbeitung ' Setzen Loop End 'end program ' ############################################################# ' #### UART Empfang ' ############################################################# 'Sub Empfang() ' If Ischarwaiting() = 1 Then ' Input Empfang_string ' If Zaehler < 3 Then ' Incr Zaehler ' Else ' Zaehler = 0 ' End If ' Else ' !nop ' End If 'End Sub ' ############################################################# ' #### Datenverarbeitung ' ############################################################# Sub Verarbeitung() Port = Left(empfang_string , 2) 'Byte 1 und 2 extrahieren Wert = Mid(empfang_string , 3 , 2) 'Byte 3 und 4 extrahieren B_port = Val(port) 'String zu Wert konvertieren B_wert = Val(wert) 'String zu Wert konvertieren End Sub ' ############################################################# ' #### Ausgänge setzen ' ############################################################# Sub Setzen() Select Case B_port 'zu setzenden Pin auswählen Case 50 : If B_wert = 49 Then '50=2 | 49=1 Portd.6 = 1 Elseif B_wert = 50 Then ' | 50=2 Portd.6 = 0 End If Case 51 : If B_wert = 49 Then '51=3 | 49=1 Portd.7 = 1 Elseif B_wert = 50 Then ' | 50=2 Portd.7 = 0 End If Case Else : !nop End Select End Sub ' ############################################################# ' #### UART Interrupt ' ############################################################# Empfangen: Empfang_string = Waitkey() 'Zeichen aus dem Buffer einlesen Verarbeitung Setzen Toggle Portb.0 Return ' ############################################################# ' #### Stand 16|12|2011 ' #############################################################







Zitieren

Lesezeichen