Forum: Mikrocontroller und Digitale Elektronik Am Ausgang nur 0,5V bei log. 1


von Anfänger (Gast)


Lesenswert?

Mein mega8 gibt mir an den Ausgängen von Portb bei einer logischen 1 nur
ca. 0,5V. Und PinB4 ist immer high bei angeschlossenem Parallelport...

Wäre cool wenn mir jemand helfen könnte

Habe folgendes Programm geschrieben:

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>

float del(int x);
int speed(int y);
int main(void){
int delay=50;
int lauflicht;
lauflicht=0x01;
}
  while(1){
    while(lauflicht<0x20){
      lauflicht=(lauflicht<<1);
      PORTB=lauflicht;
      _delay_ms(del(lauflicht)*delay);
      delay=speed(delay);
    }
    while(lauflicht>0x01){
      lauflicht=(lauflicht>>1);
      PORTB=lauflicht;
      _delay_ms(del(lauflicht)*delay);
      delay=speed(delay);
    }
  }
}
float del(int x){
  if (x==0x20 || x==0x01){
    return 0.33;
    }
  if (x==0x04 || x==0x08){
    return 1;
    }
  if (x==0x02 || x==0x10){
    return 0.66;
    }
  return 0;
}
int speed(int y){
  DDRD  = 0x00; /* alle Pins von Port D als Eingang */
  PORTD = 0xff; /* interne Pull-Ups an allen Port-Pins aktivieren */
  if (!( PIND & (1<<PIND2)) ) {
    if(y>0){
      y=y-5;
      _delay_ms(100);
      return y;
    }
  }
  if(y<=0){
    return 100;
  }
  return y;
}

von Rahul (Gast)


Lesenswert?

wo ist deine Main?

von Anfänger (Gast)


Lesenswert?

nach den Funktionsdeklarationen del und speed ...

von Rahul (Gast)


Lesenswert?

oh, gefunden.
sehr schlechter Programmierstil...
Ausserdem ist da eine { zuviel.
Mach doch erst die Port-Initialisierung (in der main()).
Vielleicht solltest du auch dem PORTB sagen, dass er ein Ausgang ist...
DDRB = 0xFF...
Und lass dann deine Schleife laufen.

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.