Ausgang wird nicht gesetzt

Gast #3144863
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
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.
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.