Mehrere AVRs von einem zentralem AVR steuern?

Fragen oder Tipps & Tricks über Software

Moderatoren: Tim Sasdrich, Sebi

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 16.02.2016, 00:27

Da habe ich doch glatt vergessen das die Zeilen keine Transistoren vorgeschaltet haben - schäm!
Mit den Datenblättern der AVRs habe ich es nicht so - die sind mir einfach zu umfangreich - duckundwech.
Habe dann doch glatt mal geschaut aber, wie befürchtet nichts gefunden.

Am Rande erwähnt -
hatte letztens irgendwo gelesen das die Beschaltung des Reset Pins mit einem 10k Pullup Blödsinn ist da ein entsprechender Pullup bereits integriert ist.
Und tatsächlich lese ich grade beim studieren des Datenblattes: Interner Pullup für Portpins 20K - interner Pullup des Resetpin 30K.
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1598
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon alterhase » 16.02.2016, 20:51

Ich erinnere mich, wo gelesen zu haben, dass die Pullups per SW abschaltbar sind.
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 11811
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon topas » 17.02.2016, 08:12

Sie sind zuschaltbar. Während Reset sind sie m.W. aus. Blödsinn ist ein externer Widerstand bestimmt nicht - kommt eben immer drauf an.
Steuerungen mit Basic kinderleicht wie zu Commodorezeiten aber mit AVRs: pahlbasic
Benutzeravatar
topas
 
Beiträge: 3741
Registriert: 16.08.2010, 12:47
Wohnort: Düsseldorf

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 19.02.2016, 00:59

Ich habe mir mal weiter Gedanken zum eigentlichen Thema gemacht und bin momentan beim UART angelang.
Ausserdem habe ich mal ein neues Programm getestet - PapDesigner -
Hier nun das Resultat der Verknüpfung von UART und PapDesigner -
UART mit mehreren Slaves.jpg


Kurz zur Erläuterung ->

Ich habe einen Master zB. einen Atmega -
Dieser Master sendet über den Hardware UART seine Bytes an die angeschlossenen Slaves zB. mehrere Attinys -
Es wird nur der TX Pin des Atmegas mit den (Software) RX Pins der Attinys verbunden -
Alle hängen dann gemeinsam an einer Leitung -
Die Attinys bekommen unterschiedliche Adressen im Bereich von 0 bis 32 -
Der Atmega sendet immer zwei Byte -
Das erste Byte ist das Adressbyte (zB. 3), das Zweite die Zeichennummer des darzustellenden Zeichens (zB. die 53 für eine Fünf) -
Alle Attinys vergleichen das AdressByte - nur der mit der passenden Adresse (3) setzt ein "Jawoll", das bin ich -
Alle Attinys empfangen das Zeichenbyte (53) - nur der mit "Jawoll" wertet es aus und zeigt die 5 an und löscht das "Jawoll" -

Da keine utopischen Geschwindigkeiten beim übertragen der ? 8 - 16 Zeichen verlangt werden könnte es klappen (so der Wunsch!)

Und noch die Umsetzung in Bascom
Spoiler: show
Code: Alles auswählen
Dim Masterbyte as Byte
Dim Empfangenflag as Bit

Const Adresse = 3               'Adresse des Attinys

Open "comb.5:2400,8,n,1" For Input As #2     'Pin B.5 wird RX

do
   Anfang:                                      'Einsprung
      Inputbin #2 , MasterByte                 'wartet auf ein Byte vom Master
      If Empfangenflag = 1 then                'Empfangenflag wird ausgewertet
         Charnr = Masterbyte                    'wenn Empfangenflag 1 ist dann wird das Zeichen (Wert der Variable Masterbyte) angezeigt
         Empfangenflag = 0                      'wenn Zeichen übernommen wurde - Empfangenflag zurück auf 0
         Masterbyte = 0                         'Empangenes Byte löschen
         goto Anfang                            'Sprung zu Anfang
      end if

      If Masterbyte = Adresse then             'Wenn das empfangene Byte 3(Adresse Attiny) ist wird das Empfangenflag auf 1 gesetzt
         Empfangenflag = 1
         Masterbyte = 0                         'Masterbyte zurücksetzen
      else
         Masterbyte = 0                         'Masterbyte zurücksetzen
      end if
loop
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1598
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon topas » 19.02.2016, 01:33

Der UART mit RS232 ist ein Punkt zu Punkt Medium. Mit RS485 kann er als BUS verwendet werden. Ich verwende für mein Projekt das Ethernet. Unschlagbar was die Übertragungsgeschwindigkeit angeht und die Knotentechnik gibt es für n Appel und n Ei.
Steuerungen mit Basic kinderleicht wie zu Commodorezeiten aber mit AVRs: pahlbasic
Benutzeravatar
topas
 
Beiträge: 3741
Registriert: 16.08.2010, 12:47
Wohnort: Düsseldorf

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 19.02.2016, 01:55

Allerdings ist Ethernet mit viiiiiel Einarbeitung für mich verbunden.
Ansonsten hast Du natürlich recht!
Bin trotzdem gespannt ob meine Variante klappt - - - :?:
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1598
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon topas » 19.02.2016, 02:02

Du kannst innerhalb Deines Projekts doch treiben was Du willst. Interessant wird es ja erst, wenn Dein Projekt nach aussen will.
Ich würde mir die seriellen Schnitstellen immer für die Kommunikation nach aussen frei halten. Nach innen hat man den SPI, der eh viel schneller ist. Aber bitte....

PS: Bevor Dein URALT (hab ich mich da verschrieben?) überlegt hat, das erste Bit zu senden, ist der SPI mit dem ersten Byte fertig.
Das ist, wie Du weisst, ein Schieberegister. Wie die Hardwareschieberegister in CMOS oder TTL. Und das ist schnell: maximal Systemtakt. Vielleicht 8 MHz oder mehr? Und Du willst zwischen den Prozessoren den UART verwenden? Man tau! Hoffentlich folgen Dir nicht so viele.

Ja! 3 Leiterbahnen führen ist schlimm. Sehr schlimm.!
Steuerungen mit Basic kinderleicht wie zu Commodorezeiten aber mit AVRs: pahlbasic
Benutzeravatar
topas
 
Beiträge: 3741
Registriert: 16.08.2010, 12:47
Wohnort: Düsseldorf

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 19.02.2016, 10:19

Ach nö -
also -
wirklich -

da muss ich Dir (wenn auch ungern) in Allem Recht geben.

Wie ich weiter oben geschrieben habe ist das (noch nicht aufgegebene!) Ziel die Kommunikation der Mikrocontroller mittels TWI / I2C.
Vielleicht noch mehr auf den Punkt gebracht:
Ich möchte eine universelle und bezahlbare Lösung !ohne! Spezialbausteine (SAA1064 /MAX 79??) um Matrixanzeigen - oder auch Siebensegmentanzeigen, einfach mit einem Mikrocontroller anzusteuern zu können.

Auf UART bin ich nur (vorerst) umgeschwenkt
weil:
1) ich (hoffentlich einigermaßen) verstehe was da passiert
2) ich das Layout (die Platinen) und das Grundgerüst des Programms fertig habe, die Pins aber nicht so richtig passen wollen
3) ich Probleme mit meinem Mikrocontroller hatte nachdem ich die USI Schnittstelle (für die mein Layout passt) aktiviert hatte.
4) es eine billige, und hoffentlich ausreichende Lösung sein kann?

Außerdem freue ich mich jetzt schon auf das erste Projekt mit SPI
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1598
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon topas » 19.02.2016, 19:25

Als Experimentierfeld ist der UART echt OK (Wenn ich an meinen alten VC20 denke - der hatte eine Software RS232 Schnittstelle). Um der Überschrift über Deinen Thread gerecht zu werden taugt er aber nicht (es sei denn die AVRs sind alle eigenständige Systeme?). Als Chip to Chip Connection ist er nicht gedacht.
Steuerungen mit Basic kinderleicht wie zu Commodorezeiten aber mit AVRs: pahlbasic
Benutzeravatar
topas
 
Beiträge: 3741
Registriert: 16.08.2010, 12:47
Wohnort: Düsseldorf

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 24.02.2016, 00:54

Habe mir grad mal ein Video zum SPI angeschaut -
die Datenraten sind Hammer im Vergleich zu UART oder auch I2C.
Man braucht aber ja nicht immer so eine hohe Datenrate was die anderen Schnittstellen wieder etwas interessanter macht - so denke ich zumindest.
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1598
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Sebi » 24.02.2016, 10:49

dussel07 hat geschrieben:Man braucht aber ja nicht immer so eine hohe Datenrate was die anderen Schnittstellen wieder etwas interessanter macht - so denke ich zumindest.

Mache es so einfach wie möglich ;) Wenn du mit SPI keine(wenig) Erfahrung hast, würde ich an deiner Stelle UART nehmen. Die Übertragungsrate scheint wirklich völlig ausreichend.
In dein Übetragungsprotokoll könnte man evtl. noch ein Byte zur Synchronisation einbauen (Am Anfang oder Ende), dass bei einem Datenverlust der Slave nicht dauerhaft das letzte Datenbyte als Adressbyte und das aktuelle Adressbyte als Datenbyte nimmt.
Beispiel mit 3 Packeten:
1234 5678 9ABC
wird zu (Byte_0 (12) geht verloren):
3456 789A BCXX

Alternativ könnest Du die Synchronisierung auch über getrennte Adress- und Datenräume machen (Daten(Ziffern) von 0-9, Adressem von A-FF z.B.) so erkennt man dann am Byte selbst, ob es ein Adress- oder Datenbyte ist. (Das wäre in der Implementierung auch einfacher)
Sebi
 
Beiträge: 830
Registriert: 10.08.2009, 17:57
Wohnort: Darmstadt

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon topas » 24.02.2016, 17:36

Natürlich braucht man die Datenraten nicht unbedingt. Der SPI ist aber softwaremässig so einfach wie der UART. Er ist genauso nur ein Register. Möglicherweise ist BASCOM ein Hemmnis - ich kenne es nicht wirklich.
Steuerungen mit Basic kinderleicht wie zu Commodorezeiten aber mit AVRs: pahlbasic
Benutzeravatar
topas
 
Beiträge: 3741
Registriert: 16.08.2010, 12:47
Wohnort: Düsseldorf

Vorherige

Zurück zu Software

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast