at90usb Problem mit Ausgängen

OP #2099219
Lesenswert?

Hallo Zusammen,

Ich habe mit meinem at90usb1286 ein Problem. Wenn ich den Code unten auf 
den Controller aufspiele, dann glimmt eine LED die an PD0 Angeschlossen 
ist nur ganz leicht auf. Ich denke die bekommt Strom über einen internen 
PullUp Widerstand. Wenn ich den Ausgang auf low setze passiert das 
selbe. Kommentiere ich die PWM_Init Funktion aus, dann leuchtet die LED 
ganz normal wie man es erwartet.
An PB7 kann ich mit ORC0A = ... die Intensität einer LED steuern.

Ich gebe zu, ich hab den Code für die Einstellungen des Timers blind aus 
dem World Wide Web kopiert und (noch) nicht verstanden was da genau 
passiert :-) Ich kann im Datenblatt aber auch keinen Hinweis finden.
Was mache ich falsch?

1
int main (void){
2

3
    DDRD = 0xFF;
4
    DDRB = 0xFF;
5

6
    PORTD = 0x01;
7
    PWM_Init();
8
    OCR0A = 0x55;
9
    for(;;){
10
    }
11
    
12

13
void PWM_Init(void)
14
{
15

16
    TCCR0A=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00); 
17
    TCCR0B=(1<<CS01)|(1<<CS00); 
18
    return;
19
}
#2099455
Lesenswert?

Durch PWM_Init wird die PulsWeitenModulation gestartet. Ich hab nicht im 
Datemblatt nachgeschaut, aber (einer) der PWM-Ausgänge ist vermutlich 
der PD0. Mit OCR0A wird das Tastverhältnis (also An- zu Auszeit) 
eingestellt. In die TCCR0x Register werden die PWM-Frequenz usw. 
eingetragen.
Wenn die LED  nicht glimmen soll, dann nimm besser Programmcode, der 
Deine Aufgabe/Anforderung besser erfüllt ;-)
OP #2102142
Lesenswert?

Hallo,


Vorname Nachname schrieb:
> ..., aber (einer) der PWM-Ausgänge ist vermutlich der PD0

Das Datenblatt sagt mir für PB7:
OC0A/OC1C/PCINT7 (Output Compare and PWM Output A for Timer/Counter0, 
Output Compare and PWM Output C for Timer/Counter1 or Pin Change 
Interrupt 7)

und für PD0:
INT0/SCL/OC0B (External Interrupt0 Input or TWI Serial CLock or Output
Compare for Timer/Counter0)

Ich möchte PB7 als PWM Ausgang und PD0 als ganz normalen Digitalen I/O. 
Mit meiner PWM_Init Funktion werde ich den PD0 auch als PWM Ausgang 
definiert haben. Das möchte ich aber nicht und ich weiß nicht wie es 
richtig geht.

Vielen Dank für die Hilfe.
Gast #2102155
Lesenswert?

Hi

>Ich möchte PB7 als PWM Ausgang und PD0 als ganz normalen Digitalen I/O.
>Mit meiner PWM_Init Funktion werde ich den PD0 auch als PWM Ausgang
>definiert haben. Das möchte ich aber nicht und ich weiß nicht wie es
>richtig geht.

Wenn COM0B1:0 = 00 sind, ist der Pin von Timer getrennt und als normaler 
I/O-Pin verwendbar.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren