Forum: Mikrocontroller und Digitale Elektronik Atmega8 Frequenz ausgeben ( Umsteiger Arduino auf AVR )


von Martin (Gast)


Lesenswert?

Hallo Leute,
habe in der Vergangenheit einiges mir Arduino programmiert und will auf 
das AVR-Studio umsteigen… Nun habe ich ein „myAVR board v2.06“ (Atmega8) 
aufgetrieben.
Aufgabe ist eigentlich ganz einfach: Eine über einen Poti einstellbare 
Frequenz soll ausgegeben werde.
In Arduino sah das folgendermaßen aus:
1
int eingang= A0;
2
int LED = 6;
3
int halbf= 1;
4
5
void setup()
6
{
7
pinMode (LED, OUTPUT);
8
}
9
10
void loop()
11
{
12
steuerwinkel =analogRead(eingang);
13
digitalWrite (LED, HIGH);
14
delay (halbf);
15
digitalWrite (LED, LOW);
16
delay (halbf);
17
}
Habe schon so viel probiert und gesucht. Komme leider nicht weiter! Hier 
mein aktueller Versuch im AVR:
1
#define F_CPU 1000000    
2
#include <avr/io.h>
3
#include <util/delay.h>
4
#include <avr/interrupt.h>
5
#include <stdint.h>        
6
7
int main(void)
8
{
9
  int halbf=PC0;
10
  DDRB=0b00000001;
11
  DDRC=0b00000000;    
12
  
13
  while(1)
14
  {
15
    PORTB=0b00000001;
16
    _delay_ms(halbf);
17
    PORTB=00000000;
18
    _delay_ms(halbf);
19
  }
20
}
Leider verändert sich nichts ich bleibe bei über 900KHz.
Wäre TOP wenn mir jemand den Code schickt dann kann ich es 
nachvollziehen…
Vielen Dank im Voraus.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Martin schrieb:

> Leider verändert sich nichts ich bleibe bei über 900KHz.

wie auch.
1
  int halbf=PC0;

ist nun mal kein Ersatz für das Auslesen das ADC.


> Wäre TOP wenn mir jemand den Code schickt dann kann ich es
> nachvollziehen…

Es wäre TOP, wenn du das AVR-GCC-Tutorial studieren würdest.

Dort finden sich dann auch ADC ROutinen die funktionieren.
Und auch die Erkentnis, dass du _delay_ms nicht mit Variablen benutzen 
kannst, weil die Zeiten nicht stimmen werden.

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.