Hallo leute!
Habe 2 atmeg8535 mittels txd ind rxd pins verbunden und möchte das der zweite daten an den ersten übergibt um diese auf einem lcd display anzuzeigen.
Haut auch fast hin, nur irgendwie verändert sich die zahl nicht es steht immer zehn und es flakert.
Ich habe den 2ten von txd zum ersten mit rxd verkabelt, beide funktionieren und erfüllen ihre programme bis auf die übertragung.
Ich poste mal die 2 codes vielleicht hat mal wer bock, schnell zu schauen was da nicht funkt.
Kurze programm beschreibung:
Ein chip der 1te hängt am display und hat eine temperaturauswertung und noch andere adc aufgaben die noch programmiert werden, der 2te soll am eingang anliegende impulse an 24 relaise der reihenfolge rauf oder runter schalten ( dient zur steuerung der lautstärke einer endstufe), alles is mal grob ausprogrammiert zum simulieren.
Der wert X (ein array) is der wert der sich verändern kann (lautstärke , zahl von 1 bis 24 ), und dieser zustand soll angezeigt werden am display.
Code 1 vom chip der empfängt und am display hängt:
Code:$regfile = "8535def.dat" $crystal = 4000000 $baud = 9600 Config Pinb.0 = Output Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Pinb.6 = Output Config Pinb.7 = Output Config Pind.0 = Input Config Pind.1 = Output Config Pind.2 = Output Config Pind.3 = Output Config Pind.4 = Output Config Pind.7 = Output Config Pina.1 = Input Config Pina.2 = Input Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Config Adc = Single , Prescaler = Auto , Reference = Avcc Cursor Off Start Adc Dim Temp As Single Dim A As Single Dim Volt As Word Dim B As Single Dim C As Single Dim D As Single Dim Volta1 As Word Dim Rxd_eingang As Byte Cls Upperline Lcd "Hallo Welt" Lowerline Lcd " LO.GO " Waitms 90 Cls Do Volt = Getadc(0) A = Volt * 5 Temp = A / 10.24 Locate 1 , 1 Lcd "T:" ; Fusing(temp , "#.") ; Chr(223) ; "C" ; Volta1 = Getadc(1) C = Volta1 * 5 D = C / 1024 Lowerline Lcd "Porta1:" ; Fusing(d , "#.##") ; "V" If Ischarwaiting() = 1 Then Gosub Empfang Locate 1 , 10 Lcd "Vol:" ; Rxd_eingang ; " " 'hier soll der X wert vom 2ten chip zur anzeige kommen , geht aber nicht ganz,der wert verändert sich nicht bei aktionen des 2ten chips???? Loop Empfang: Rxd_eingang = Inkey() Return
Code 2 vom chip der zum ersten schickt:
Danke schon mal ,ein jeder tipp oder ratschlag wird gerne angenommen....DANKE[/code]Code:$regfile = "8535def.dat" $crystal = 4000000 $baud = 9600 Config Pinb.0 = Output Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Config Pinb.4 = Output Config Pind.1 = Output Config Pind.2 = Output Config Pind.3 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pind.6 = Output Config Pina.1 = Input Config Pina.2 = Input Porta.1 = 1 Porta.2 = 1 Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.5 = 1 Portd.6 = 1 Led1 Alias Portb.0 Led2 Alias Portb.1 Led3 Alias Portb.2 Led4 Alias Portb.3 Led5 Alias Portb.4 Led6 Alias Portd.2 Led7 Alias Portd.3 Led8 Alias Portd.4 Led9 Alias Portd.5 Led10 Alias Portd.6 I1 Alias Pina.1 I2 Alias Pina.2 Dim X As Integer X = 0 'Dieses X will ich auf den ersten chip übertargen und der soll dann am lcd display angezeigt werden, wechselt natürlich ständig Do If I1 = 0 Then X = X + 1 Print X End If If I2 = 0 Then X = X - 1 Print X End If If X = 1 Or X = 0 Then Led1 = 0 : X = 1 Print 01 Else Led1 = 1 End If If X = 2 Then Led2 = 0 Print 02 Else Led2 = 1 End If If X = 3 Then Led3 = 0 Print 03 Else Led3 = 1 End If If X = 4 Then Led4 = 0 Print 04 Else Led4 = 1 End If If X = 5 Then Led5 = 0 Print 05 Else Led5 = 1 End If If X = 6 Then Led6 = 0 Print 06 Else Led6 = 1 End If If X = 7 Then Led7 = 0 Print 07 Else Led7 = 1 End If If X = 8 Then Led8 = 0 Print 08 Else Led8 = 1 End If If X = 9 Then Led9 = 0 Print 09 Else Led9 = 1 End If If X = 10 Or X = 11 Then Led10 = 0 : X = 10 Print 10 Else Led10 = 1 End If Waitms 30 Loop







Zitieren

Lesezeichen