mikrocontroller.net

Forum: Compiler & IDEs PWM - Des Einsteigers größte Hürde :/


Autor: Borsty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ersma Moin an alle hier ^^

Kommen wir mal direkt zu meinem Problemchen:

Ich hab mir vor kurzer Zeit das Set D072 von display3000 bestellt um in 
die weite Welt der µC einzusteigen ;P

Paket kam gestern und bastel seitdem ein wenig mit dem Modul herum.
Heute hatte ich mir vorgenommen einmal die Display-Dimmung in angriff zu 
nehmen. Ich hab einiges bereits ausprobiert was ich hier im Forum 
gefunden hab... Bisher allerdings ohne Ergebnis :(

Folgendes:

  Ich arbeite mit dem AtMega 2561 auf 14,7456 Mhz
  Port B.7 ist mit der Display-Beleuchtung verbunden (ein/aus 
funktioniert)
  Das Datenblatt sagt mir zu diesem Pin folgende Alternativen:
    OC0A/OC1C/PCINT7

  Wie gesagt, probiert hab ich vieles doch nichts brachte bisher meinen 
erhofften Erfolg :/

Ich hoffe das ihr mir ein wenig unter die Arme greifen könnt :)

Mfg Borsty

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Borsty wrote:

>   Wie gesagt, probiert hab ich vieles doch nichts brachte bisher meinen
> erhofften Erfolg :/
>
> Ich hoffe das ihr mir ein wenig unter die Arme greifen könnt :)


Da gibts 2 Wege:

Du zeigst, was Du gemacht hast und kommentierst, wie Du denkst, das es 
funktioniert und dann guckt sich das jemand an und hilft.


Oder Du zeigst garnichts und wartest, bis Dir die gebratenen Tauben in 
den Mund fliegen (das kann dauern).


Peter

Autor: Carbolo Crb (carbolo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine gute Quelle ist vielleicht noch das hier:

http://www.lugbz.org/documents/smart-questions_de.html


GRuss

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Borsty (Gast)

>  Das Datenblatt sagt mir zu diesem Pin folgende Alternativen:
>    OC0A/OC1C/PCINT7

>  Wie gesagt, probiert hab ich vieles doch nichts brachte bisher meinen
>erhofften Erfolg :/

Das soll vorkommen.

AVR-Tutorial: PWM

MFG
Falk

Autor: Borsty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh mann, ich sollte um halb 12 keine Beiträge mehr schreiben :P

Also gut, Ich hab mir bereits diverse Tutorials über PWM auf den Atmel 
µProcs durchgelesen. Mein Problem ist, das ich bevorzugt in C schreibe 
und in dem GCC-Avr Tutorial sind nur drei Tabellen und drei Zeilen Code 
gezeigt.
TCCR1A = (1<<WGM11)|(1<<WGM10)|(1<<COM1A1);  // Nicht inv. 10 Bit PWM
TCCR1B = (1<<CS12) | (1<<CS10);  // Vorteiler von 1024
OCR1A = 128; // Vergleichswert

Leider hab ich den Code der mir probleme bereitet hatte aus Frust wieder 
aus dem Projekt entfernt :X

Was ich bisher nicht verstehe ist, wie ich den oben stehenden Code nun 
auf mein Port B 7 bekomme. ( Laut datenblatt OC0A )

Meine Idee ( eventuell stell ichs mir ganz einfach zu simpel vor oO ):
TCCR0A = (1<<WGM11)|(1<<WGM10)|(1<<COM1A1);  // Nicht inv. 10 Bit PWM
TCCR0B = (1<<CS12) | (1<<CS10);  // Vorteiler von 1024
OCR0A = 128; // Vergleichswert
Allerdings ohne erfolg.

Autor: Borsty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, bevor ichs vergesse. PortB 7 ist als Ausgang definiert ( Simples 
ein und aus schalten funktioniert ja anstandslos )

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Borsty (Gast)

>Oh mann, ich sollte um halb 12 keine Beiträge mehr schreiben :P

Genau, da wird auch die Mutti böse ;-)

>Meine Idee ( eventuell stell ichs mir ganz einfach zu simpel vor oO ):

>TCCR0A = (1<<WGM11)|(1<<WGM10)|(1<<COM1A1);  // Nicht inv. 10 Bit PWM
>TCCR0B = (1<<CS12) | (1<<CS10);  // Vorteiler von 1024
>OCR0A = 128; // Vergleichswert

Alles richtig. Es feht aber noch eine Kleinigkeit. Du must das Pin als 
Ausgang schalten.

DDRB |= (1<<PB7);

MFG
Falk

Autor: Borsty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Alles richtig. Es feht aber noch eine Kleinigkeit. Du must das Pin als
>Ausgang schalten.

>DDRB |= (1<<PB7);

gug ma einen über dir :)

Autor: Andreas Paulin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm.. auf den ersten Blick: Nicht ganz so einfach.

Ich kenne jetzt DEINEN Controller im speziellen nicht, rödel gerade auf 
einem atmega128 herum, aber check mal:
Die Register- und Bitdefinitionen sind vermutlich die falschen.

Register:
Du hast alles 1:1 von T1 auf T0 umgestrickt, aber es GIBT z.B. gar kein 
TCCR0A-Register, nur ein TCCR0-Register.
Timer0 ist (zumindest bei meinem ATMEGA128)ein 8-bit-Timer, T1 ein 
16-Bit-Timer..)

Bitdefinitionen:
Du verwendest Timer0, aber die Bitdefinitionen für Timer1 (CS12, 
COM1A1...)

Check mal das Datenblatt und die Register-und Bitdefinitionen in Deiner 
ioxxxx.h (WinAVR\avr\include\avr)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Borsty (Gast)

>>DDRB |= (1<<PB7);

>gug ma einen über dir :)

Klassische Race condition. Als ich meine Antwort schrieb war dein 
Beitrag noch nicht drin. Als ich meine Antwort abgeschickt hatte, war 
dein Beitrag vor meiner Antwort drin. ;-)

MfG
Falk

Autor: Borsty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ÖÖööööhm Ok... hat sich erledigt.

Hab ein neues Projekt angefangen und dan oben genannten code benutzt.
Funktioniert nun Spitzenmäßig.

Das nächste Ziel werden nun die Interrupts sein =)
Mal gugn wie lange ich dabei ohne Forum auskommt fg

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Borsty (Gast)

>ÖÖööööhm Ok... hat sich erledigt.

Drisch

Die viruelle Watschn hast du dir redlich verdient.

MfG
Falk

Autor: Andreas Paulin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... hab das Datenblatt vom 2561 aber nicht gelesen - Ohne 
Gewähr.....check it!!

Autor: Borsty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub mal das das mit den Konstanten bei den Timer ähnlich wie bei 
den Pins aussieht.

PA1, PB1, PC1, PD1 usw haben alle den Wert 1 ^^

>Die viruelle Watschn hast du dir redlich verdient.

Jo, habs verdient ;P

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.