mikrocontroller.net

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


Autor: Olli (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: doofi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum versuchst Du es nicht erstmal mit einfachem Bitwackeln?

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Andreas W. (geier99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Olli schrieb:
> Was mache ich falsch?

ohne gross darüber nachzudenken :-)

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

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas W.:
Danke
Daran hat es gelegen. Wie dumm von mir :-(.

Aber noch mal vielen Dank.

Gruß
Olli

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.