Forum: Mikrocontroller und Digitale Elektronik Atmega8 & 74HC595 & CodeVision


von Olli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Schaltung mit einem Atmega 8 und einem 74HC595, nach dem 
Tutorial auf dieser Seite verschaltet (s. Anhang). An die Ausgänge des 
74HC595 habe ich Widerstände und LEDs gehängt um erstmal zu testen ob 
das ganze funktioniert.

Mein Programm, welches ich in CodeVison AVR verfasst habe sieht in 
groben zügen so aus:

main.h:

#include <mega8.h>

// SPI functions
#include <spi.h>
#include <delay.h>

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=In 
Func0=In
// State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=T 
State0=T
PORTB=0x00;
DDRB=0x2C;

...

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 4000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: High
// SPI Data Order: MSB First
SPCR=0x5C;
SPSR=0x00;

...

while (1)
      {
      // Place your code here
spi(0xff);
delay_ms(2000);
spi(0);
delay_ms(2000);
      };



spi.h:

#ifndef SPIF
#define SPIF 7
#endif

unsigned char spi(unsigned char data)
{
SPDR=data;
while ((SPSR & (1<<SPIF))==0);
return SPDR;
}

Leider tut sich nichts bei den LED, habe schon alle möglichen SPI-Modien 
ausprobiert, sowie gefühlte 100 mal die verkabelung gecheckt. Ich kann 
beobachten, wenn ich den OE* (13) offen lasse (also weder an VDD noch an 
GND), dann gehen alle LEDs aus und wieder an aber sobald ich OE* wieder 
anfasse oder mit VDD verbinde tut sich da nichts. Allerdings gehen dann 
auch nur alle LEDs an oder aus, egal welchen Wert ich bei spi(0x..) 
eintrage.
Was mache ich falsch?

von doofi (Gast)


Lesenswert?

Warum versuchst Du es nicht erstmal mit einfachem Bitwackeln?

von Bensch (Gast)


Lesenswert?

> ...wenn ich den OE* (13) offen lasse

CMOS-Eingänge lässt man einfach nicht offen.
Vielleicht wäre ein Blick ins Datenblatt hilfreich, um die Funktion des 
/OE zu verstehen....

von Andreas W. (geier99)


Lesenswert?

Olli schrieb:
> Was mache ich falsch?

ohne gross darüber nachzudenken :-)

wo generierst Du Deine positive Flanke für den Pin12?

von Olli (Gast)


Lesenswert?

@Bensch
> CMOS-Eingänge lässt man einfach nicht offen.

das ist mir schon klar, hatte ich auch nicht vor aber es ist mir bei den 
zahlreichen Überprüfungen, ob meine Verkablung richtig ist aufgefallen.

von Olli (Gast)


Lesenswert?

Andreas W.:
Danke
Daran hat es gelegen. Wie dumm von mir :-(.

Aber noch mal vielen Dank.

Gruß
Olli

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.