Liste der Anhänge anzeigen (Anzahl: 1)
Schieberegister als Output
Hi,
ich möchte testweise folgende Schaltung realisieren.
Es wäre toll wenn da mal jemand drüber schaun würde. Es sollen einfach die 16 LEDs angesteuert werden. Das ganze geht über die beiden Schieberegister die hintereinander geschaltet sind. Da fängt das Problem an, wie schliesse ich die 74HC595N korrekt an den PIC an, sodass ich die einfach per SPI ansprechen kann?
Dann würde ich gerne wissen ob ich für die ULN2803A noch irgendwelche Widerstände einbauen muss?
schon mal Danke im Voraus!
Liste der Anhänge anzeigen (Anzahl: 1)
@BlueNature
Was meinst du denn mit Reset? Die Schieberegsiter haben doch garkein Reset.
Mich wurmt es das so eine eigentlich simple Sache nicht klappt, wie soll ich denn dann jemals zu einer aufwendigen Schaltung kommen. Daher wäre es nett wenn ihr mir auf die Sprünge helft.
Folgendermassen sieht nun meine Gesamtschaltung aus. Ich kann dort keinen Fehler erkennen.
Den Pic habe ich mit folgendem TestCode bespielt:
Code:
#include <16F876.h>
#USE DELAY (CLOCK=20000000)
#FUSES HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
unsigned int token;
void main()
{
token = 0;
setup_adc(ADC_OFF);
set_tris_a(0b00000000);
set_tris_b(0b00000000);
set_tris_c(0b00000000);
output_a(0x00);
output_b(0x00);
output_c(0x00);
// Setup SPI
setup_spi(spi_master | spi_l_to_h | spi_clk_div_64);
while(TRUE) // Programmschleife
{
// write to SPI
if(token == 0)
{
spi_write(0x10101010b);
token = 1;
delay_ms(10);
output_high(PIN_C6);
delay_ms(10);
output_low(PIN_C6);
delay_ms(900);
}
else
{
spi_write(0x01010101b);
token = 0;
delay_ms(10);
output_high(PIN_C6);
delay_ms(10);
output_low(PIN_C6);
delay_ms(900);
}
}
}
Der Code soll einfach nur per SPI wechselnde Signale liefern, sodass die LEDs abwechselnd blinken. Es tut sich aber garnix.
Die LEDs leuchten beim starten willkürlich auf und verharren so, ohne dass der PIC irgend einen Einfluss hat.
Wo zum Teufel liegt denn nun mein Fehler?