Ausgang wird nicht gesetzt

Gast #3144863
Lesenswert?

Hallo liebe Community,

Bin Anfänger und scheitere schon an dem setzten eines Ausgangs.
Als ISP-Programmer benutze ich den "mysmartUSB MK 2". Als Controller 
habe ich den Atmega328P.
Außerdem arbeite ich mit dem AVR Studio 6. Ich habe mir mein eigenes 
Testboard zusammen gebaut. ACC gegen Gnd enthällt einen 100nF 
Kondensator genauso wie der RESET Pin. Desweiteren ist der Reset Pin mit 
einen 10k Pullup-Widerstand versehen. Am ausgang habe ich eine einfache 
LED mit 150 ohm Vorwiederstand geschaltet. Zum brennen des Chip's habe 
ich das mit dem Programmer mitgelieferte "myAVR_ProgTool" verwendet. Das 
schreiben in den Flash und eeprom war auch erfolgreich, wenn ich die 
Daten anschließend wieder auslese, sind sie auch vorhanden und 
Identisch.

Zum Betrieb des Chip's reicht doch die Beschaltung von ACC, RESET, GND, 
der Testeingang (PB0) sowie der Testausgang (PC5)aus, oder nicht?
Ich habe die Spannungen am Reset und acc Pin gegen gnd gemessen, sie 
liegt an. Habe auch direkt am Ausgang mal gemessen, es wird keine 
Spannung ausgegeben.
Woran liegts? Hier der Programm Code: (Hatte erst nur die Schleife, dann
habe ich das mit dem zwangssetzen des Ausgangs Probiert)
#include <avr/io.h>

int main(void)
{  DDRB = (0 << DDB0);  //Port B Anschluß 0 als Eingang definieren
  DDRC = (1 << DDC5);  //Port C Anschluß 5 als Ausgang definieren

    while(1){
    if (PINB & (1 << PB0)){
      PORTC = PORTC & (1 << PC5);
    }
    else{
      PORTC = PORTC & (1 << PC5);  /
    }
      PORTC = (1 << PC5);

    }
}
Danke schon mal im Vorraus.
Gast #3144922
Lesenswert?

Ups Tippfehler, ACC = VCC. Acc gibt es ja auch nicht. :-) Versteh ich 
das richtig, das AVCC und AGND auch angeschlossen werden müssen? Im 
Datenblatt stand folgenendes:
AVCC is the supply voltage pin for the A/D Converter, PC3:0, and ADC7:6. 
It should be externally
connected to VCC, even if the ADC is not used. If the ADC is used, it 
should be connected to VCC
through a low-pass filter. Note that PC6...4 use digital supply voltage, 
VCC.

PC5 sollte doch die Spannung über die digitalversorgung VCC bekommen, 
oder hab ich das falsch übersetzt?

Danke.
#3144927
Lesenswert?

DDRB = (0 << DDB0);

 macht keinen Sinn

richtig Waere DDRB &= ~(1 << DDB0);

kannst Du aber am Programm Start auch weglassen, da die Pins nach dem 
Einschalten alle auf Eingang stehen.



Treter_Peter schrieb:
> while(1){
>     if (PINB & (1 << PB0)){


>       PORTC = PORTC & (1 << PC5);

auch das macht hier keinen Sinn
richtig ist
PORTC &= ~(1 << PC5);



>     }
>     else{
>       PORTC = PORTC & (1 << PC5);  /

ebenso hier

>     }
>       PORTC = (1 << PC5);

und hier ist
PORTC |= (1 << PC5);
die richtige Wahl
>
>     }
> }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren