ärgerlich, es klappt leider nicht so wie ich es möchte.
Folgendes Signal möchte ich ja gerne:
Bild hier
Dieses Signal hat folgender Code erstellt:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000
#define timer (256-F_CPU/64/20000)
int ms; //Interuptzählvariable
ISR(TIMER0_OVF_vect) //Timer Interrupt Vector
{
TCNT0 = timer; //Interupt auf 20000Hz einstellen (Alle 0.05ms ein Interupt)
ms++;
if(ms>=370)
{
PORTB |= (1<<PORTB0);
}
if(ms>=400)
{
PORTB &= ~(1<<PORTB0); ms = 0;
}
}
int main(void)
{
//Ports Init
DDRC |= (1<<PORTB0);
//Timer Init
TIMSK |= (1<<TOIE0); //Timerinterrupt freigeben
TCCR0 |= (1<<CS00) | (1<<CS01) | (!(1<<CS02)); //Timer Prescaler = 64
sei(); //Interrupts global aktivieren
//main Schleife
for (;;)
{
}
}
Genau dieser Code erzeugt aber manchmal... wie z.B. jetzt dieses Signal:
Bild hier
Mir ist es absolut unverständlich. Ich habe auch schon den Controller gewechselt.
Das mein Board kaputt ist kann fast nicht sein, resp. es gibt keinen Grund dazu. Ich verwende ein MysmartUSB v2.
Plötzlich wird aus 2.6...2.7V --->500mV. Da stimmt doch was nicht.
Und die starkabfallenden flanken....
Lesezeichen