Dies ist eine kostenlose Homepage erstellt mit hPage.com.

AVR Bus-System

Ein Beispiel für ein kleines Bus-System, bei dem ein AVR der Sender (Master) und die anderen AVR die Empfänger (Slave) sind. Das Ganze erfolgt über den Befehl "printbin" und "inputbin". D.h. es werden nur 3 Leitungen zum verbinden der AVR benötigt. Masse, Plus 5V und eine Signalleitung. Mein Beispiel ist mit 3 ATtiny2313 aufgebaut.

Hier ein einfacher Bascom-Code für das Sendemodul:

$regfile = "2313def.dat"
$crystal = 8000000
$baud = 9600

Config Portd.1 = Output

Dim A As Byte
Dim B As Byte

'Sendeport = PortD.1
Open "COMD.1:19200,8,n,1" For Output As Byte

Blinki:

A = A + 2
B = B + 1

   Select Case A

      Case Is < 120
      Printbin 11

      Case Is > 121
      Printbin 12

   End Select

   Select Case B

      Case Is < 50
      Printbin 21

   End Select

Printbin 0

'Dauerein
Printbin 22

Goto Blinki

'Printbin ?? spricht in den Empfänger-Tinys der Adresse und den Ausgangsport.
'z.B. Printbin 11 = Tiny 1 und Port1 (welcher im Empfänger festgelegt ist).
'Logik: 11 = Empfänger 1 und Port?.1
'       12 = Empfänger 1 und Port?.2
'       13 = Empfänger 1 und Port?.3
'       21 = Empfänger 2 und Port?.1
'       22 = Empfänger 2 und Port?.2
'       usw.

 

 

Hier der Bascom-Code für den 1. Empfänger:

$regfile = "2313def.dat"
$crystal = 8000000
$baud = 9600

Config Portb = Output
Config Portd = Input

Portd.0 = 1

'Achtung! A xin
Dim Axin As Byte

'Empfangsport =PortD.0
Open "COMD.0:19200,8,n,1" For Input As Byte

Portb = 0

Blinki:

Inputbin Axin

'Empfänger 1
If Axin = 11 Then
Portb.0 = 1
End If

If Axin = 12 Then
Portb.2 = 1
End If

'Ports auf 0 setzen
If Axin = 0 Then
Portb.0 = 0
Portb.2 = 0
End If

Goto Blinki

Hier der Bascom-Code für den 2. Empfänger:

$regfile = "2313def.dat"
$crystal = 8000000
$baud = 9600

Config Portb = Output
Config Portd = Input

Portd.0 = 1

'Achtung! B xin
Dim Bxin As Byte

'Empfangsport =PortD.0
Open "COMD.0:19200,8,n,1" For Input As Byte

Portb = 0

Blinki:

Inputbin Bxin

'Empfänger 2
If Bxin = 21 Then
Portb.0 = 1
End If

If Bxin = 22 Then
Portb.2 = 1
End If

'Ports auf 0 setzen
If Bxin = 0 Then
Portb.0 = 0
Portb.2 = 0
End If

Goto Blinki

 

Dies ist eine kostenlose Homepage erstellt mit hPage.com.