www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik at90usb Problem mit Ausgängen


Autor: Matthias Moritz (matthias_moritz)
Datum:

Bewertung
0 lesenswert
nicht 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?

int main (void){

    DDRD = 0xFF;
    DDRB = 0xFF;

    PORTD = 0x01;
    PWM_Init();
    OCR0A = 0x55;
    for(;;){
    }
    

void PWM_Init(void)
{

    TCCR0A=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00); 
    TCCR0B=(1<<CS01)|(1<<CS00); 
    return;
}


Autor: Vorname Nachname (felixx)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Matthias Moritz (matthias_moritz)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Moritz (matthias_moritz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das war der fehler.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.