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 » 25.02.2015, 20:48

@Tim
habe das I-Net durchforstet nach einem Programm bezüglich HD44780 und Dotmatrix, bin aber nicht fündig geworden.
Um sowas selber zu programmieren bin ich zu blöd.
Die Idee ist allerdings spitze!
Das wär der Hit wenn man ein selbergebasteltes Display einfach mit den LCD Befehlen aus Bascom füttern könnte.
Wir sicher i-wann Jemanden geben der das macht!
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1627
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Anse » 25.02.2015, 22:16

Klar gibts das: http://fritzler-avr.de/HP/ledscreen.php
Das HD44780 Protokoll ist nicht besonders kompliziert. Fast nichts Timing kritisches. Nur jeweils 4Bit parallel auf Kommando übernehmen und interpretieren.

Übrigens hab ich mal just for fun einen TWI Slave für den Atmega8 in Bascom geschrieben. Morgen mal testen.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Tim Sasdrich » 26.02.2015, 01:54

Das sind aber 16-Segment-Anzeigen, nicht Dotmatrix.

Die LCD-Module haben eigentlich auch eine Matrix, die in 5*8 große Felder aufgeteilt ist. Evtl. kann man einen LCD-Treiber etwas verstärken und er treibt dann auch LEDs?

Wenn es das nicht im Internet gibt, müssen wir es wohl selbst machen und rein stellen, dann gibt es das. :wink:
"Der Kluge lernt aus allem und von jedem, der Normale aus seinen Erfahrungen und der Dumme weiß alles besser." - Sokrates (470 - 399 v. Chr.), griechischer Philosoph
Tim Sasdrich
 
Beiträge: 2961
Registriert: 07.01.2009, 14:15
Wohnort: Villingen-Schwenningen

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Anse » 26.02.2015, 19:15

Das sind aber 16-Segment-Anzeigen, nicht Dotmatrix.
Wo ist da der Unterschied? Sind doch alles LED Anzeigen. Wenn Du Grafiken anzeigen willst ist das HD44780 Protokoll ungeeignet.

Die LCD-Module haben eigentlich auch eine Matrix, die in 5*8 große Felder aufgeteilt ist. Evtl. kann man einen LCD-Treiber etwas verstärken und er treibt dann auch LEDs?
LC wollen etwas anders angesteuert werden. Mit Wechselspannung. Der Aufwand ist wahrscheinlich größer, als das Protokoll auf einem µC zu implementieren.

So sieht ein Programm in Bascom aus zum Empfang von einem Byte über die TWI Hardware als Slave. Eigentlich recht einfach.
Spoiler: show
Code: Alles auswählen
$regfile = "m8def.dat"                                      ' specify the used micro

$crystal = 8000000                                          ' used crystal frequency

$baud = 9600                                                ' use baud rate

$hwstack = 32                                               ' default use 32 for the hardware stack

$swstack = 10                                               ' default use 10 for the SW stack

$framesize = 40


Const Slave_addr = &H2A                                     '//Slave Addresse   Frei zwischen 1 und 127
                                                             'wählbar



'////////////Statusregister Codes/////////////////////
Const Slave_addr_rec = &H60
Const Arbitration_lost = &H68
Const Arbitration_lost_sla_rw = &H68
Const General_call = &H70
Const Arbitratiot_lost_gc = &H78
Const Prev_addr_rc_write_ack = &H80
Const Prev_addr_rc_write_nack = &H88
Const Prev_addr_rc_gc_ack = &H90
Const Prev_addr_rc_gc_nack = &H98
Const Stop_or_repeat_star_rec = &HA0
'////////////////////////////////////////////////////////


Declare Function Read_twi_status()as Byte
Declare Function Check_twi_rcv_ready()as Byte
Declare Sub Reset_twint()

Print "Start"

Twar = Slave_addr

'/////////TWI Setup///////////
Twcr.twen = 1
Twcr.twea = 1
Twcr.twsta = 0
Twcr.twsto = 0


'//////////////////////////////

Dim Twi_byte As Byte , Status_reg As Byte , Rec_ready As Byte


Do

While 0 = Check_twi_rcv_ready()                             'Warten bis ein Byte über TWI empfangen wurde

Wend


Status_reg = Read_twi_status()                              'Statusregister auslesen

''Statusregister auswerten
Select Case Status_reg

Case Slave_addr_rec : Twcr.twea = 0
                       Call Reset_twint()
Case Prev_addr_rc_write_nack : Twi_byte = Twdr             'empfangenes Byte aus dem Daenregister lesen
                                 Twcr.twsto = 0
                                 Twcr.twsta = 0
                                 Twcr.twea = 1
                                 Call Reset_twint()
                                 Rec_ready = 1
Case Stop_or_repeat_star_rec : Twcr.twsta = 0
                                Twcr.twsto = 0
                                Twcr.twea = 1
                                Call Reset_twint()

End Select


If Rec_ready = 1 Then                                       'empfangenes Byte über UART senden

Rec_ready = 0
Print Twi_byte

End If




Loop


End


Sub Reset_twint()

Twcr.twint = 1

End Sub


Function Check_twi_rcv_ready()
  Local Status As Byte

  Status = 0

  If Twcr.twint = 1 Then
Status = 1
End If


  Check_twi_rcv_ready = Status

End Function


Function Read_twi_status()
  Local Reg As Byte


  Reg = Twsr
  Reg.0 = 0
  Reg.1 = 0
  Reg.2 = 0
  Read_twi_status = Reg


End Function

@dussel, wie sieht das mit der TWI Lib aus?
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon alterhase » 26.02.2015, 19:39

Ich halte 5x7 Punktrasteranzeigen außer für schriftzeichenbasierte Anwendungen eher ungeeignet. 5x7 ist ja (vereinfacht gesagt) nix anderes als unterbestücktes 8x8.
Man denke nur an geometrische Figuren oder Kurvendarstellungen. Da würde ich schon zu 8x8 (nahtlos anreihbar) greifen.

Pacman ginge aber Pong (in HD) schon wieder nicht. 8)

Was ist denn so das Standardprotokoll für Grafikanzeigen?
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Tim Sasdrich » 26.02.2015, 19:52

Anse hat geschrieben:
Tim Sasdrich hat geschrieben:Das sind aber 16-Segment-Anzeigen, nicht Dotmatrix.
Wo ist da der Unterschied?
Ganz einfach: 16-Segment-Module lassen sich ja ganz einfach alles parallel anschließen und dann ist nichts Timing-Kritisches mehr dabei.

Klar, wollen LCDs mit Wechselspannung angesteuert werden. Aber die LEDs wird es nicht umbringen, so lange die Spannung/der Strom/die Zeit nicht zu hoch sind.

Ich war heute in Nürnberg auf der Embeded World, da gab es auch Display-Hersteller/Verkäufer.

Da gab es HD44780-Kompatible LCD-, OLED- und VFD-Module. Kann doch nicht so schwer sein, einen fertigen Controller zu finden, der einfache Dotmatrix-LED-Module ansteuern kann.

Was ich noch nicht kannte, was aber auch toll aussieht: VFD mit RGB-LED-Backlight.
"Der Kluge lernt aus allem und von jedem, der Normale aus seinen Erfahrungen und der Dumme weiß alles besser." - Sokrates (470 - 399 v. Chr.), griechischer Philosoph
Tim Sasdrich
 
Beiträge: 2961
Registriert: 07.01.2009, 14:15
Wohnort: Villingen-Schwenningen

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Anse » 26.02.2015, 20:00

KS0108 ist ein Standard Chip für Grafikdisplays.
Da gab es HD44780-Kompatible LCD-, OLED- und VFD-Module. Kann doch nicht so schwer sein, einen fertigen Controller zu finden, der einfache Dotmatrix-LED-Module ansteuern kann.
Wer sag den, das da ein fertiger IC mit der Funktion drin sein muss. Kann ja auch ein µC oder etwas noch größeres sein. Für solche Anwendungen lohnt es sich nicht immer ein eigenen Chip zu entwickeln.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon alterhase » 26.02.2015, 20:03

Eh! Der Eigenentwicklung steht ja nix im Wege. Aber man kann sich Ideenmäßig daran anlehnen. Nicht mehr und nicht weniger. :)

Der T6963C wird von Bascom anscheinend unterstützt. Vielleicht sollte man sich an den halten .?
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Chef » 02.03.2015, 20:14

Ich habe irgendwo eine selbst entworfene Bibliothek für den T6963C in Assembler für AVR.

Chef :D
Wenn es die Elektronik nicht gäbe, müsste man sie erfinden.
Benutzeravatar
Chef
Site Admin
 
Beiträge: 2941
Registriert: 04.11.2008, 17:56
Wohnort: Hamburg

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 14.02.2016, 15:32

Hier geht es jetzt weiter.
Habe die Schaltung "Matrixanzeigen - LEDs in Reih und Glied" mal nachgebaut. Eine kleine Herausforderung war das umschreiben auf Matrixanzeigen mit gemeinsamer Anode - nicht das es kompliziert war - nö, war eher eine Fleißarbeit.
Alles ist gut, die Zeichen werden, so wie gewünscht angezeigt aber
die LED leuchten mir nicht hell genug. Da habe ich mir gedacht - löte doch einfach einen zweiten 470 Ohm Widerstand parallel - dann verringert sich der Widerstand ja um die Hälfte! Wie gedacht so getan - Ergebniss: Ist immer noch genauso dunkel (vieleicht ein MÜH heller).
Kann es sein das ich den Basiswiderstand, momentan 10K verkleinern muß damit der Transitor voll durchsteuert?
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1627
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Anse » 14.02.2016, 18:59

Wenn die Transistoren nicht vollständig auf machen, werden sie meistens heiß. Wahrscheinlicher ist, das die Off-Zeit zu groß ist.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon alterhase » 14.02.2016, 21:25

Betrachten wir einmal den Augenblick wo zB. LED 2/3 leuchten sollte statisch.
Das ist eine Serienschaltung von VDD über den RON des Higside FETs im µC am Port 2, dem Rv 470 Ω bzw. 235 Ω (nach Modifikation), der Flusspannung der LED 2/3 (rot? 1,5 V, gelb? 1,9V, grün? 2,2V und der UCE des low Side Treibertransistors gegen GND.

Das kann man mit einem Scope sehr gut nachmessen. ...dafür sind sie da. 8)

:?: Ob der lowside Treibertransistor in die Sättigung getrieben wird ?
Ich nehm jetzt einmal an, dass die 5V am µC nicht schon eingebrochen sind und > 4V aus dem Port 3 auch wirklich rauskommen. ...so sind das 4V - 0,7V UBE 3,3V / 10k = 330 µA Basisstrom. Nehmen wir ein ß von 100 (schlechtester Fall) so können wir damit 33 mA pro Spalte = 33/7 = 5 mA einzel LED-strom freigeben.
...vorausgesetzt der Strom wird auch erreicht.


Limitiert wird er durch den RON des highside FET im µC (das grenzt mE. an Tierquälerei, son µC isja auch nur ein Mensch (dort wird auch das Problem liegen)) + dem LED Vorwiderstand.

Probehalber würde ich erstmal den Basisvorwiderstand auf 1/10 bis 1/5 verkleinern du siehst dann eh was sich tut.

Das ganze war jetzt einmal statisch betrachtet. Wenn die Multiplexfrequenz in Richtung "Wahnsinnige Geschwindigkeit" geht spielen auch dynamische Prozesse zB. Millerkapazität der Transistoren und Umladeverluste auch eine Rolle.
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon dussel07 » 15.02.2016, 01:41

Ok - wollte auf Nummer sicher gehen - jetzt mal rein rechnerisch:
Die max. Werte der Matrixanzeige
25mA bei Dauerbetrieb - im Pulsbetrieb (1/10 0,1ms) 150mA
Vorwärtsspannung 2V - 2,5V

Nun die errechneten Ergebnisse für diese Werte:
2.2V 25mA -> Vorwiderstand sollte bei 5V Betriebsspannung 120 Ohm sein.
Da dann den fünften Teil ergibt 24 Ohm.

Nun bin ich ja ein Schisser - also dann doch eher 33 Ohm. Bei 33 Ohm fließen dann ca. 85mA.

Dazu dann ein Watchdog damit, sollte das Programm mal hängen nichts abraucht.
----------------------------------------------------------------------------------------------
Ok, der Plan steht!
Nun habe ich mich mit dem Timer auseinander gesetzt um einen Wert für den Watchdogtimer zu bekommen.
Chef schreibt zum Timer des Matrixprogramms:
"Config Timer0 = Timer , Prescale = 8
Enable Timer0
On Timer0 Refresh_display
Enable Interrupts

Mit der Config-Anweisung wird dafür gesorgt, dass der Timer 48,8 mal in der Sekunde einen Interrupt auslöst. Anschließend wird der Timer mit der Enable-Anweisung aktiviert. Damit unser Programm weiß, welche Routine er aufrufen soll, wenn der Timer einen Interrupt auslöst, wurde die On Timer0-Anweisung eingefügt. Jetzt müssen die Interrupts nur noch mit 'Enable Interrupts' aktiviert werden. Nun wird alle 48,8x in der Sekunde die Routine ausgeführt"
----------------------------------------------------------------------------------------------
Die vorgegebenen Werte:
Systemtackt 1.000.000 / Timer0 (8-Bit Timer) / Vorteiler 8
Nun meine Rechnung:
1.000.000 (Systemtackt) / 8 (Vorteiler) = 125.000 / 256 (8Bit) = 488,28
----------------------------------------------------------------------------------------------
Also wird doch die Interruptroutine 488 mal statt 48,8 mal angesprungen???
Sozusagen alle 2ms?

Ich hatte versucht die Interruptroutine auf Timer1 mit 48,8 Hz umzustellen um Timer0 für USI frei zu bekommen, bekam aber keine brauchbare Anzeige.
Mit meinem Layout habe ich leider die Banane gezogen - hatte mir ja die I2C Slave Lib gekauft um die Matrix mit I2C ansteuern zu können. Nun werden für die Lib aber die festen Pins (Attiny2313) D.2 und D.4 (INT0 u. TIMER0) gebraucht - KÄSE!!!
Dann also die USI Schnittstelle nutzen, deren Pins ich eigentlich auch eingeplant hatte. Gesagt getan!
Erfolg - NULL - der Attiny 2313 ist nicht mehr zu erreichen - kein Zugriff mehr über ISP möglich. Was tun? Einen HV Programmer basteln (dazu später).
Sprung zurück zum Watchdog -
Der kleinste einstellbare Watchdogwert ist leider 16ms - sollte aber OK sein, da nach einem Reset das erste angezeiget Zeichen Space ist?

Hier mal ein Programmentwurf:
Spoiler: show
Code: Alles auswählen
$regfile "2313def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 5
$framesize = 20


'### Variablendefination für Zeichengenerator
Dim Dispcol As Byte
Dim Dispcnt As Byte
Dim Bitbld As Byte
Dim Chradr As Word
Dim Charnr As Byte
Dim A as Byte

'### Variablendefination für Hauptprogramm
'Dim Cnt As Byte

Dispcnt = 0 : Dispcol = 15
A = 1

'### Portkonfiguration fürs Display
Ddrb = &B00011111
DdrD = &B01111111

'### Konfiguration Watchdog
Config Watchdog = 16
Start Watchdog

'### Timersteuerung für Multiplexansteuerung konfigurieren
Config Timer0 = Timer , Prescale = 8
Enable Timer0

On Timer0 Refresh_display
Enable Interrupts


'### Hauptprogramm: Zeichenanzeige
Do
   For Charnr = 32 To 127
      Waitms 750
   Next Charnr
Loop


'### Interrupt-Routine: Multiplexsteuerung des Displays
Refresh_display:
   Chradr = Charnr - 32 : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
   Bitbld = Lookup(chradr , Chartab)
   Portb = Dispcol : Portd = Bitbld
   Incr Dispcnt : Dispcnt = Dispcnt Mod 5

   Incr A
   If A = 6 then A = 1
   Select case A
      case 1
         Dispcol = 15
      case 2
         Dispcol = 23
      Case 3
         Dispcol = 27
      Case 4
         Dispcol = 29
      Case 5
         Dispcol = 30
   End Select
'Watchdog zurücksetzen
   Reset Watchdog
Return


'### Zeichensatztabelle
Chartab:
   Data &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 ' 32=spc
   Data &B11111111 , &B11111111 , &B10100000 , &B11111111 , &B11111111 ' 33=!
   Data &B11111111 , &B11111100 , &B11111111 , &B11111100 , &B11111111 ' 34=Bracket
   Data &B11101011 , &B10000000 , &B11101011 , &B10000000 , &B11101011 ' 35=#
   Data &B11001101 , &B10110110 , &B10000000 , &B10110110 , &B11011001 ' 36=$
   Data &B10011101 , &B10011011 , &B11110111 , &B11101100 , &B11011100 ' 37=%
   Data &B11101111 , &B11011111 , &B10101101 , &B10110010 , &B11001101 ' 38=&
   Data &B11111111 , &B11111111 , &B11111100 , &B11111111 , &B11111111 ' 39='
   Data &B11111111 , &B10111110 , &B11011101 , &B11100011 , &B11111111 ' 40=(
   Data &B11111111 , &B11100011 , &B11011101 , &B10111110 , &B11111111 ' 41=)
   Data &B11010101 , &B11100011 , &B11000001 , &B11100011 , &B11010101 ' 42=*
   Data &B11110111 , &B11110111 , &B11000001 , &B11110111 , &B11110111 ' 43=+
   Data &B11111111 , &B11111111 , &B11000111 , &B10100111 , &B11111111 ' 44=,
   Data &B11110111 , &B11110111 , &B11110111 , &B11110111 , &B11110111 ' 45=-
   Data &B11111111 , &B11111111 , &B10011111 , &B10011111 , &B11111111 ' 46=.
   Data &B11111101 , &B11111011 , &B11110111 , &B11101111 , &B11011111 ' 47=/
   Data &B11000001 , &B10111010 , &B10110110 , &B10101110 , &B11000001 ' 48=0
   Data &B11111111 , &B10111111 , &B10000000 , &B10111101 , &B11111111 ' 49=1
   Data &B10111001 , &B10110110 , &B10101110 , &B10011110 , &B10111101 ' 50=2
   Data &B11001001 , &B10110110 , &B10111110 , &B10111110 , &B11011101 ' 51=3
   Data &B11101111 , &B10000000 , &B11101101 , &B11101011 , &B11100111 ' 52=4
   Data &B11001110 , &B10110110 , &B10110110 , &B10110110 , &B10110000 ' 53=5
   Data &B11001111 , &B10110110 , &B10110110 , &B10110110 , &B11000001 ' 54=6
   Data &B11111000 , &B11110110 , &B10001110 , &B11111110 , &B11111110 ' 55=7
   Data &B11001001 , &B10110110 , &B10110110 , &B10110110 , &B11001001 ' 56=8
   Data &B11000001 , &B10110110 , &B10110110 , &B10110110 , &B11111001 ' 57=9
   Data &B11111111 , &B11111111 , &B11001001 , &B11001001 , &B11111111 ' 58=:
   Data &B11111111 , &B11111111 , &B11000100 , &B10100100 , &B11111111 ' 59=;
   Data &B11111111 , &B10111110 , &B11011101 , &B11101011 , &B11110111 ' 60=<
   Data &B11101011 , &B11101011 , &B11101011 , &B11101011 , &B11101011 ' 61==
   Data &B11110111 , &B11101011 , &B11011101 , &B10111110 , &B11111111 ' 62=>
   Data &B11111001 , &B11110110 , &B10101110 , &B11111110 , &B11111101 ' 63=?
   Data &B11100001 , &B10101110 , &B10100110 , &B10111110 , &B11000001 ' 64=@
   Data &B10000011 , &B11101101 , &B11101110 , &B11101101 , &B10000011 ' 65=A
   Data &B11001001 , &B10110110 , &B10110110 , &B10110110 , &B10000000 ' 66=B
   Data &B11011101 , &B10111110 , &B10111110 , &B10111110 , &B11000001 ' 67=C
   Data &B11000001 , &B10111110 , &B10111110 , &B10111110 , &B10000000 ' 68=D
   Data &B10111110 , &B10110110 , &B10110110 , &B10110110 , &B10000000 ' 69=E
   Data &B11111110 , &B11110110 , &B11110110 , &B11110110 , &B10000000 ' 70=F
   Data &B10000110 , &B10110110 , &B10110110 , &B10111110 , &B11000001 ' 71=G
   Data &B10000000 , &B11110111 , &B11110111 , &B11110111 , &B10000000 ' 72=H
   Data &B11111111 , &B10111110 , &B10000000 , &B10111110 , &B11111111 ' 73=I
   Data &B11000000 , &B10111110 , &B10111110 , &B10111110 , &B11011110 ' 74=J
   Data &B10111110 , &B11011101 , &B11101011 , &B11110111 , &B10000000 ' 75=K
   Data &B10111111 , &B10111111 , &B10111111 , &B10111111 , &B10000000 ' 76=L
   Data &B10000000 , &B11111101 , &B11111011 , &B11111101 , &B10000000 ' 77=M
   Data &B10000000 , &B11101111 , &B11110111 , &B11111011 , &B10000000 ' 78=N
   Data &B11000001 , &B10111110 , &B10111110 , &B10111110 , &B11000001 ' 79=O
   Data &B11111001 , &B11110110 , &B11110110 , &B11110110 , &B10000000 ' 80=P
   Data &B10000001 , &B10011110 , &B10111110 , &B10111110 , &B11000001 ' 81=Q
   Data &B10111001 , &B11010110 , &B11100110 , &B11110110 , &B10000000 ' 82=R
   Data &B11001101 , &B10110110 , &B10110110 , &B10110110 , &B11011001 ' 83=S
   Data &B11111110 , &B11111110 , &B10000000 , &B11111110 , &B11111110 ' 84=T
   Data &B11000000 , &B10111111 , &B10111111 , &B10111111 , &B11000000 ' 85=U
   Data &B11100000 , &B11011111 , &B10111111 , &B11011111 , &B11100000 ' 86=V
   Data &B10000000 , &B11011111 , &B11101111 , &B11011111 , &B10000000 ' 87=W
   Data &B10011100 , &B11101011 , &B11110111 , &B11101011 , &B10011100 ' 88=X
   Data &B11111110 , &B11111101 , &B10000011 , &B11111101 , &B11111110 ' 89=Y
   Data &B10111100 , &B10111010 , &B10110110 , &B10101110 , &B10011110 ' 90=Z
   Data &B11111111 , &B10111110 , &B10000000 , &B11111111 , &B11111111 ' 91=[
   Data &B11011111 , &B11101111 , &B11110111 , &B11111011 , &B11111101 ' 92=\
   Data &B11111111 , &B11111111 , &B10000000 , &B10111110 , &B11111111 ' 93=]
   Data &B11111011 , &B11111101 , &B11111110 , &B11111101 , &B11111011 ' 94=^
   Data &B10111111 , &B10111111 , &B10111111 , &B10111111 , &B10111111 ' 95=_
   Data &B11111111 , &B11111101 , &B11111110 , &B11111111 , &B11111111 ' 96=`
   Data &B11000111 , &B10101011 , &B10101011 , &B10101011 , &B11011111 ' 97=a
   Data &B11000111 , &B10111011 , &B10111011 , &B10111011 , &B10000000 ' 98=b
   Data &B11010111 , &B10111011 , &B10111011 , &B10111011 , &B11000111 ' 99=c
   Data &B10000000 , &B10111011 , &B10111011 , &B10111011 , &B11000111 '100=d
   Data &B11110111 , &B10101011 , &B10101011 , &B10101011 , &B11000111 '101=e
   Data &B11111111 , &B11111010 , &B10000001 , &B11111011 , &B11111111 '102=f
   Data &B11000111 , &B10101011 , &B10101011 , &B10101011 , &B11110111 '103=g
   Data &B10000111 , &B11111011 , &B11111011 , &B11111011 , &B10000000 '104=h
   Data &B11111111 , &B11111111 , &B10000010 , &B11111111 , &B11111111 '105=i
   Data &B11111111 , &B11000010 , &B10111111 , &B11011111 , &B11111111 '106=j
   Data &B10111011 , &B11010111 , &B11101111 , &B11101111 , &B10000000 '107=k
   Data &B11111111 , &B11111111 , &B10111111 , &B11000000 , &B11111111 '108=l
   Data &B10000111 , &B11111011 , &B10000011 , &B11111011 , &B10000011 '109=m
   Data &B10000111 , &B11111011 , &B11111011 , &B11111011 , &B10000011 '110=n
   Data &B11000111 , &B10111011 , &B10111011 , &B10111011 , &B11000111 '111=o
   Data &B11110111 , &B11101011 , &B11101011 , &B11101011 , &B10000011 '112=p
   Data &B10000011 , &B11101011 , &B11101011 , &B11101011 , &B11110111 '113=q
   Data &B11110111 , &B11111011 , &B11111011 , &B11110111 , &B10000011 '114=r
   Data &B11011111 , &B10101011 , &B10101011 , &B10101011 , &B11110111 '115=s
   Data &B11111111 , &B10111011 , &B11000000 , &B11111011 , &B11111111 '116=t
   Data &B10000011 , &B10111111 , &B10111111 , &B10111111 , &B11000011 '117=u
   Data &B11100011 , &B11011111 , &B10111111 , &B11011111 , &B11100011 '118=v
   Data &B11000011 , &B10111111 , &B11000011 , &B10111111 , &B11000011 '119=w
   Data &B10111011 , &B11010111 , &B11101111 , &B11010111 , &B10111011 '120=x
   Data &B11111011 , &B11110111 , &B10001111 , &B11110111 , &B11111011 '121=y
   Data &B10111011 , &B10110011 , &B10101011 , &B10011011 , &B10111011 '122=z
   Data &B11111111 , &B10111110 , &B11001001 , &B11110111 , &B11111111 '123={
   Data &B11111111 , &B11111111 , &B10000000 , &B11111111 , &B11111111 '124=|
   Data &B11111111 , &B11110111 , &B11001001 , &B10111110 , &B11111111 '125=}
   Data &B11110111 , &B11101111 , &B11110111 , &B11111011 , &B11110111 '126=~
   Data &B11111111 , &B11111111 , &B11111111 , &B11111111 , &B11111111 '127=Del
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1627
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon Tim Sasdrich » 15.02.2016, 02:21

Hier gab es mal ein Thema mit einer Matrixansteuerung, da kamen Kondensatoren zum Schutz zum Einsatz. Fall das Program hängt, lädt sich der Kondensator auf und wird hochohmig => LEDs geschützt.

Die Forensuche findet es leider nicht auf die Schnelle, aber ich meine es hätte funktioniert.
"Der Kluge lernt aus allem und von jedem, der Normale aus seinen Erfahrungen und der Dumme weiß alles besser." - Sokrates (470 - 399 v. Chr.), griechischer Philosoph
Tim Sasdrich
 
Beiträge: 2961
Registriert: 07.01.2009, 14:15
Wohnort: Villingen-Schwenningen

Re: Mehrere AVRs von einem zentralem AVR steuern?

Beitragvon alterhase » 15.02.2016, 20:31

Du darfst Herrn Ohm selbstverständlich weiterhin ignorieren. :mrgreen:
Auf die Gefahr, dass ich mich wiederhole:
dussel07 hat geschrieben:...Bei 33 Ohm fließen dann ca. 85mA. ...
Falls der µC das zulässt. Immerhin hat der einen (durch den RON des Higside-FET (aus Datenblatt errechneten Wert von ca. 40 Ω )) begrenzten Ausgangsstrom.
(5 V Ub - 2,5 V Uf) / (33 Ω RV + 40 Ω RON) =2,5 V / 73 Ω = 34 mA ist der IOmax

Um tatsächlich 150mA zu erreichen müsstest du einen LED-Strom mit 2 Ports parallel bereitstellen und den RV weglassen, bzw. auf 3R9 verkleinern.
Der µC verreckt dir dabei vielleicht thermisch. ...aber Versuch macht kluch. :wink:



Tim hat geschrieben:...Kondensator lädt auf und wird hochohmig => LEDs geschützt. ...
...und der µC auch. 470 Ω und ein passender Tantal parallel der sich in der ON-Zeit lädt und in der OFF-Zeit wieder entlädt. Ja das könnte funktionieren. Ich glaub aber nicht, dass das hier im Forum schon zur Sprache gekommen ist.

Besser und seriöser finde ich eigene Spalten und Zeilentreiber plus Watchdog. ...da weiß man nach 100 Jahren noch, was sich der Entwickler dabei gedacht hat. ...falls Denken bis dahin nicht eh komplett unbekannt ist. :roll:
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

VorherigeNächste

Zurück zu Software

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste