Forum: Mikrocontroller und Digitale Elektronik LED_Laufschrift mit Mega 32 und MAX 7219


von Sebbel L. (langer77)


Lesenswert?

Moin moin,

so ich fange hier mal wieder ein Thema an, das glaube ich schon 1000 Mal 
besprochen wurde, nur habe ich für mein problem noch nicht wirklich was 
passendes gefunden!

Ich habe ein ATmega 32 und 3 MAX7219 die ich kaskadiert habe, möchte 
damit drei Matrixen a 8x8 ansteuern, Schaltung ist klar, Matrix sowieso, 
mein Problem ich muss das ganze in C schreiben habe bisher aber nur 
Assemblercodes gefunden mit dennen ich nicht wirklich was anfangen kann, 
hat hier irgendjemand sowas in C schon geschrieben und kann mir dabei 
ein wenig weiter helfen, bin um jede ernstgemeinte Antwort dankbar!!!

s.

von Udo (Gast)


Lesenswert?

Hallo Sebbel,

na, dann fang doch mal hiermit an:

1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <stdlib.h>
4
5
void transmit(unsigned char, char);
6
7
void Load_Low()
8
{  
9
  PORTB &= ~(1 << PB4);
10
}
11
12
void Load_High()
13
{
14
  PORTB |= (1 << PB4);
15
}
16
17
18
void SPI_MasterInit(void) {
19
20
    DDRB = (1<<PB4)|(1<<PB5)|(1<<PB7);      // set PB4(SS), PB5 (MOSI) and PB7 (SCK) output, all others input
21
22
    SPCR = (1<<SPE)|(1<<MSTR);           // enable SPI, Master, set clock rate fck/4  
23
  
24
    PORTB |= (1 << PB7)|(1 << PB4);
25
}
26
27
void transmit(unsigned char addr, char data) {
28
  
29
  SPDR = addr;                      // Start transmission
30
  while(!(SPSR & (1<<SPIF)));           // Wait for transmission complete
31
  
32
  asm volatile("nop");
33
 
34
  SPDR = data;                      // Start transmission
35
  while(!(SPSR & (1<<SPIF)));            // Wait for transmission complete
36
}
37
38
void test_Init(void)
39
{
40
  Load_Low();
41
  for (int i = 0; i < 3; i++)
42
  {
43
  transmit(0x0C,0x01);            // normal mode  transmit(0x0C,0x01);
44
  }
45
  Load_High();
46
47
int main()
48
{
49
  
50
    SPI_MasterInit();
51
    _delay_us(10);
52
    test_Init();
53
  
54
    tu was....
55
56
      while (1) { 
57
58
     _delay_ms(10);
59
60
      }
61
62
   return 0;
63
64
}

Schaltung:
MOSI an DIN vom ersten 7219
CLK  an CLK vom ersten 7219
PB4 (#SS) an LOAD vom ersten 7219

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

erstmal vielen Dank Udo,

hab beim linken aber einige Fehler:

Build started 19.3.2008 at 14:50:44
avr-gcc.exe  -mmcu=atmega32 -Wall -gdwarf-2 -Os -std=gnu99 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP 
-MT LED_Laufschrift.o -MF dep/LED_Laufschrift.o.d  -c 
../LED_Laufschrift.c
In file included from ../LED_Laufschrift.c:12:
c:/winavr-20071221/bin/../avr/include/util/delay.h:85:3: warning: 
#warning "F_CPU not defined for <util/delay.h>"
../LED_Laufschrift.c: In function 'test_Init':
../LED_Laufschrift.c:58: warning: 'main' is normally a non-static 
function
../LED_Laufschrift.c: In function 'main':
../LED_Laufschrift.c:64: error: 'tu' undeclared (first use in this 
function)
../LED_Laufschrift.c:64: error: (Each undeclared identifier is reported 
only once
../LED_Laufschrift.c:64: error: for each function it appears in.)
../LED_Laufschrift.c:64: error: expected ';' before 'was'
../LED_Laufschrift.c: In function 'test_Init':
../LED_Laufschrift.c:74: error: expected declaration or statement at end 
of input
make: *** [LED_Laufschrift.o] Error 1
Build failed with 5 errors and 2 warnings...

von Udo (Gast)


Lesenswert?

Hallo Sebastian,

Der erste Fehler kommt daher das du deine F_CPU nicht definiert hast:
#define F_CPU 'deine Quarzfrequenz'

naja, " tu was " ist nicht unbedingt ein gültiger Befehl in C  :)
War mehr als Platzhalter für dein restliches Programm gedacht....
kannst du ausklammern: //tu was....

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hehe, das hab ich mir auch gedacht, aber merci mal für den anfang!!!

von Sebbel L. (langer77)


Lesenswert?

jetzt nochwas dummes, wo nem ich meinen clk ab, direkt am quarz den ich 
vor dem mega32 hab  oder gibts da noch nen ausgang den ich 
durchschleifen muss???

von crazy horse (Gast)


Lesenswert?

den SCL-Pin der SPI-Schnittstelle

von Udo (Gast)


Lesenswert?

ups, sorry, das sollte natürlich SCLK nach CLK am 7219 heißen.
Also SCLK von der SPI-Schnittstelle des 32.

von Udo (Gast)


Lesenswert?

hehe, crazy horse war schneller....

von crazy horse (Gast)


Lesenswert?

sagt meine Frau auch immer :-)

von Udo (Gast)


Lesenswert?

grübel.... ist das jetzt gut oder schlecht? ;))

von Sebbel L. (langer77)


Lesenswert?

sauber jungs, bin begeistert wie schnell das geht, merci

s.

von Udo (Gast)


Lesenswert?

was meinst du jetzt Sebbel?

von Sebbel L. (langer77)


Lesenswert?

ja nix, finds echt saugut das hier geantwortet wird und keine dummen 
sprüche kommen wie man es besser machen könnte oder sonst was, war 
positiv gemeint.

von Sebbel L. (langer77)


Lesenswert?

hab aber immernoch dumme fehlermeldungen, weis da fehlt nochwas im 
programm aber das hängt damit glaub nicht zusammen


Build started 19.3.2008 at 19:50:37
In file included from ../LED_Laufschrift.c:12:
c:/winavr-20071221/bin/../avr/include/util/delay.h:85:3: warning: 
#warning "F_CPU not defined for <util/delay.h>"
../LED_Laufschrift.c:14:1: warning: "F_CPU" redefined
c:/winavr-20071221/bin/../avr/include/util/delay.h:86:1: warning: this 
is the location of the previous definition
../LED_Laufschrift.c: In function 'test_Init':
../LED_Laufschrift.c:58: warning: 'main' is normally a non-static 
function
../LED_Laufschrift.c:74: error: expected declaration or statement at end 
of input
make: *** [LED_Laufschrift.o] Error 1
Build failed with 1 errors and 4 warnings...



hab die cpu frequenz laut avr-gcc tutorial so definiert  #define F_CPU 
[10000000], sollte ja stimmen da ich die taktfrequenz in hertz angeben 
muss sprich 10mhz= 10000000

von Udo (Gast)


Lesenswert?

arbeitest du mit dem AVR-Studio?

von Udo (Gast)


Lesenswert?

Da fehlt ein }


void test_Init(void)
{
  Load_Low();
  for (int i = 0; i < 3; i++)
  {
  transmit(0x0C,0x01);            // normal mode  transmit(0x0C,0x01);
  }
  Load_High();


} // das hier

von Udo (Gast)


Lesenswert?

und #define F_CPU  muß

so aussehen:  #define F_CPU 10000000

ohne die [] Klammern

von Sebbel L. (langer77)


Lesenswert?

jap ich arbeite mit dem avr studio, ok werd ich morgen früh gleich 
ausprobieren und euch berichten,

s.

von Sebbel L. (langer77)


Lesenswert?

mahlzeit maenners,

melde mich wieder zurück war wegen einer notop meiner freundin, die 
ihren blinddarm rausbekam etwas verhindert!!!

quellcode ist jetzt fehlerfrei, danke udo

von Sebbel L. (langer77)


Lesenswert?

...jetzt habe ich folgendes problem, das ich mein programm nicht in den 
microcontroller laden kann, benutze den avrisp mkII programmer, bei dem 
beide grünen ledsleuchten, also sollte da ja alles stimmen meine 
frequenz zum isp liegt bei 1000khz, sollte also auch passen, was kan man 
noch falsch machen, benutze das avr studio, hab mein hexfile erzeugt und 
auch richtig ausgewählt,hmmm...hat irgendjeamnd ne antwort??
achso ich benutze einen ATmega32 16PU, hier sollte ich doch dann im 
device einfach den ATmega32 auswählen, oder??

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

so ich hab jetzt mal die fehlermeldung angehängt, vielelicht bringst ja 
was!!

soden

s.

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

den isp, hab ich mit dem atmega folgendermassen verbunden, wie oben in 
der tollen zeichnung, habe beim reset gegen 5V einen 10k ohm widerstand 
drin, sollte doch auch passen, oder seh ich das alles falsch???

von Udo (Gast)


Lesenswert?

Hallo Sebastian,

bei Atmel gibt es folgende Info:

AVR ISP mkII fix:
AVRISP mkII programmers manufactured from 20071012 to 20080130 has a 
missing parameter in the firmware. This causes the AVRISP mkII to not be 
able to communicate with the target AVR. The AVRISP mkII can be fixed by 
upgrading the firmware For procedure details see AVRISP mkII fix note.

Download upgrade package at 
http://www.atmel.no/beta_ware/as4/AVRISPmkIIUpgrade.exe. ...

versuch es mal damit.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

moin udo,

habe die exe installiert gleiches problem, meinte dann auch das die exe 
die ich von dir hab die 1.06 ist und ich die neuste installieren sollte 
die 1.09, hab ich alles getan nichts verändert, das eeprom lässt sich 
laden übers avr aber das flash nicht, mach ich da wat falsch???

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

hier wieder fehlermeldungen,hab zwei fotos gemacht, das zweite ist im 
nächsten post, hab probleme mit dem flash, mach ich da irgendwelche 
falschen einstellungen oder was ist das

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

fehlermeldung

von Udo (Gast)


Lesenswert?

das erste Bild sieht doch schon gut aus, der MKII wird scheinbar 
erkannt.
Ins EEprom kannst du nichts brennen, weil du nichts hast was du ins 
EEprom brennen kannst. Dein Code kommt komplett ins Flash.
Zeig mal das Bild der Ordner "Main" und "Fuses"

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

nochwas ich benutze eine ATmega32 16PU finde diesen baustein aber nicht 
unter AVR studio, bringt da auch ne warnung, kann mein ganzes problem 
damit zusammenhänegn???

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

main ist oben, fuse in dem post

von Udo (Gast)


Lesenswert?

also wenn ATmega32 auf der CPU steht ist auch eine drin :))
16 ist die max.Takfrequenz in MHz und P steht DIP-Gehäuse und U für 
unlead, also bleifrei.
Wenn AVRStudio schon Fehlermeldungen bringt, würd ich erst mal da 
schauen, gegebenenfalls gibt es da ein Update: www.atmel.com

von Udo (Gast)


Lesenswert?

also. die ganzen Bilder bringen nichts, da die CPU nicht richtig vom 
AVRStudio erkannt wird. Würde da jetzt auch nichts umstellen an den 
Fuses ect.
Erst mal schauen was mit dem AVRStudio ist.

von Sebbel L. (langer77)


Lesenswert?

...hmmm, was ich halt komisch finde ist das er im dem unteren fenster 
vom main dann schreibt, signatur blablabla OK, und oben dann wieder 
schreibt WARNING signature dos not match selected device??

von Udo (Gast)


Lesenswert?

dein AVRStudio spinnt.... schau, dass du das erstmal richtig zum laufen 
bekommst

von Sebbel L. (langer77)


Lesenswert?

allet klar, ich werds mal neuinstallieren, mach des avr studio drauf und 
des gcc bin mal gespannt was dann passiert ;),...meld mich dann wieder

von Udo (Gast)


Lesenswert?

erst das GCC installieren und dann erst, aber die neueste Version von 
Atmel + Servicepacks, AVRStudio installieren

von Sebbel L. (langer77)


Lesenswert?

also ich hab jetzt vorgehabt die gcc zu installieren danch das avr 
studio, was soll ich von atmel installieren?

von Sebbel L. (langer77)


Lesenswert?

sprich zuerst winavr, weil da mein gcc drin it und danach das avr studio

von Udo (Gast)


Lesenswert?

genau die Reihenfolge. Soviel ich weiß gibt es von Atmel Servicepacks zu 
dem AVRStudio.

von Sebbel L. (langer77)


Lesenswert?

oooh man jetzt dreh ich durch, hab zuerst das win avr, danach das avr 
studio installiert, und hab wieder den gleichen mist,

von Udo (Gast)


Lesenswert?

du solltest dir hier:
http://www.atmel.com/dyn/products/tools_card.asp?family_id=607&family_name=AVR%AE+8%2DBit+RISC+&tool_id=2725

erst das runterladen und installieren:
AVR Studio 4.13 (build 528) (73 MB, updated 03/07)
dann dieses runterladen und installieren:
AVR Studio 4.13 SP2 (build 571) (45 MB, updated 12/07)

dann eventuell noch mal den USB-Treiber für den MKII und die Updates für 
das MKII.

Wie deinstallierst du? hoffentlich über Start/Einstellungen/Software

von Sebbel L. (langer77)


Lesenswert?

logisch über software,

ich hab runtergeladen, das:

1. AVR Studio 4.13 (build 528
2. AVR Studio 4.13 SP1 (build 557)
3. AVR Studio 4.13 SP2 (build 571)

genau in der reihenfolge habe ich auch installiert, zuvor das winavr.

von Udo (Gast)


Lesenswert?

ich hab hier leider kein AVRStudio, kann ich erst heute abend 
nachschauen was alles kontrolliert (eingestellt) werden muß im 
AVRSTudio.

von Thomas W. (thomasw)


Lesenswert?

Moin!

Zu den Programmierproblemen:
Kann es sein, dass du die Software für einen anderen Prozessor als den 
mega32 kompilierst? Das muss vorher noch an anderer Stelle eingestellt 
werden. Habe gerade kein AVR-Studio zur Hand um den Pfad zu nennen. War 
aber irgendwas mit "Konfiguration" (?).

Welcher Prozessor momentan ausgewählt ist kannst du auch im Makefile 
angucken.

MfG

von Sebbel L. (langer77)


Lesenswert?

hmm,
also ich hab da schon den atmega32 eingestellt unter dem avr studio, 
aber das blöde ist ja wie oben schon beschrieben, das er im unteren teil 
des fensters meint signatur ist ok und oben sagt er mir was vonwegen 
warning, signature dos not match selected device, man man kann es sein 
das mein avrisp mkII einen schuss hat, das ist doch echt zum haare 
verleiren, macht mich echt fertig, zumal ich ja gerade erst angefnagen 
hab mit dem ganzen scheiss und dann am anfang gleich so probleme

s.

von Thomas W. (thomasw)


Lesenswert?

Die Fehlermeldung würde ja auf meinen Hinweis deuten. Du kannst die 
Signatur des angeschlossenen mega auslesen. Ist ja auch ok. Wenn du nun 
aber versuchen willst zu Flashen, sagt er dir, dass die Software nicht 
für den AVR passt, dessen Signatur du ausgelesen hast.

Die Auswahl des Prozessors in dem Programmiermenü, von dem du oben die 
Screenshots gemacht hast, ist was anderes als die Auswahl des Prozessors 
für den compiler.

Guck dir mal das make-File an, das irgendwo in dem Projektordner sein 
muss. Da steht drin für welchen AVR der Code kompiliert wird.

von Sebbel L. (langer77)


Lesenswert?

egal was ich ändern und übertragen will auch wenn es nur die fusebits 
sind, bringt immer die gleiche fehlermeldung, wie oben schon eingefügt,
der isp stecker ist auch so beschaltet wie überall beschrieben, habe 
oben auch ein bild eingefügt, habe eine 10k ohm gegen 5V am reset.

von Sebbel L. (langer77)


Lesenswert?

ok, danke wieder was gelernt, habe hier mal das makefile:


######################################################################## 
#######
# Makefile for the project LED_Laufschrift
######################################################################## 
#######

## General Flags
PROJECT = LED_Laufschrift
MCU = atmega32
TARGET = LED_Laufschrift.elf
CC = avr-gcc.exe

## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)

## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=10000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS +=  -Wl,-Map=LED_Laufschrift.map


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings


## Objects that must be built in order to link
OBJECTS = LED_Laufschrift.o

## Objects explicitly added by the user
LINKONLYOBJECTS =

## Build
all: $(TARGET) LED_Laufschrift.hex LED_Laufschrift.eep 
LED_Laufschrift.lss size

## Compile
LED_Laufschrift.o: ../LED_Laufschrift.c
  $(CC) $(INCLUDES) $(CFLAGS) -c  $<

##Link
$(TARGET): $(OBJECTS)
   $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o 
$(TARGET)

%.hex: $(TARGET)
  avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@

%.eep: $(TARGET)
  -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0

%.lss: $(TARGET)
  avr-objdump -h -S $< > $@

size: ${TARGET}
  @echo
  @avr-size -C --mcu=${MCU} ${TARGET}

## Clean target
.PHONY: clean
clean:
  -rm -rf $(OBJECTS) LED_Laufschrift.elf dep/* LED_Laufschrift.hex 
LED_Laufschrift.eep LED_Laufschrift.lss LED_Laufschrift.map


## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)


wie gesagt benutze eine atmega32 16PU also sollte es ja passen wie es 
oben beschrieben ist unter MCU =atmega32

von Thomas W. (thomasw)


Lesenswert?

Hmm, daran kanns also nicht liegen.

Achso, ich sehe gerade, dass die Signatur doch nicht richtig gelesen 
wurde. Kommen ja nur Nullen raus. Dann würde ich mein Augenmerk nochmal 
auf die Verkabelung richten. Hast du mal durchgemessen, dass auch 
Kontakt vom Programmierstecker zum zugehörigen AVR-Pin besteht und das 
keine Kurzschlüsse zwischen den Leitungen besteht?

Ich habe selbst noch nicht viel mit dem SPI-Bus gemacht. Wie sieht es 
denn mit der Beeinflussung der MAX 7219 auf den Programmieradapter aus?

von Sebbel L. (langer77)


Lesenswert?

durchmessen werd ich das alles jetzt auch nochmal, beeinflussen sollte 
sich da nix, da es egal ist ob die max7219 gesteckt sind oder nicht!!!

von Sebbel L. (langer77)


Lesenswert?

also hab es durchgemessen und des passt soweit alles, ich kann ja 
eigentlich fast alles machen ausser des flash programmieren, fusebits 
setzen,

von Thomas W. (thomasw)


Lesenswert?

In deinem Posting von "25.03.2008 12:28" kann man die Fuses ja sehen. 
Und da hat er auch nur Nullen gelesen. Oder liest er die manchmal auch 
richtig?

von Sebbel L. (langer77)


Lesenswert?

hab jetz auch mal nen andere prozessor gesteckt, also nen anderen mega32 
das gleiche problem

von Sebbel L. (langer77)


Lesenswert?

des weis ich ja nicht wirklich,
wollte die fusebits so setzen das er meine externe quartz erkennt, aber 
des macht er auch nicht, ich find des alles sehr komisch weil irgendeine 
verbindung hab ich ja zu dem prozessor

von Sebbel L. (langer77)


Lesenswert?

...so hab jetzt auch nochmal die avr checkliste durch, alles wie es 
beschrieben ist getan, bzw. war schon vorhanden.

nochmal zu meinem isp stecker:
pin1 = MISO
pin2 = +5V
pin3 = SCK
pin4 = MOSI
pin5 = RESET
pin6 = GND

das sehe ich doch richtig so,.....habe zwar einen 10polige gegenstelle 
auf meiner platine verauen müssen aber da geht das kabel ja auch rein 
und ja ich habe den pin 3 als meine 1 genommen, da ja 10polig, sprich 
alles verschoben!

von Thomas W. (thomasw)


Lesenswert?

Moment. Verstehe ich das richtig, dass du den 6poligen Stecker in die 
10polige Buchse gesteckt hast? Oder hast du dir ein Adapterkabel gebaut?

Die Gegenüberstellung der 10poligen und 6poligen Steckerbelegung findest 
du hier:
AVR In System Programmer

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

nein nein, da die 6 polige buchse nicht so leicht zu finden ist(die die 
ich auf meiner platine verbaut habe), habe ich eine 10 polige genommen, 
bei der ich die ersten zwei und die lezten zwei pins abgeschnitten habe, 
sprich 1und2, 9und10, was ich sagen wollte ist das ich auf dem 
ehemaligen pin 3 an der buchse jetzt mein pin 1 habe, papelapap, des 
passt schon so, hab einfach ne 10polige buchse genommen den 6poligen 
stecker da rein gesteckt und entsprechend der pinbelegung für den 
6poligen abgegriffen wie im bild das ich eingefügt habe!!!!

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

so männers, habe gegoogelt und durch glück hierdrauf gestossen aber nur 
weil ich vorher die fehlermeldung hatte,(oben)

dann bin ich auf diesen Kommetar gestossen und es hat geholfen, man man 
war das ne geburt!!!

----------------------------------------------------
Das Problem könnte an der Chip Revision liegen.
Im ct-Bot Forum hatten wir dasselbe Problem.

Problem ist wohl, dass sich die Fuses bei fabrikfrischen Chip mit 06xxx 
Revision nicht korrekt lesen lassen.
Probier mal:
* ISP Frequenz so niedrig wie möglich einstellen (max. 250kHz).
* Danach einen Chip Erase ausführen
* Dann kann man die Fuses setzen und die ISP Frequenz wieder hochsetzen 
und alles ist OK.
----------------------------------------------------

so jetzt weiter im programm, habe jetzt zumindest feststellen können das 
alles was ich vorher getan hatte richtig war,das baut doch auf ;)

gruss s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian.

Glückwunsch...
Bin gerade rein und hab deinen Erfolg gesehen.
Das war natürlich ein blöder Fehler. :(

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

fotos folgen morgen, vom ersten Funktionstest, man man war des ne 
Geburt!!!

von Udo S. (udo)


Lesenswert?

hast du denn schon im Programm weiter gemacht?

von Sebbel L. (langer77)


Lesenswert?

nicht wirklich, da werd ich morgen dran basteln, habe mich die letzten 
zwei tage mit dem fehler beschäftigt, an mir selbst gezweifelt aber 
morgen geh ich das an, funktion der matrix hab ich aber, es leuchten mal 
zumindest alle Leds ;),dann mal nen schönen abend noch, muss ins 
krankenhaus,

s.

von Sebbel L. (langer77)


Lesenswert?

moin moin,

hab da nochmal ne Frage am Rande, brauch ich am Ausgang meines 
Mikrocontrollers und an den DIN Eingängen der MAX7219, Pullup, bzw. 
Pulldownwiderstände???
Denke doch schon, bin mir aber nicht so sicher!

Gruss

s.

von Udo (Gast)


Lesenswert?

du solltest am ersten Modul einen 10k PullUp an Din anschalten und an 
jeden Dout einen. An SCLK und LOAD kommt am letzen Modul je ein 10K als 
PullUp.

Gruß
Udo

von Udo (Gast)


Lesenswert?

Nachtrag: wichtig! an jedem 7219 muß direkt am 
Versorgungsspannungsanschluss ein 100nF und ein 10µF parallel, gegen 
Masse geschaltet werden.

von Udo (Gast)


Lesenswert?


von Sebbel L. (langer77)


Lesenswert?

moin udo,
sieht sauber aus deine anzeige, respekt, das mit den kondensatoren hatte 
ich schon, aber danke,
hab an den MAX7219 auch noch 22k widerstände von 5V auf Pin 18,
werd jetzt aber mal die pullups noch einlöten ;)

s.


achja Bilder wollt ich ja auch noch posten, kommt demnächst

von Sebbel L. (langer77)


Lesenswert?

so da bin ich wieder, bist dir da ganz sicher mit den PULLUP, sprich 
gegen +5V Widerständen, hab jetzt wieder ganz komische probleme!!!

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

sehr schön aufgebaut deine Schaltung. Sieht gut aus.

Die Kondensatoren sollten nur so nah wie möglich an die 7219 ran. Das 
ist sehr wichtig.
Wir gesagt, die Pullups genau so wie ich es oben beschrieben habe. 
Allerdings könnte es in deinem Fall kontraproduktiv sein, da wegen dem 
Aufbau auf Lochrasterkarte und der damit bedingten Leiterbahnführung die 
Spannungsversorgung und Datenleitungen mit der Multiplexfrequenz des 
7219 verseucht sind. Wenn du ein Scope hast, das mal messen. 
Gegebenenfalls direkt am IC auf der Leiterbahnseite nochmal mit 
zusätzlichen Kondensatoren die Spannungsversorgung abblocken.

Gruß
Udo

Nachtrag: achte beim einstellen von Bildern auf die Dateigröße. Evtl. 
das png Format wählen, zumindest aber bei jpg komprimieren. Sonst gibt 
es Ärger mit den Mod's

von Sebbel L. (langer77)


Lesenswert?

....hehehe


alles klar werde drauf achten,(mit den Pics)
dann würd ich sagen sollte ich das Ding mal ätzen, funktionieren tut es 
ja, hab mir schon gedacht das es nicht so toll ist auf lochraster 
aufzubauen, aber zum ersten mal testen geht des ja;)

s.

von Sebbel L. (langer77)


Lesenswert?

Wiedermal ne grundsätzliche Frage,


ich muss mir doch ein array anlegen in dem ich mein text speicher, 
diesen text bzw dieses array muss ich dann irgendwie mit dem ascii-code 
bzw generator verbinden, so dann hab ich das irgendwie, gott weis wie,
die andere sache ist ja das ich mir register anlegen muss die die werte 
immer ein register weiterschieben, damit das ding dann auch läuft, oder 
seh ich das jetzt mal grundsätzlich falsch???

gruss

s.

von Udo S. (udo)


Lesenswert?

du wirst, wenn du Text anzeigen willst, erstmal eine Datei anlegen 
müssen, wie z.B: Zeichensatz.h .In dieser Datei legst du dann die 
hex-Daten für die einzelnen Zeichen ab, so wie in diesem Beispiel:

1
#ifndef h_zeichensatz
2
#define h_zeichensatz
3
4
unsigned char ch_32[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  // Code for char Space 
5
unsigned char ch_33[8] = {0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x00};  // Code for char !
6
unsigned char ch_34[8] = {0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00};  // Code for char "
7
unsigned char ch_35[8] = {0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00};  // Code for char #
8
9
unsigned char ch_36[8] = {0x00, 0x32, 0x49, 0xFF, 0x49, 0x26, 0x00, 0x00};  // Code for char $
10
unsigned char ch_37[8] = {0x00, 0x32, 0x34, 0x08, 0x16, 0x26, 0x00, 0x00};  // Code for char %
11
....
12
....
13
....
14
15
unsigned char* Zeichentabelle[256];
16
17
void static Zeichentabelle_Initialisieren()
18
{
19
  Zeichentabelle[32] = ch_32;
20
  Zeichentabelle[33] = ch_33;
21
  Zeichentabelle[34] = ch_34;
22
  Zeichentabelle[35] = ch_35;
23
  Zeichentabelle[36] = ch_36;
24
  Zeichentabelle[37] = ch_37;
25
.....
26
....
27
....
28
}
29
#endif

wobei die 32..33..34... jeweils für den dezimalen ASCII-Code des 
Zeichens steht.

diese Datei bindest du dann so in deine .c ein:
1
#include "Zeichensatz.h"

Damit hast du jetzt erst mal genug Beschäftigung.... :)

Der Ansatz alles in ein Register und dann das Register schieben ist 
falsch.
Besser ist, das ganze zu Berechnen. Aber dazu später.

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

moin moin,

sag mal udo, die höhe der zeichen die du oben angegeben hast ist doch 
8zeilig,oder??? wie hoch sind die buchstaben 6 zeilig??? der erste wert 
ist ja die oeberste zeile,oder??
ich hab da was gefunden, aber denke das funzt nicht so ganz, hast du 
alles von hand gemacht, jedes zeichen??? wenn ja junge junge das ist ja 
ein ganzes stück arbeit, gehen die buchstaben bei dir erst in der 
zweiten zeile von unten los, da man ja irgendwie ein komma machen möchte 
und dies ja tiefer sitzt!!!!
gruss

s.

von Sebbel L. (langer77)


Lesenswert?

sehe ich das richtig das du spalten weise durch gehst und nicht 
zeilenweise,so sieht es zumindest bei dem ! aus, da sind ja die ersten 
zwei spalten aus in der dritten ist dann das ! und dann sind die letzten 
4 spalten wieder aus, oder hab ich das jetzt falsch interprtiert???

gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

Ja, ich gehe Spaltenweise vor, vorgegeben durch den internen Aufbau der 
Register beim 7219.
Für die 8x8 Matrix wird der 7219 im "no decode" - Modus betrieben.
Dadurch ergibt sich, dass jede Spalte = Digit0 bis Digit7 = Adresse, mit 
einem entsprechen Wert im Data-Register beschrieben wird. Die Zuordnung 
sieht so aus ( lt.Datenblatt):
z.B.: Digit 0, also die ganz rechte Spalte, das hat die Adresse 0x01. 
Füllst du das dazugehörige Datenregister z.B. mit: 0xFF , leuchten alle 
LED's in dieser Spalte. D.h., das Wort, dass du dem 7219 sendest, muss 
also 0x01FF sein. Die Berechnung des Daten-Wertes für eine Spalte sieht 
so aus:

X  = D7 = MSB = Wertigkeit: 8 dezimal
X  = D6 =       Wertigkeit: 4 dezimal
X  = D5 =       Wertigkeit: 2 dezimal
X  = D4 =       Wertigkeit: 1 dezimal
X  = D3 =       Wertigkeit: 8 dezimal
X  = D2 =       Wertigkeit: 4 dezimal
X  = D1 =       Wertigkeit: 2 dezimal
X  = D0 = LSB = Wertigkeit: 1 dezimal

Der ermittelte dezimale Wert muss dann natürlich in Sedezimal gewandelt 
werden.

Wie du deinen Zeichensatz jetzt erstellst, ob die Zeichen nur 1 Zeilig 
oder 8 Zeilig hoch sind, bleibt dir überlassen.
Die Spaltenbreite für jedes Zeichen kannst du auch variieren. Das wird 
natürlich von der Logik her schwieriger, die Zeichen dann aneinander zu 
fügen. In meinem Beispiel im oberen Post bin ich von einer festen 
Zeichenbreite von 8 Spalten ausgegangen.

Ich hatte mir hier: http://www.pocketmt.com/ die Demoversion des GLCD 
Font Creator's gezogen, damit können immer 15 Zeichen erstellt und auch 
ausgegeben werden. Aber Achtung, für die Verwendung beim 7219 müssen die 
erstellten Zeichen vor der Ausgabe horizontal gespiegelt werden.

>wenn ja junge junge das ist ja ein ganzes stück arbeit, snip....

Hab ich nicht gesagt, dass du erst mal genug Beschäftigung hast..... :))

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

looool,
alles klar, hab bis jetzt 88 zeichen erstellt, alle 8 splaten breit, 
wobei mir gleub ich 5 spalten für alle zeichen und zahlen und 
sonderzeichen langen würden, hmmm, werd mal weitermachen,

kanns dir ja mal zeigen oder schicken!


hab auch noch kein schimmer wie ich das mit dem laufen dann realisieren 
kann, das sich die buchstaben durchschieben.

s.

von Udo S. (udo)


Lesenswert?

>hab auch noch kein schimmer wie ich das mit dem laufen dann realisieren
>kann, das sich die buchstaben durchschieben.

kommt Zeit, kommt Rat.....

also die Tastaturzeichen solltens wohl schon alle sein, oder?

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

ja,
 hab jetzt mal 98 zeichen gemacht, buchstaben a-z (groß und klein), dann 
ä,ö,ü (gross und klein), zahlen von 0-9, sonderzeichen, jetzt langt es 
;)

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

mir ist da noch was eingefallen. Um Platz im Ram zu sparen wäre es 
sinnvoll das die Zeichen aus dem Programmspace nicht ins RAM geholt 
werden. Dazu müßte die Zeichentabelle aber ergänzt werden:
1
#ifndef h_zeichensatz_neu
2
#define h_zeichensatz_neu
3
4
#include <avr/pgmspace.h>
5
6
unsigned char PROGMEM ch_32[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  // Code for char Space 
7
unsigned char PROGMEM ch_33[8] = {0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x00};  // Code for char !
8
unsigned char PROGMEM ch_34[8] = {0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00};  // Code for char "
9
unsigned char PROGMEM ch_35[8] = {0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00};  // Code for char #
10
unsigned char PROGMEM ch_36[8] = {0x00, 0x32, 0x49, 0xFF, 0x49, 0x26, 0x00, 0x00};  // Code for char $
11
unsigned char PROGMEM ch_37[8] = {0x00, 0x32, 0x34, 0x08, 0x16, 0x26, 0x00, 0x00};  // Code for char %
12
unsigned char PROGMEM ch_38[8] = {0x00, 0x22, 0x55, 0x49, 0x55, 0x22, 0x05, 0x00};  // Code for char &
13
unsigned char PROGMEM ch_39[8] = {0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00};  // Code for char '
14
unsigned char PROGMEM ch_40[8] = {0x00, 0x00, 0x3C, 0x42, 0x81, 0x00, 0x00, 0x00};  // Code for char (
15
unsigned char PROGMEM ch_41[8] = {0x00, 0x00, 0x00, 0x81, 0x42, 0x3C, 0x00, 0x00};  // Code for char )
16
........
17
........
18
19
unsigned char* Zeichentabelle[256]; // hier sollte nichts geändert werden, egal wieviel Zeichen oben definiert sind
20
21
void static Zeichentabelle_Initialisieren()
22
{
23
  Zeichentabelle[32] = ch_32;
24
  Zeichentabelle[33] = ch_33;
25
  Zeichentabelle[34] = ch_34;
26
  Zeichentabelle[35] = ch_35;
27
  Zeichentabelle[36] = ch_36;
28
......
29
......

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hallo,

was ich nochmal fragen wollte das horizontal spiegeln, kann ich das 
übers programm machen, oder muss ich das von hand machen???

gruss

s.

von Udo S. (udo)


Lesenswert?

das kannst du in dem Font Creator machen und musst das nur spiegeln, 
wenn du die Zeichen mit dem Font Creator erstellst.

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

ochne, oder??

d.h. ich muss alle zeichen nochmal neu machen, ich dreh durch,

hmmm, das was ich später an den max7219 schicke vom mega32 ist doch das 
D0-D15, ist es dann nicht so das es mit D0 losgeht, oder fängt D0 an der 
8ten Stelle an und geht dann nach links mit D1, D2, D3 weiter???

entweder verstehe ich dich gerade nicht,oder wir missverstehen uns?? ich 
hab mal ein bild zugefügt und dein $ zeichen eingezeichnet, wenn du die 
werte so benutzt und ich so auch vorgegangen bin, passt es doch!!! die 
roten punkte sind die eingeschaltetn LEDS ;)


gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

wenn du die Zeichen so wie in deinem Beispiel erstellt hast, ist alles 
o.K.

Zu deiner Frage wie die Zeichen zum 7219 gesendet werden:
Der 7219 erwartet als erstes Bit das MSB, also D15, da du immer ein 
Wort, also 16 Bit, senden musst. Davon stellt D15 bis D8 die Adresse dar 
und D7 bis D0 deine Daten (das Zeichen).

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

mahlzeit,

ok das hab ich soweit verstanden, melde mich morgen wieder da ich grad 
noch ne kleine baustelle habe.

gruss

s.

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

mahlzeit,

du udo das was du etwas oben gemeint hast mit: wobei die 32..33..34... 
jeweils für den dezimalen ASCII-Code des Zeichens steht. versteh ich 
nicht so ganz, hab das jetzt mal fertig gemacht würd mich interessieren 
ob es stimmt was ich gemacht habe!!! hab es angehängt ;)

gruss

s.

von Udo S. (Gast)


Lesenswert?

Hallo Sebastian,

schau mal hier: http://de.wikipedia.org/wiki/ASCII-Tabelle

und dann fehlt noch das "PROGMEM" hinter unsigned char

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

mahlzeit udo,


also heist das für mich das ich im oberen teil überall die richtigen 
zahlen eintragen muss sprich

unsigned char ch_1[8]  ={0x00, 0x3F, 0x44, 0x44, 0x3F, 0x00, 0x00, 
0x00};  // Code for char A   wird dann-->
 unsigned char ch_65[8]  ={0x00, 0x3F, 0x44, 0x44, 0x3F, 0x00, 0x00, 
0x00};  // Code for char A


usw.



und bei der tabelle heist es dann für z.B A

Zeichentabelle[65]  = ch_65;


und das mit dem  "Progmem" ist dann so gemeint?


unsigned char ch_65[8] PROGMEM  ={0x00, 0x3F, 0x44, 0x44, 0x3F, 0x00, 
0x00, 0x00};  // Code for char A

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

hallo,
ich nochmal

hast du das € zeichen als ASCII, find des nicht, entweder hab ich einen 
alten ASCII satz hier, oder es gibt es nicht???

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

richtig, bis auf PROGMEM.

Das muss so aussehen:
1
unsigned char PROGMEM ch_128[8] = {0x00, 0x14, 0x3E, 0x55, 0x55, 0x41, 0x00, 0x00};  // Code for char EURO
2
3
// und im unteren Teil:
4
5
Zeichentabelle[128] = ch_128;

Es gibt alle Zeichen, schau mal hier:
http://www.torsten-horn.de/techdocs/ascii.htm

Gruß
Udo

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

Einen Jumper für die Baudrate? Was für eine Baudrate meinst du?

Zum Stromlaufplan:

Am IC4 PIN DOUT , der Widerstand kann entfallen.
Am IC4 PIN CLK , den Widerstand gegen Masse schalten. (Ich weiß, ich 
habs vorher anders gesagt, sorry. )
Am IC1 von PIN 9 einen Kondensator: 100nF, gegen Masse schalten.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

mahlzeit,

hmm, am pin 9 von ic1 hab ich doch vor dem widersatnd einen 100nF 
kondensator, oder muss noch direkt davor einer , kann ich eigentlich 
noch einen externen reset-taster einbasteln, den muss ich ja entprellen 
dann, oder???


gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

der Kondensator, den du vor dem Widerstand geschaltet hast, liegt 
zwischen Vcc und GND und dient als Abblockondensator für IC1. Für eine 
vernünftige Resetfunktion brauchst du neben dem Widerstand noch einen 
Kondensator von 100nF direkt von Pin9 gegen GND. Parallel zu diesem 
Kondensator kannst du natürlich auch einen Tastkontakt setzen, als 
manuellen Reset. Der braucht auch nicht entprellt werden.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

moin moin,

so da bin ich mal wieder hatte nicht soviel zeit in der letzten zeit 
;)....meine platine ist fertig und geht nicht, bringt wieder die 
fehlermeldung
entering programm mode,..failed,...ich hab zu meiner lochrasterplatine 
nix verändert, nur mehr masseflächen, ich versteh die welt nid,.. werds 
nochmal(5000mal) durchmessen,

soden

s.

von Sebbel L. (langer77)


Lesenswert?

ich verstehs echt nicht,

hab nur die änderungen drinne wie du oben gesagt hast, auf meiner 
lochraster ist es aber nicht gannz so, da  ist es wie das schaltbild was 
ich gepostet habe, versteh des nicht,
schaltung hab ich jetzt 5 mal durchgemessen, kein plan was da falsch 
sein sollte,, ich poste mal ein foto der platine
s.

von Udo S. (udo)


Angehängte Dateien:

Lesenswert?

Hallo Sebastian,

ich kann in deinem Stromlaufplan auch nichts Fehlerhaftes entdecken.
Da wirst du deine Leiterplatte noch mal genauer unter die Lupe nehmen 
müssen. Evtl. Haarrisse in den Leiterbahnen, Kurzschlüsse beim Löten 
etc.
Zum Programm hab ich mal was angehängt.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hallo udo,

erstmal danke, könnte vielleicht ein haarris sein, mal 
schauen....vielleicht liegt es aber auch an der leitungsführung vom 
stecker zum controller, muss ich mal testen.

gruss

s.

von an3ma (Gast)


Lesenswert?

So nebenbei erwähnt, man kann als Treiber auch MAX6960 benutzen. Hat 
paar nette Spielereien wie Fading, Negierung, auch bicolour ist möglich. 
Ein Treiber steuert zwei 8x8-Monocolour, bzw. eine 8x8-bicolour. Ich 
hatte sowas im Rahmen eines Schulprojekts aufgebaut (3xMAX6960 mit 6 8x8 
Matrizen und ATMega16) und es hat nicht schlecht funktioniert. MAX6960 
habe ich im Handel noch nie gesehen, aber man kann bei Maxim paar 
Samples bestellen (ich hatte damals jeweils 8 von 6960, -61, -62 und -63 
bekommen). Aber ich rate zu 6960, weil mit 6962 hatte ich Probleme.
Damals war es meine erste Erfahrung mit µc.

von an3ma (Gast)


Lesenswert?

Noch vergessen eine Seite, ich zum Einstieg verwendet habe: 
http://metalab.at/wiki/MetaLEDs

von Sebbel L. (langer77)


Lesenswert?

moin udo,

das angehängte sieht ja ganz gut aus, aber lauffähig ist das nicht 
unbedingt, versuch des gerade zu verstehen ;)

gruss

s.

von Udo S. (Gast)


Lesenswert?

Hallo Sebastian,

also bei mir läuft es.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hmm,
ok,loooool,......dann ist mein problem wieder mal vor der tastatur ;)

dann muss ich mal schauen was ich falsch gemacht habe, bzw. gemacht 
haben könnte

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

moin, moin,...
so morgen werd ich meine neue platine ausprobieren, hoffe die funst dann 
;).....werd mich dann wieder melden, soden udo, bis morgen

s.

von Sebbel L. (langer77)


Lesenswert?

mahlzeit,

da bin ich wieder, Platine funst wieder :).....dank meinem 
Elektronik-Händler  habe ich jetzt einge Zeit mit Fehlersuche verbracht, 
Platine überarbeitet und neu geätzt, half alles nichts, da die zwei 
kondensatoren die ich beim dem Superhändler gekauft hatte anstatt 22pf 
220pF hatten, was zur Folge hatte das mein Quarz nicht schwingte und 
mein Prozessor somit nicht funste, da ich den fehler bei mir suchte und 
nicht beim dem Superelektronikshop, hat das jetzt alles etwas länger 
gedauert ;),......kurz und knapp ich könnte kotzen, wahnsinn,

gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

nicht ärgern, nur lernen.
Ist doch toll, dass du den Fehler gefunden hast!

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

nabend,

ja des ist schon klar, freut mich ja auch, aber es ärgert mich halt 
irgendwie tierisch das es an einem falschen bauteil lag,

zwecks meiner verkabelung hab ich da nochmal ne frage ich habe jetzte 
alle kathode in spalten aufgeteilt, woran dann die d0-d7 angeschlossen 
werden, sprich d0 ist ganz rechts und d7 eben ganz linke spalte, stimmt 
oder??
bei den zeilen hab ich die anoden zusammengfügt, wie ist das dann 
aufgebaut ist die unterste zeile mein sega und die oberste mein seg dp 
,oder ist das andersrum??? oder hätte ich die anoden in den spalten 
zusammenfügen müssen und die kathoden in den zeilen???

hab es mal versucht grafisch darzustellen, pic ist angehängt

gruss

s.

von Udo S. (udo)


Angehängte Dateien:

Lesenswert?

Hallo Sebastian,

ich habe mal einen Auszug von meinem Stromlaufplan beigefügt.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

moin,

ok....so hab ich des auch gehabt, hab auf der anzeige abr nur komische 
grafiken, die linke matrix leuchtet komplett und die zwei anderen zeigen 
irgendwas an, muss jetzt aber erstmal in die schul, schau später mal 
danach und meld mich wieder ;)

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

moin moin,

nach langer pause melde ich mich wieder zurück, habe aber immernoch 
problem mit komischen zeichen auf meiner matrix, soll ich ma ein video 
drehen, vielleicht macht das die sache etwas einfacher,

gruss

s.

von Udo (Gast)


Lesenswert?

Hi Sebastian,

ich hatte schon angenommen, du hättest aufgegeben... ;)

Was heißt "komische Zeichen" ?

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hi udo,

aufgeben, nene dafür hab ich da jetzt schon zuviel herzblut 
reingesteckt, komische zeichen heist meine linke matrix leuchtet 
komplett und die beiden anderen matrixen zeigen irgendwas an, ich dreh 
jetzt einfach mal ein video, kann  ich das hier überhaupt hochladen???

gruss

s.

von Udo (Gast)


Lesenswert?

wahrscheinlich nicht, aber ist ja schon gut beschrieben. Geh doch mal 
systematisch vor: Sprich erst mal alles in der Main auskommentieren was 
nicht zur Initialisierung des Displays gehört. Was macht deine Anzeige 
dann?

von Sebbel L. (langer77)


Lesenswert?

hmmm,

aber ich brauch doch mehr oder weniger alles in dem programm, ok 
geschwindigkeit vielleicht nicht unbedingt aber alles andere so gut wie

s.

von Gast (Gast)


Lesenswert?

Debugger anwerfen.

von Sebbel L. (langer77)


Lesenswert?

ok, los gehts


Loaded plugin STK500
Loaded plugin AVR GCC
Loaded partfile: C:\Programme\Atmel\AVR 
Tools\PartDescriptionFiles\ATmega32
AVR Simulator: Please wait while configuring simulator...
AVR Simulator: ATmega32 Configured OK
Loaded objectfile: C:\Dokumente und 
Einstellungen\school\Desktop\1\led\default\led.elf


-zuerst geht er jetzt die ganze zeichentabellen durch

-dann DDRB = (1<<PB4)|(1<<PB5)|(1<<PB7); der spiu initialisierung

-dann läuft er in dem oberen die nächsten zwei zeilen durch und springt 
danach in die delay_basic

-dann  transmit(0x0C,0x01);    // normal mode  transmit(0x0C,0x01);

-dann forschelife der 7219 initialisierung

-die läuft er durch danach  transmit(0x0A,0x01);// set intensity 0x00 - 
0x0F

-dann die darüberliegende forschleife die läuft er auch durch und danach
transmit(0x0B,0x07);  // scan digits 0-7 Achtung, damit ist eine Stelle 
gemeint

-die forschleife die über dem transmit ist läuft er auch durch springt 
dann in die   transmit(0x09,0x00);   // no decoding
dnach springt er in die forschleife von load low

-danach ins main in die forschleife

-die läuft er auch durch und danach dann ins updatedisplay(test) und 
danach ist dann schluss, jetzt macht er nix mehr und anzeige immernoch 
irgendwas

s.

von Udo (Gast)


Lesenswert?

sorry, hab erst heute abend wieder Zeit.

von Sebbel L. (langer77)


Lesenswert?

kein thema, mach du wie du zeit hast ich probier noch ein bissle

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

sorry, aber da war noch ein Fehler im Programm:
1
#include "Zeichensatz_neu.h"
muss natürlich
1
#include "Zeichensatz.h"
heißen.
Da müsste aber der Compiler eigentlich gemeckert haben.

Außerden solltest du natürlich
1
# define F_CPU 10000000
an deinen CPU-Takt angleichen.

Überprüf auch bitte ob du die LOAD-Leitung an PB4 angeschlossen hast.

Ansonsten diesen Teil in der Main mal auskommentieren:
1
char Test[24];
2
3
  for (int i = 0; i < 24; i++)
4
  {
5
    Test[i] = 0x00;
6
  }
7
  
8
  UpdateDisplay(Test);
9
10
  _delay_ms(1000);
11
  
12
  TestDisplay(SCROLL);
dann sollte das Display nur initialisiert werden und nichts anzeigen.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

Nabend,

das mit dem zeichensatz hab ich vor 2 wochen schon geändert, aber merci

hab am pin 5 sprich pb4(ss) den load der 7219 angeschlossen, passt also 
auch, mein quarz hab ich zwischen 12 und 13 ein 10mhz quartz sollte also 
auch passen, hab leider kein oszi da!

den teil hab ich jetzt auchmal auskomentiert, immernoch dasselbe 
spiel,....kann es sein, da meine platine mit den 3 7219 über ca 10-15cm 
langen leitungen mit der matrix verbunden ist, das ich da irgendwelche 
abartigen störungen reinbekomme??

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

...aber dank dir nochmals,mir langst für heute ;) ich leg mich jetzt mal 
ins nest, morgen wieder

s.

von Udo (Gast)


Lesenswert?

Hallo Sebastian,

laß mal den im obigen Post aufgeführten Teil in der Main auskommentiert 
und ändere diesen Teil mal so ab:
1
void static max7219_Init(void)        // 7219 werden initialisiert
2
{
3
  Load_Low();
4
  for (int i = 0; i < 3; i++)
5
  {
6
  transmit(0x0C,0x01);            // normal mode  transmit(0x0C,0x01);
7
  }
8
  Load_High();
9
10
  Load_Low();
11
  for (int i = 0; i < 3; i++)
12
  {
13
  transmit(0x0A,0x01);            // set intensity 0x00 - 0x0F
14
  }
15
  Load_High();
16
17
  Load_Low();
18
  for (int i = 0; i < 3; i++)
19
  {
20
  transmit(0x0B,0x07);            // scan digits 0-7 Achtung, damit ist eine Stelle gemeint
21
  }
22
  Load_High();
23
24
  Load_Low();
25
  for (int i = 0; i < 3; i++)
26
  {
27
  transmit(0x09,0x00);           // no decoding
28
  }
29
  Load_High();
30
31
  Load_Low();
32
  for (int i = 0; i < 3; i++)
33
  {
34
  transmit(0x0F,0x01);           // Display in Test-Mode, alle LEDs leuchten mit voller Intensität
35
  }
36
  Load_High();
37
}
dann sollten alle LEDs mit voller Intensität leuchten.

Falls nicht, hast du noch irgendeinen Bock in deiner Hardware.

Die Leitungslänge von 10-15cm vom Controller bis zu den 7219 halte ich 
nicht für kritisch, sofern die Masse und auch die +5V über entsprechend 
große Querschnitte verlegt sind, also >0,5mm² und die 
Blockkondensatoren,10µF und 0.1µF, jeweils nahe der 7119 plaziert sind.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

moin moin,

jetzt mal ne blöde Frage, was für Masse und +5V leitunegn meinst du?? An 
meiner Matrix wohl kaum, die an meinem "Mainboard" ist so stark, ist 
0,5mm².
Dann werd ich jetzt mal ausprobieren ob meine LEDs leuchten ;)

s.

von Udo (Gast)


Lesenswert?

ups, sorry, das hatte ich falsch verstanden. Ich dachte die 7219 sitzen 
bei den LEDs. Ok, das kann, muss aber nicht zu Störungen führen. Aber 
bei deinem Probeaufbau hatte es doch auch funktioniert?

Gruß
Udo

von Udo (Gast)


Lesenswert?

naja....wäre vielleicht besser gewesen ich hätte dein Layout nicht 
gesehen... ;-)

Was mir noch eingefallen ist: nachden du den Atmel programmiert hast, 
solltest du die ISP-Zuleitung abziehen und die schaltung resetten. Da du 
keine Entkopplungswiderstände für die ISP-Schnittstelle vorgesehen hast, 
könnte der Prommer die SPI-Schnittstelle behindern.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

wie meinst des mit dem layout??? ist des so bescheiden oder warum ??
was fürn widerstand meisnt du, wo muss der genau hin???

gruss

s.

von Udo (Gast)


Lesenswert?

Man kann, bzw. sollte 100 Ohm Widerstände von den ISP (SPI) Pins des 
Controllers in Reihe zu dem Rest der Schaltung legen. Also Verbindung 
ISP-Pfostenleiste <--> ISP(SPI)-Pins direkt verbinden und Verbindung 
ISP(SPI)-Pins zum Rest der Schaltung über 100 Ohm in Serie. Diese dienen 
dazu, Störungen des Programmiervorgangs durch den Rest der Schaltung zu 
vermeiden. In deinem Fall nicht ganz so schlimm, da nur Eingänge 
angeschaltet sind. Du solltest aber nach dem Programmiervorgang den 
Programmer abziehen und den Controller resetten.

Zu deinem Layout: du hast wahrscheinlich nicht viel Übung im Layouten, 
denn du hast so ziemlich alle Fehler die man machen kann gemacht.
Das fängt bei der Plazierung der ICs an, geht über Verlegung der 
Spannungsversorgung der Ics und endet bei der Plazierung von wichtigen 
Bauteilen wie Blockkondensatoren und Quarze bzw. dessen Kondensatoren. 
Was nutzt dir z. B. eine große Massefläche, wenn die zum Teil bis auf 
wenige mm zum Massepunkt verjüngt wird? Oder Blockkondensatoren..wenn es 
heißt so nah wie möglich ans IC, dann ist damit gemeint, so nah wie 
möglich an die Spannungsversorgungs-Pins des IC. Grundsätzlich wird die 
Spannungsversorgung, also + und Masse von ICs möglichst Sternförmig und 
Parallel verlaufend verlegt. Am Sternpunkt wird die Spannungsversorgung 
eingespeist und dort sitzt i.d.R. ein relativ großer Kondensator von 
mehreren hundert µF.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hmmmm,

ok habe verstanden, ist aber auch erst meine zweite platine,.....hab den 
quelltext jetzt mal abgeändert, es leuchten alle LEDs, aber das tolle 
ist das die rechte und die mittlere in voller intensität leuchten und 
die linke die vorher in voller intensität geleuchtet hat jetzt nicht 
mehr so stark leuchtet.
also den ganzen scheiss jetzt in die presse und neues board planen :(


gruss

s.

von Udo (Gast)


Lesenswert?

nee, nicht in die Tonne kloppen.....

Löt doch versuchshalber mal auf der Lötseite an jeden 7219 direkt 
zwischen Pin19 und Pin9 einen 22µF Kondensator und schau dann mal was 
passiert.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

ok, werd ich probieren, das sollte dann aber ein elko sein, oder ist der 
zu langsam???

gruss

s.

von Udo (Gast)


Lesenswert?

kannst einen ELKO nehmen, evt. noch direkt nen 0,1µF Keramik direkt 
parallel.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hmm,

hab ich jetzt gemacht, gebracht hat es nicht wirklich was,....das 
komische ist das im einschaltmoment die linke matrix auch hell leuchtet 
dann aber wie soll ichs beschreiben sieht aus als ob sie nach rechts 
dann läuft und dabei dunkler wird!!!

gruss
s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

ok, vergiss erst mal das dunkler werden.

Kommentier bitte jetzt mal diesen Teil wieder aus:
1
  Load_Low();
2
  for (int i = 0; i < 3; i++)
3
  {
4
  transmit(0x0F,0x01);           // Display in Test-Mode, alle LEDs leuchten mit voller Intensität
5
  }
6
  Load_High();

und ergänze mal diesen Teil so:
1
//char* Text = "   ZWÖLF BOXKÄMPFER JAGEN VIKTOR QUER ÜBER DEN GROßEN SYLTER DEICH | zwölf boxkämpfer jagen viktor quer über den großen sylter deich   "; // Dieser Text wird angezeigt
2
char* Text = "123";

und diesen Teil so:
1
int main()
2
{
3
  Zeichentabelle_Initialisieren();
4
  SPI_MasterInit();
5
  _delay_us(10);
6
  max7219_Init();
7
  
8
  TextLen = strlen(Text);
9
  char Test[24];
10
11
  for (int i = 0; i < 24; i++)
12
  {
13
    Test[i] = ColumnFromText(i);
14
  }
15
  
16
  UpdateDisplay(Test);
17
18
  //_delay_ms(1000);
19
  
20
  //TestDisplay(SCROLL);    // bei 'SCROLL' läuft der Text von Rechts nach Links durch und bei 'SWING' läuft der Text von Rechts nach Links und wieder zurück.
21
  
22
  while (1) { }
23
24
   return 0;
25
}
dann sollte auf deinem Display "123" erscheinen.

Und immer daran denken, nach dem Programmieren die ISP-Schnittstelle 
abziehen und den Controller resetten.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

ok probier ich aus, was mich jetzt aber ein wenig wundernt warum sind in 
deinem quelltext sachen 0 und 24 , while(1) blau, das einzige was bei 
mir blau ist sind die int, for,char etc...


mach ich vielleicht auchnoch was falsch beim übertragen ?? ich muss ja 
nur das flash programmieren und das eeprom nicht,oder?


gruss

s.

von Udo S. (udo)


Lesenswert?

das hat nur was mit der Darstellung hier auf der Seite was zu tun, ist 
belanglos.

wird alles im Flash abgelegt. Nichts im EEProm.

von Sebbel L. (langer77)


Lesenswert?

ok und die elf, da steht bei mir auch was drin in dem fenster, ich 
versteh die welt nimma, des kann doch alles nicht sein, was mach ich 
bitteschön falsch, jetzt zeigt er mir wieder die linke matrix komplett 
an und bei den anderen beiden leuchten nur die uneteren reihen:(

gruss

s.

von Udo S. (udo)


Lesenswert?

du brauchst im AVR-Studio im Programmierfenster nur beim Flash auf 
"Program" drücken. Aber achte darauf, dass auch der richtige .hex File 
ausgewählt ist.
Also Pfad und Name checken.

von Udo S. (udo)


Lesenswert?

poste mal das Programm, dass du im Moment im AVRStudio stehen hast.

von Udo S. (udo)


Lesenswert?

Die Main sollte aber doch so aussehen:
1
int main()
2
{
3
  Zeichentabelle_Initialisieren();
4
  SPI_MasterInit();
5
  _delay_us(10);
6
  max7219_Init();
7
  
8
  TextLen = strlen(Text);
9
  char Test[24];
10
11
  for (int i = 0; i < 24; i++)
12
  {
13
    Test[i] = ColumnFromText(i);
14
  }
15
  
16
  UpdateDisplay(Test);
17
18
  //_delay_ms(1000);
19
  
20
  //TestDisplay(SCROLL);    // bei 'SCROLL' läuft der Text von Rechts nach Links durch und bei 'SWING' läuft der Text von Rechts nach Links und wieder zurück.
21
  
22
  while (1) { }
23
24
   return 0;
25
}

Du kannst doch obigen Code mit Copy und Paste einfügen...

von Sebbel L. (langer77)


Lesenswert?

oooh sorry das hab ich übersehen, ich änder es mal ab ich lösch mal den 
gesamtem quelltext, find es echt klasse das du mir hilfst

gruss

s.

von Udo S. (udo)


Lesenswert?

kein Problem, gerne...
aber lösch lieber oben das Bild, weil 500K sieht man hier nicht so 
gerne....

von Sebbel L. (langer77)


Lesenswert?

so ich mach schluss für heute,
verändert hat sich nix grossartig, bin aber auch total durcheinander im 
kopf, denke eine nacht drüber schlafen wird das beste sein!
bis morgen

gruss

s.

von Udo (Gast)


Lesenswert?

versuch auch noch mal folgendes: Den Widerstand, der von SCLK der 
SPI-Schnittstelle nach Masse geschaltet ist, gegen +5V schalten oder 
weglassen.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hab ich jetzt probiert und es verhält sich so, wenn der widerstand an 
mass, oder +5V liegt keine veränderung, wenn der widerstand in der luft 
hängt hab ich wieder das die rechten matrix und die mittlere volle 
intensität leuchten und die linke schwächer, quelltext ist unverändert 
zu gestern abend!!!

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

nochmal zum verständnis, du meintest ja den widerstand der an meinem 
letzten 7219 am clk hängt,oder???

ich bin echt kurz davor ne neue platine zu planen, die ich direkt hinter 
die matrix hängen kann, auf der nur die drei 7219 sitzen, den atmel auf 
ne extra platine und drei abgeschirmte leitungen+ versorgung dann nach 
oben führen...die software geht ja,denk ich zumindest ;)

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

ich hab jetzt nochmal auf meinem anderen rechner das avr installiert da 
fragt er mich jetzt am anfang als ich auf verbinden gehe mit dem mkII 
was für eine
oszilator calibration byte nach einer frequenz was für ne frequenz ist 
den das???oder besser gesagt wie bestimm ich die?? es geht 
1MHz,2MHz,4MHz,8MHz

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

nabend,

was ich auch nicht wirlich verstehe, wenn ich vom schaltbild her 
dasselbe aufgebaut habe wie du, dann kann es ja nur an meiner 
beschissenen leitungsführung liegen, wenn bei mir alles indentisch ist, 
muss es doch daran liegen!
ich fahr jetzt mal los und besorg mir ein oszi, bin gerade die neue 
platine zu planen, vielleicht fällt dir ja nochwas ein was ich unbedingt 
beachten sollte, ausser die kondesatoren direkt, bzw. so nahe wie 
möglich an die spannungsversorgung der ics, hast du bei den 100nf, 
folienkondensatoren, oder keramische???

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

..und wenn ich des ganze mit dem hier vergleiche ist bei mir auch nicht 
viel anders,http://www.woe.onlinehome.de/projekte.htm

hab auchschon den atmel getauscht, bringt aber auch nix!!!!

gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

> nochmal zum verständnis, du meintest ja den widerstand der an meinem
> letzten 7219 am clk hängt,oder???
 genau den mein ich. Lass in einfach mal weg.

Dann lad mal dieses Programm:
1
# define F_CPU 4000000
2
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <util/delay.h>
6
#include <stdbool.h>
7
#include <stdlib.h>
8
#include <string.h>
9
10
11
void transmit(unsigned char, char);
12
13
void static Load_Low()      //Datenübernahme durch die 7219 wird vorbereitet
14
{  
15
  PORTB &= ~(1 << PB4);
16
}
17
18
void static Load_High()      //Daten werden von den 7219 übernommen
19
{
20
  PORTB |= (1 << PB4);
21
}
22
23
24
void static SPI_MasterInit(void) {    /* SPI Schnittstelle initialisieren*/
25
26
  DDRB = (1<<PB4)|(1<<PB5)|(1<<PB7);      // set PB4(SS), PB5 (MOSI) and PB7 (SCK) output, all others input
27
28
    SPCR = (1<<MSTR)|(1<<SPE);           // enable Master, SPI, set clock rate fck/4  
29
  
30
    PORTB |= (1 << PB7)|(1 << PB4);
31
}
32
33
void transmit(unsigned char addr, char data) {    /* Daten zu den 7219 schicken*/
34
  
35
  SPDR = addr;                      // Start transmission
36
  while(!(SPSR & (1<<SPIF)));           // Wait for transmission complete
37
  
38
  asm volatile("nop");
39
 
40
  SPDR = data;                      // Start transmission
41
  while(!(SPSR & (1<<SPIF)));            // Wait for transmission complete
42
}
43
44
void static max7219_Init(void)        // 7219 werden initialisiert
45
{
46
  Load_Low();
47
  for (int i = 0; i < 3; i++)
48
  {
49
  transmit(0x0C,0x01);            // normal mode  transmit(0x0C,0x01);
50
  }
51
  Load_High();
52
53
  Load_Low();
54
  for (int i = 0; i < 3; i++)
55
  {
56
  transmit(0x0A,0x01);            // set intensity 0x00 - 0x0F
57
  }
58
  Load_High();
59
60
  Load_Low();
61
  for (int i = 0; i < 3; i++)
62
  {
63
  transmit(0x0B,0x07);            // scan digits 0-7 Achtung, damit ist eine Stelle gemeint
64
  }
65
  Load_High();
66
67
  Load_Low();
68
  for (int i = 0; i < 3; i++)
69
  {
70
  transmit(0x09,0x00);           // no decoding
71
  }
72
  Load_High();
73
}
74
75
76
int main()
77
{  
78
  SPI_MasterInit();
79
  _delay_us(10);
80
  max7219_Init();
81
  
82
  Load_Low();
83
   for (int i = 0; i < 3; i++)
84
   {
85
    transmit(0x0F,0x01);           // Dispay-Test an
86
   }
87
  Load_High();
88
89
  _delay_ms(3000);
90
91
  Load_Low();
92
   for (int i = 0; i < 3; i++)
93
   {
94
    transmit(0x0F,0x00);           // Display-Test aus
95
   }
96
  Load_High();  
97
  
98
  while (1) { }
99
100
   return 0;
101
}

Dann müssten erst alle Stellen komplett leuchten und nach ca.3 Sekunden 
müssten alle LED's ausgehen.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

ok, würd ich gerne machen, kannst mir noch sagen was ich bei dieser 
komischen abgleichfrequenz einstellen muss, bin grad die tür rein, hab 
jetzt aber entlich mal ein oszi


gruss

s.

von Sebbel L. (langer77)


Lesenswert?

nochwas, kann es sein das es auch damit zusammenhängt das wenn ich am 
quarz mit dem oszi messe, auf der einen seite das signal wunderbar 
sinusförmig ist auf der anderen seite weniger sinusförmig??

s.

von Sebbel L. (langer77)


Lesenswert?

nabend,
hab das programm aufgespielt, das mit dem wechseln klappt schon, nur 
sind nicht alle leds an, bzw. aus.........denke echt das die platine 
scheisse ist, da ich ja auch dieses komische phänomän am quarz hab (eine 
seite sauberes signal, andere seite unsauber)....werd mich morgen weiter 
an meinem neuen layout auslassen, mach das so wie ichs oben beschrieben 
habe, eine platine mit den 3x 7219 und was dazugehört, diese dann 
steckbar direkt hinter die matrix, ohne kabel zur verbindung mit der 
matrix, dann die 3 leitungen zum steuern und die spannungsversorgung, 
den prozessor setz ich dann auf ne kleine platine unten ins 
gehäuse,.....wird hoffe ich das einfachste sein, weil so komm ich nicht 
weiter, obwohl mir so bei meinem kampf hilfst,.....man des kann doch 
nicht so schwer sein,.......sach mal kommst du von der küste udo???

soden

gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

sorry, dass mit dieser "Abgleichfrequenz" kann ich dir auch nicht sagen, 
mach mal nen Print-Screen wenn die Meldung kommt.

Das mit dem Quarz dürfte i.O. sein. Je nachdem mit was für einen 
Tastkopf du an die Anschlüsse gehst, wird das Signal mehr oder weniger 
bedämpft. Man sollte in dem Bereich mit Tastköpfen 100:1 arbeiten, aber 
ein 10:1 reicht auch. Aber Hauptsache ist, dass ne Schwingung in 
ausreichender Amplitude da ist, so 3-4 Vss. Wird eh intern im Controller 
ein Rechtecksignal draus gemacht.

Wo du schon mal einen Oszi da hast, mess doch mal die 
Versorgungsspannung, wie die aussieht und auch das SCLK- und LOAD-Signal 
von der SPI-Schnittstelle.

Nein, ich bin nicht von der Küste....:))
Tiefster Ruhrpott hier...

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

moin, moin


aus dem tiefsten ruhrpott also, auch nid schlecht ;)

so hab mal alles gemessen, bin aber nicht der oszi meister, hab alles 
auf auto und 10:1 gemessen, hoffe die bilder sind einigermaßen 
brauchbar, was ich bezweifle, hab mir vorhin nochmals deine platine 
angeschaut in dem anderem forum, da sind ja wesentlich weniger 
kondensatoren und widerstände zu erkennen, und deine max sind ja smd.

gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

die Bilder sind ja soweit ok.
Was hast du für Kondensatoren am Quarz?
Was für ein Netzteil hast du? (Stromlaufplan)?

Das mit der Frequenzeinstellung im AVR-Studio vergiss mal schnell, da du 
ja einen Quarz angeschlossen hast. Dieses Bild ist zum Abgleich, wenn 
man den internen Oszillator benutzt.
Aber zeig doch noch mal ein Bild von den Fuses-Einstellungen. Der dritte 
Reiter von links....

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

mahlzeit,

also als netzteil hab ich so ein kleines steckernetzteil mit 1200mA da, 
5V,...hab dazu leider kein stromlaufplan, hätte aber noch ein richtiges 
netzteil da, zur not.
an meinem quarz hab ich keramsiche kondensatoren 22pF, gemessen haben 
die ca. 23pF,....denk das könnt aber die abweichung meines multimeters 
sein.

bild hab ich angehängt

gruss

s.

von Udo S. (udo)


Lesenswert?

mmh, sieht soweit alles ok aus.
Natürlich ist so eine Ferndiagnose immer schwierig.
Hat das Netzteil denn auch  noch 5V Ausgangsspannung bei Last, also wenn 
z.B. alle LEDs im Testmodus leuchten? Und wie sieht dabei die 
Lastspannung auf dem Oszi aus? Die Masseleitung der Oszi's solltest du 
bei den Messungen immer am Eingangsklemmpunkt der Spannungsversorgung 
deiner Schaltung anschließen.
Mess das mal und mach Bilder davon.

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

so hab ich jetzt mal gemessen, hab jetzt ein andres netzteil dran, 
anständiges industrienetzteil mit 3A bei 5V, bei dem bricht garrahtiert 
nix zusammen, hatte ausserdem ganz am anfang mal den strom der gesamten 
schaltung gemessen als alle leds auf volle intensität leuchteten und da 
kam ich auf 800mA, hab die bilder wieder angehängt,

gruss

s.

von Udo S. (udo)


Lesenswert?

also diese abklingende Schwingung auf DIN gefällt mir gar nicht.. kannst 
du mal die Zeitablenkung vergrößern, so dass man die Schwingung komplett 
sieht?

Das Layout für die Matrix ist ok.

Gruß
Udo

von Udo S. (udo)


Lesenswert?

du meinst jetzt DIN und DOUT ?

Sorry, aber ist sehr schwer nachzuvollziehen was du meinst, wenn du dich 
nicht sorgfältig ausdrückst und an Rechtschreibregeln hälst. 
Rechtschreibfehler ist was anderes, die macht sicher jeder....

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

sorry hab vergessen die bilder anzuhängen

s.

von Sebbel L. (langer77)


Lesenswert?

also als ich von ein und ausgang sprach, meinte ich natürlich DIN und 
DOUT, schreinb immer so schnell, GROSS und klein ist mir da zuviel ;)

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

was mir jetzt auch noch aufgefallen ist, das Signal das am ersten DOUT 
rauskommt sieht fast so aus wie das Signal das ich auf der 5V Leitung 
habe,

werde das Layout jetzt echt nochmal machen, zuerst meine Kondensatoren 
platzieren, oder sollte ich zuerst die Steuerleitungen machen, 
eigentlich hab ich ja nur das Problem auf den DIN und DOUT Leitungen, 
hab die Leitung mal nach dem ersten 7219 unterbrochen bringt aber keinen 
Erfolg, hab dann auch noch einen anderen 7219 gesteckt den ich hier 
rumliegen habe, das bringt aber auch keinen Erfolg, es muss doch an dem 
Layout liegen,oder was meinst du Udo


Gruss

s.

von Udo S. (udo)


Lesenswert?

also, die Bilder die du bis jetzt gepostet hast, zeigen ja nur den 
Ruhezustand, also den LOW-Pegel auf den Leitungen, der allerdings schon 
mit ca. 200mV-300mV Störsignalen überlagert ist. Deutet auf schlechte 
Masseführung und Spannungsversorgungssiebung hin. Kannst du nicht mal 
die Main dahingehend ändern, dass der Test-Modus periodisch wiederholt 
wird? Dann könnte man auch mal die High-Signale sehen. Besser wär 
natürlich für sowas ein Logik-Analyser.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

hmmmm,
jetzt versteh ich garnix mehr,
warum soll das jetzt der Ruhezustand gewesen sein,
das war doch während dem Betrieb,
ich versteh solangsam echt nix mehr, meine Schaltung sollte passen, 
zumindest vom Schaltbild,
die Software sollte passen, laut dir,.....also kann es ja nur noch an 
dem Layout liegen, wenn es nicht am Layout liegt, dann ist der Fehler ja 
in einer der zwei Komponenten von denen ich ausgehe das sie stimmen.
Also hab ich jetzt die Möglichkeit noch Tage hier zu suchen, 
Logikanaylser hab ich leider nicht. Mich immer mehr und mehr verrückt zu 
machen(ich weis garnicht wie oft ich das Schaltbild jetzt schon mit dem 
Layout verglichen habe), dachte jetzt entlich was gefunden zu 
haben,....;(
und wenn ich mir andere Platinen anschaue, z.b. die von 
http://www.woe.onlinehome.de/proj_gif/ledmodul.gif
 dann seh ich da nix anderes, als das was auf meinem Schaltplan ist.

Gruss

S.

von Udo S. (udo)


Lesenswert?

ok, ich denke du hast jetzt gesehen was ich gemeint hab mit Ruhezustand 
bzw. LOW-Pegel und und jetzt siehst du ja auch HIGH-Pegel(Impulse) auf 
den Leitungen
Ist die LOAD-Leitung immer LOW, oder kommt da zwischendrin mal nen 
HIGH-Impuls?

Um das besser sehen zu können nimm als Main einfach mal diese hier:
1
int main()
2
{  
3
  SPI_MasterInit();
4
  _delay_us(10);
5
  max7219_Init();
6
  
7
  while (1)
8
  {
9
    Load_Low();
10
     for (int i = 0; i < 3; i++)
11
     {
12
      transmit(0x0F,0x01);           // Dispay-Test an
13
     }
14
    Load_High();
15
16
    _delay_ms(3000);
17
18
    Load_Low();
19
     for (int i = 0; i < 3; i++)
20
     {
21
      transmit(0x0F,0x00);           // Display-Test aus
22
     }
23
    Load_High();
24
    
25
    _delay_ms(3000);  
26
  }
27
28
  while (1) { }
29
30
   return 0;
31
}

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

ok, probier ich aus,
was ich aber nicht wirklich verstehe ist das return0 !!!
für was ist das??

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

also ich hab das jetzt aufgespielt,
an der LOAD-Leitung scheint sich was zu tun, nur ist das so schnell das 
kann ich nicht messen, meine matrix wechslet jetzt auch, hin und her, 
aber nicht so wie gewollt, sondern so das eine Zeit lang die linke 
Matrix hell leuchtet und die anderen schwach, dann wechselt es das die 
rechte und die mittlere hell leuchtet und die linke schwach, ich mach 
jetzt echt ne neue platine für die max7219, mit den kabel ist des kacke 
und dann kann ich auch gleich meine Leitungsführung verbessern. du hast 
bei dir ja für die CLK,LOAD und DIN Leitung ne abgeschirmte genommen, 
die hast aber nur auf einer seite geerdet, da sonst ja ne masseschleife 
entsteht, oder seh ich das falsch??
gruss

s.

von Udo S. (udo)


Lesenswert?

wieso Masseschleife? Ich hab von meinem Board über die Abschirmung die 
Masse zu den Anzeige-Modulen geführt.

Das return 0 dient dazu, falls sich der Controller in der Main mal 
verschluckt, die Main von Anfang wieder ausgeführt wird. Ist in dem 
obigen Beispiel uninteressant, da der Controller eh in der 
Endlosschleife davor läuft.

Aber das Verhalten deiner Anzeige ist wirklich komisch. Möglich, dass es 
an den langen Leitungen zu den LEDs liegt. Die 7219 sollen sehr 
empfindlich  sein. Das Problem habe ich nicht, da meine 7219 direkt auf 
den Leiterplatten mit den LED-Matrixen sitzen. Andersrum hatte dein 
Probeaufbau ja funktioniert, oder?

Gruß
Udo

von Udo S. (udo)


Lesenswert?

Tausch mal den Teil für die SPI-Initialisierung gegen diesen hier:
1
void static SPI_MasterInit(void) {    /* SPI Schnittstelle initialisieren*/
2
3
  DDRB = (1<<PB4)|(1<<PB5)|(1<<PB7);      // set PB4(SS), PB5 (MOSI) and PB7 (SCK) output, all others input
4
5
    SPCR = (1<<MSTR)|(1<<SPE)|(1<<SPR1)|(1<<SPR0);           // enable Master, SPI, set clock rate fck/128
6
  
7
    PORTB |= (1 << PB7)|(1 << PB4);
8
}

Damit wird die Übertragungsrate der SPI herabgesetzt, evtl. mögen deine 
7219 bzw. dein Aufbau die hohe Übertragungsrate nicht.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

nabend,

mein Probeaufbau hat damals soweit funktioniert, das alle LEDs an waren, 
mehr aber auch nicht!!!

mit dem Return 0, gut zuwissen, wieder wat gelernt.

Ich meinte das mit der Masseschleife so, wenn man ein geschirmtes Kabel 
nimmt und den Schirm auflegt sollte man dies nur auf einer seite der 
Platinen machen, wenn beide am selben Potenzial hängen, aber da erzählt 
dir jeder was anderes, ;)

Das mit der Initialiesierung hat nix gebracht, denke echt das es einfach 
an den langen Leitungen liegt.

Gruss

s.

von Sebbel L. (langer77)


Lesenswert?

...

so ich mach mich dann mal ab in die kiste, will Morgen wieder früh raus 
und das Layout fertig machen ;)

dann mal nen schönen Abend noch, bis morgen....

gruss

s.

von HannsW (Gast)


Lesenswert?

Hallo Udo,
1
Das return 0 dient dazu, falls sich der Controller in der Main mal
2
verschluckt, die Main von Anfang wieder ausgeführt wird. Ist in dem
3
obigen Beispiel uninteressant, da der Controller eh in der
4
Endlosschleife davor läuft.
Die Wirkung mag stimmen, aber die Begründung nicht:

In C ( wie auch in anderen Sprachen ) liefern Funtkionen immer einen 
Wert zurück. Der Typ dieses Wertes steht vor dem Func-Namen. ( Selbst 
wenn nichts zurückgeliefert wird, ist dieses Nichts = void ).
"main()" ist die Funkion, die vom "direkt" vom Betriebssystem aufgerufen 
wird, ist somit "Das Programm". wird main() beendet, ist das Programm 
beendet, und es sollte (!) ein Integer wert ( wegen "int main()" ) ans 
BS geliefert werden: der sogenannte ErrorCode. Main teilt so dem 
aufrufendem System mit, ob es Fehlerfrei ( = 0 laut Vereinbarung ) oder 
nicht beendet wurde. Im "oder nicht" Fall muss der Programmierer dann 
die Auflösung der Codes mitteilen, damit die Aufrufer wissen, was 
geschah.



Gruß Hanns
und schöne Pfingsten.
Ich drücke die Daumen, daß die Schrift bald Laufen lernt

von HannsW (Gast)


Lesenswert?

Hallo Sebbel,

Das mit dem Schirm stimmt schon.
Generell sollten MASSEN an "einem" Punkt zusammengeführt werden.

Verbindest Du zwei "Platinen" mit Masse, und dann den Ausgang der einen 
mit dem Eingang der anderen Platine und zusätzl. die SChirmung i.e. 
Masse, dann bilden Deine Masseleitungen ein Dreieck. wenn dann über jede 
der drei Leitungen ein unterschiedlicher Strom fließt... ( Nimm U= R* I 
und Du weisst Bescheid.)
In der Audiotechnik hört man das dann ganz gut.

Aber erst mal Erfolg bei Deinem Problem, das ich sehr spannend finde
Hanns

von Sebbel L. (langer77)


Lesenswert?

Moin,

Udos Schrift läuft ja, meiner Einer hat Probleme,...aber dat wird


s.

von Sebbel L. (langer77)


Lesenswert?

moin moin,

hätte da mal noch ne frage bezüglich der beschaltung isp schnittstelle 
und controller, hab gerade gesehen das es leute gibt, die zwischen 
sck,miso, mosi und reset, zwischen der schnittestelle und dem controller 
100ohm in reihe haben, stimmt das so??
gruss

s.

von HannsW (Gast)


Lesenswert?

Moin,
mir faäält auf, daß Du mit Deinen Beschriftungen teilweise in der 
falschen Ebene bist.

Allt Verbindungen "x?" sind rot, ebenso wie die Beschriftung des 
Verbinders
rechts unten
Hanns

von HannsW (Gast)


Lesenswert?

DOUT3 ?
gibt es das nicht?
Hanns

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

nabend,

da ich der verzweiflung nahe bin und ehrlich gesgat nichtmehr weiter 
weiss, könnte sich jemand erbarmen und mal schauen ob meine 
prozessorbeschaltung so stimmt???

danke


gruss

s.

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

Moin, Moin...

habe jetzt nochmals meinen Plan der MAX7219 mit Schaltbildern verglichen 
und gemacht und getan, stimmt alles,....Bauteile die ich verabut habe 
sind für den 100nF einen keramischen und den 10µF einen Elko, 
Widerstsände sind normale 1/4 Watt Widerstände.
Die Prozessorplatine werde ich heute ätzen und die MAX7219 PLatine 
gleich auch nochmal,....wie kann ich testen ob die 7219 noch i.O. 
sind???
MUss ich noch irgendetwas an der Prozessorbeschaltung beachten, denke 
doch nicht!
Werde mir gleich nen neuen Prozessor mitnehmen, vielleicht hat der ja 
auch ein Macken!!!!
Habe für die jeingen die es interesiert mal beide Layouts angehängt.

Gruss

S.

von Udo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Sebastian,

so, wieder da...nach langem Wochenende.

Hat sich ja einiges getan. Laß dich nicht unterkriegen, du schaffst das.

Hab mal die Controllerschaltung angehängt.

Gruß
Udo

von Udo (Gast)


Lesenswert?

Hallo Hanns,

du hast natürlich recht.

Sorry, ich hab das vereinfachen wollen und natürlich ist Quatsch dabei 
rausgekommen.

Gruß
Udo

von Udo (Gast)


Lesenswert?

Nachtrag:

Das Spannungsversorgungssymbol im obigen Stromlaufplan "Vcc" soll 
natürlich "+5V" heißen.

von Sebbel L. (langer77)


Lesenswert?

moin udo,

ich hab mal in einem anderem forum gestöbert, da hast du geschrieben das 
du die 7219er mit 4MHz betreiben tust, auf deim schaltbild sehe ich das 
du einen 16MHz Quarz drin hast, kann ich das jetzt so verstehen das dein 
controller mit 16MHz läuft und das SCLK Sgnal dann 4 MHz hat???

dank dir für dein schaltbild, aber das ist ja leider genauso wie meins 
;)

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

so ich nochmal ;)

was mir noch gleich ins auge gefallen ist, du gehst auf deine platine 
mit 5V, ist das ein 5V netzteil??? danach gehst du dann weiter auf die 
schottkydiode und den kondensator, ist das zur filterung????

gruss


s.

von Udo (Gast)


Lesenswert?

Hallo Sebastian,

> du die 7219er mit 4MHz betreiben tust, auf deim schaltbild sehe ich das
> du einen 16MHz Quarz drin hast, kann ich das jetzt so verstehen das dein
> controller mit 16MHz läuft und das SCLK Sgnal dann 4 MHz hat???

richtig, das kannst du in deinem Programm über das SPCR-Register mit 
Hilfe der SPR1 und SPR0 Bits einstellen. Datenblatt lesen....

> was mir noch gleich ins auge gefallen ist, du gehst auf deine platine
> mit 5V, ist das ein 5V netzteil??? danach gehst du dann weiter auf die
> schottkydiode und den kondensator, ist das zur filterung????

richtig, das ist ein 5V-Netzteil. Die Schottky ist dafür da, wenn die 
Spannungsversorgung falsch herum angeschlossen wird, die Schaltung 
geschützt wird. Sie leitet dann nämlich nicht.
Die Kondenstoren dienen dazu um Störspannungen zu unterdrücken.

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

Hallo Udo,

dann hab ich das ja alles richtig gedeutet, werd es jetzt mal in die Tat 
umsetzen,müssen die 100nF und der 0,47microF (sorry hab ein MacBook, da 
find ich das micro grad nicht) unbedingt keramische Kondenstaoren 
seinen, oder können das auch Folienkondensatoren sein???

Gruss

S.

von Udo (Gast)


Lesenswert?

sollten Keramische sein.

von Sebbel L. (langer77)


Lesenswert?

ok, hat das auch ein Grund, weil bei dem Händler meines Vertrauens gab 
es nur Folien als 0,47 microF, hab dann die 100nF dann halt auch als 
Folie mitgenommen!!!

Gruss

S.

von Udo (Gast)


Angehängte Dateien:

Lesenswert?

hab mal ein Layout für den Stromlaufplan angehängt.

Gruß
Udo

von Sebbel L. (langer77)


Angehängte Dateien:

Lesenswert?

Danke Udo,

hab jetzt aber schon mein eigenes erstellt,.....nicht so schön wie 
deins, aber ist leider schon im ätzbad ;)

Gruss

s.

von Sebbel L. (langer77)


Lesenswert?

nabend,

udo was mir aufgefallen ist, ist folgendes, auf meinem alten schlatplan 
ging das rsestsignal der isp schnittstelle vcc am R1 also vor dem 
widerstand, bei dir, aber ich denke mal das ist richtig geht das 
resetsignal von der isp schnittstelle ,auf den punkt R1 der nicht an vcc 
angeschlossen ist, also so ne art pullup,.....und im gegensatz zu meinem 
alten plan hast du im resetzweig einen 47µF drin und in meienm alten 
paln ist ein 100nF drin???

aber ich werd jetzt erstmal wieder messen und schauen ;)

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

ich mal wieder ;)

ich hab jetzt folgenden Programmcode geladen:
1
#define F_CPU 10000000
2
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <util/delay.h>
6
#include <stdbool.h>
7
#include <stdlib.h>
8
#include <string.h>
9
10
11
void transmit(unsigned char, char);
12
13
void static Load_Low()      //Datenübernahme durch die 7219 wird vorbereitet
14
{  
15
  PORTB &= ~(1 << PB4);
16
}
17
18
void static Load_High()      //Daten werden von den 7219 übernommen
19
{
20
  PORTB |= (1 << PB4);
21
}
22
23
24
void static SPI_MasterInit(void) {    /* SPI Schnittstelle initialisieren*/
25
26
  DDRB = (1<<PB4)|(1<<PB5)|(1<<PB7);      // set PB4(SS), PB5 (MOSI) and PB7 (SCK) output, all others input
27
28
    SPCR = (1<<MSTR)|(1<<SPE)|(1<<SPR1)|(1<<SPR0);           // enable Master, SPI, set clock rate fck/128
29
  
30
    PORTB |= (1 << PB7)|(1 << PB4);
31
}
32
33
void transmit(unsigned char addr, char data) {    /* Daten zu den 7219 schicken*/
34
  
35
  SPDR = addr;                      // Start transmission
36
  while(!(SPSR & (1<<SPIF)));           // Wait for transmission complete
37
  
38
  asm volatile("nop");
39
 
40
  SPDR = data;                      // Start transmission
41
  while(!(SPSR & (1<<SPIF)));            // Wait for transmission complete
42
}
43
44
void static max7219_Init(void)        // 7219 werden initialisiert
45
{
46
  Load_Low();
47
  for (int i = 0; i < 3; i++)
48
  {
49
  transmit(0x0C,0x01);            // normal mode  transmit(0x0C,0x01);
50
  }
51
  Load_High();
52
53
  Load_Low();
54
  for (int i = 0; i < 3; i++)
55
  {
56
  transmit(0x0A,0x01);            // set intensity 0x00 - 0x0F
57
  }
58
  Load_High();
59
60
  Load_Low();
61
  for (int i = 0; i < 3; i++)
62
  {
63
  transmit(0x0B,0x07);            // scan digits 0-7 Achtung, damit ist eine Stelle gemeint
64
  }
65
  Load_High();
66
67
  Load_Low();
68
  for (int i = 0; i < 3; i++)
69
  {
70
  transmit(0x09,0x00);           // no decoding
71
  }
72
  Load_High();
73
}
74
75
76
int main()
77
{  
78
  SPI_MasterInit();
79
  _delay_us(10);
80
  max7219_Init();
81
  
82
  while (1)
83
  {
84
    Load_Low();
85
     for (int i = 0; i < 3; i++)
86
     {
87
      transmit(0x0F,0x01);           // Dispay-Test an
88
     }
89
    Load_High();
90
91
    _delay_ms(3000);
92
93
    Load_Low();
94
     for (int i = 0; i < 3; i++)
95
     {
96
      transmit(0x0F,0x00);           // Display-Test aus
97
     }
98
    Load_High();
99
    
100
    _delay_ms(3000);  
101
  }
102
103
  while (1) { }
104
105
   return 0;
106
}

das ergebnis ist, das alle leds eine zeit lang an sind dann wechselt es 
und  fast alle sind aus, bis auf ein paar die leuchten noch in geringer 
intensität,
was ich komisch finde ist das ich keine wirklichen rechtecksignale mehr 
an DIN und CLK messen tue, genauso sieht maeine schwingung am quarz nict 
wirklich sinusförmig aus????

gruss

s.

von Udo S. (udo)


Lesenswert?

Hallo Sebastian,

Die Schwingung die du am Quarz misst, muss nicht Sinusförmig sein. Wenn 
da was faul wäre, würde der Controller überhaupt nicht arbeiten und du 
würdest ihn noch nicht mal programmiert bekommen.
Zu den LEDs die noch schwach leuchten: welchen Wert haben die 
Widerstände die jeweils von Pin 18 gegen +5V bei den 7219 geschaltet 
sind?

Gruß
Udo

von Sebbel L. (langer77)


Lesenswert?

nabend Udo,

die "Vorwiderstände" haben 22KOhm,.....ich weis solangsam echt nimma, 
manchmal denk ich das die Max7219 was abbekommen haben????
vorhin hat ich es einmal das alle an und alle aus waren, glaube das war 
aber ein zufall :(

was ist mit dem 47µF der bei mir in meinem alten Schaltbild ein 100nF 
war,....das mit dem widerstand vor reset ist glaub ich ok, das ist ja 
nur der pullup für den reset,oder??
gruss

s.

von Udo S. (udo)


Lesenswert?

Vorwiderstände?? Das sind keine Vorwiderstände, diese Widerstände dienen 
dazu den max. Strom durch die LEDs einzustellen.

Tausch diese Widerstände mal gegen 30KOhm oder 39KOhm aus.


Ob nun 0,47µF oder 0,1µF ist ziemlich egal. Wenn du 0,1µF drin hast ist 
es auch gut.

Genau, das ist der PullUp-Widerstand für die Reset-Leitung

von Sebbel L. (langer77)


Lesenswert?

....hehe

ok dann halt keine vorwiderstände, habs ja auch in " " gestellt, werd 
ich morgen machen, hab grad leider keine da......bin mal gespannt ob das 
was bringt, aber irgendwie sind mir die zustände der matrix alle zu 
undefiniert, sag mal wo hast du die 7219er hergehabt, hab ne seite im 
netz gefunden da will  derjenige aber 23 euro für die dinger,.....soweit 
ich weis liegen die zwischen 8-10 euros!!!

gruss

s.

von Sebbel L. (langer77)


Lesenswert?

...glaub ich werde morgen mal ein video drehen, mit allem ,
wie ich das dinge compilere, was ich einstelle,oszi signale, jeden 
handgriff und natürlich auch die matrix...

s.

von Udo S. (udo)


Lesenswert?

ich hab meine beim Distributer gekauft. Aber normalerweise haben doch 
alle Großen diese Dinger. Schau doch mal in der Linkliste hier nach: 
http://www.mikrocontroller.net/articles/Elektronikversender

von Sebbel L. (langer77)


Lesenswert?

moin,

so eine Nacht drüber geschlafen, was mit eingefallen ist,
das mit dem ISETabgleich könnte echt für mich wichtig sein, ich habe 
meine Matrix mit superhellen LEDs aufgebaut, da diese LEDs schon bei 
geringem Strom relativ hell leuchten, könnte das ein Teil meiner 
Problemlösung sein, könnte wohlgemerkt ;)
hab aber gleich gestern nochmal drei 7219er geordert, für 4,48€ das 
Stück!!!

soden muss mal los paar Widerstände kaufen

Gruss

s.

von Sebbel L. (langer77)


Lesenswert?

ich nochmsl,

hab mal ein kleines Video der Matrix gemacht, quellcode ist der obige ;)

http://rapidshare.com/files/114782929/CIMG4879.AVI.html

gruss

s.

von Hanns W. (hannsw)


Lesenswert?

Sebbel L. wrote:
> ich nochmsl,
>
> hab mal ein kleines Video der Matrix gemacht, quellcode ist der obige ;)
>
> http://rapidshare.com/files/114782929/CIMG4879.AVI.html
>
Das kostet doch Geld?
Hanns

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.