PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM bei ATmega8



Fakin82
05.06.2005, 10:26
Hallo zusammen....

Habe versucht mit dem ATmega8 ein PWM Signal auszugeben. Doch mein Versuch ist bereits am Anfang gescheitert, denn der Compiler findet das TCCR2 Register nicht! ](*,) Meine Vermutung ist, dass ich noch eine andere header Datei einbinden muss, aber welche? Liegt das überhaupt daran?
Und dann noch was: An welchen Ports/Pins kann ich das Signal dann abgreifen?

Hat vielleicht jemand ein kurzes Beispielprogramm?

Bin für jeden Tipp dankbar........... [-o<

RCO
05.06.2005, 11:11
Poste doch mal deinen Code. Muss es der Timer2 sein? Sonst hätte ich nen Beispiel parat.

linux_80
05.06.2005, 11:12
Hallo,
welche header-datei hast du denn eingebunden, wenn man die io.h einbindet sollte alles nötige enthalten sein.

hier ist die Pinbelegung zu finden:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=126
an Pin 15 u. 16 kann man die PWM signale abgreifen.

Fakin82
05.06.2005, 12:29
Bezüglich Code: Er ist total unvollständig. Wäre nicht sinnvoll ihn rumzuschicken, denn an ihm hab ich "rumgebastelt". Hab gar nicht gewusst dass man PWM auch ohne Timer2 Machen kann... Wäre sehr interessiert an deinem Beispiel.

Die Datei, die ich am Anfang eingebunden hab heißt:
.include "4433def.inc"
Dort heißt auch kein Register TCCR2.

Hab "io.h" nirgends gefunden. Wo krieg ich das her? Hab dafür aber was anderes gefunden: Kann ich statt des "4433def.inc" einfach das "4434def.inc" einbinden, denn da ist das TCCR2 Register drin?

linux_80
05.06.2005, 12:41
in was programmierst Du,
sieht nach Basic aus, damit kenn ich mich nicht aus,
wenn, dann mach ich in C, und dafür ist die io.h
aber hier ist es so, das in der io.h die weiteren Header-dateien eingebunden werden, also sollte es in Basic auch eine übergeordnete .inc-Datei geben die dann alle notwendigen Dateien einbindet. In C heisst sie zB. io4434.h

Kjion
05.06.2005, 13:33
sieht nach Basic aus, damit kenn ich mich nicht aus,
Es sieht mir mehr nach Assembler aus.

Das Register TCCR2 gibt es bei AT90S4433 gar nicht, es stimmt also schon, das der Assembler nix findet.
Da du aber einen ATMega8 programmieren willst solltest du einfach die richtige Headerdatei einbinden, dann klappt das auch ;-)

.include "m8def.inc"

MfG Kjion

Fakin82
05.06.2005, 14:58
Ist Assembler!!! Gut erkannt....

Ich habe am Anfang mal die "m8def.inc" eingebunden, hat mir aber ne Fehlermeldung ausgegeben. Muss dazu sagen, dass ich nicht mehr weiß was das für ne Fehlermeldung war.

Ich werds einfach nochmal versuchen, vielleicht lag der Fehler damals auch woanders...

Vielen Dank bis hierhin... \:D/

izaseba
05.06.2005, 15:26
Hallo,
Welchen Assembler benutzt Du ?
Sollte das tavrasm sein, dann ist es richtig daß er bei m8def.inc einen Fehler meldet und zwar in der Zeile 321, die wegen Kompatibilität drin steht.
Wenn Du sie löschst geht das assemblieren ohne Probleme.
Ich benutze den avra Assembler, dem die Zeile nichts ausmacht.
Man kann auch den gavrasm (http://www.avr-asm-tutorial.net/gavrasm/index_de.html)
von Gerd Schmidt benutzen, der ist auch gut. Bei dem braucht man keine *.inc Dateien,
die hat der Gerd in den Assembler eingebaut, welchen Chip du benutzt wird anhand der .include Zeile erkannt.
Ein Code in Assembler, um PWM zu benutzen findest Du in meinem anderem Thread hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=9857).
Falls es zu unübersichtlich ist melde Dich dann schicke ich Dir was anderes.
Gruß Sebastian

Florian
05.06.2005, 16:45
Kleiner Tipp, benutze die Suche: "PWM Assembler" ;o)
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=46466