Forum: Mikrocontroller und Digitale Elektronik Atmage8 LSD blinkt nicht


von kijiji (Gast)


Lesenswert?

Hallo..
Ich bin halt anfänger und kenne mich nicht so gut mit dem sache(meine 
deutsche sprache ist auch nicht so toll  bitte um verständnes)
ich benutze Atmage8
folgnede program soll dem LED auf PORTB 10 mal blinken lassen ,falls ich 
dem 5v von dem PC0 wegnehme es funktoniert aber nicht wenn ich dem 
programm auf dem Atmega 8 programiere dann blinkt dem LED auf PORTB 10 
mal und dann reagiert nicht mehr



#include <avr/io.h>
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>


int main (void)
{
  DDRD  = 0X03;
  PORTD = 0x00;
  DDRB  = 0xff;                                       // (3)
  PORTB = 0x03;
        DDRC  = 0X00;
  PORTC = 0x00;                                      // (4)

  while(1)
        {
          if (PC0 <((1024.0/5.0)*3))
             {
          for(int n = 0; n < 10; ++n)
    {                                          //
            PORTD ^= ( 1 << PD1 );                //
            _delay_ms(500);
            PORTD ^= ( 1 << PD1 );
            _delay_ms(500);
              }
    }

return 0;
        }
}

von Frank L. (hermastersvoice)


Lesenswert?

LSD blinken lassen? Endlich mal was Neues!!!!!

von kijiji (Gast)


Lesenswert?

LED meine ich

von Ekschperde (Gast)


Lesenswert?

Einrückungen beeindrucken den (C-)Compiler überhaupt nicht.
Der guckt nur nach { und der dazugehörigen }.
Und da hapert es scheinbar.

von kijiji (Gast)


Lesenswert?

also hat jemand ein idea .was  ich machen kann??

von ich (Gast)


Lesenswert?

Abfragen des Pins:

if ( !(PINC & (1<<PINC0)) )

setzten und umsetzten des Ausgangs:

PORTD != ( 1 << PD1 );
_delay_ms(500);
PORTD &= ~( 1 << PD1 );
_delay_ms(500);

steht alles hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

von Jean P. (fubu1000)


Lesenswert?

Hallo,
du sprichst davon an PORTB ne LED blinken zu lassen und wurstelst in 
deinem Code an PORTD rum ! Was denn nun ?
PORTD ist bei dir Eingang (0x00) das kann ja gar nicht gehen.

Gruß

von ich (Gast)


Lesenswert?

jo verschrieben es heißt:
PORTD |= ( 1 << PD1 );

nicht mit "!" sondern mit "|"

von Gs S. (gs-scarnight)


Lesenswert?

Die Zeile

if (PC0 <((1024.0/5.0)*3))

macht auch keinen Sinn, da PC0 eine Konstante ist und damit die Prüfung 
entweder stets erfüllt ist, oder eben nicht.... Hier ist sie immer 
erfüllt, da PC0==0 ist..

Achja und dein return 0; steht in der while-Schleife, damit ist es keine 
Endlosschleife (die sie wohl sein sollte....).

von kijiji (Gast)


Lesenswert?

hab schon bemerkt danke
ich arbeite schon daran . ich hoffe klappt es

von Bastian N. (slime2k)


Lesenswert?

Was ist ein Atmage?

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.