mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny26


Autor: Tobias Paul (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich bin ein ziemlicher Anfänger was µC betrifft.
Meine Entwicklungsumgebung besteht aus einem Laptop, einem Atmel
AVR-ISP Programmer, einer Testplatine für den ATtiny26 und WinAVR.
Leider hab ich ein paar Probleme damit.
1. Der "delay" Befehl
Bei internem RC-Oscillator (1MHz) sind die Zeiten korrekt, benutze ich
aber einen externen Quarz (8MHz)und aktiviere das entsprechende
Fusebit, dann läuft das ganze schneller ab. Egal ob ich 1MHz oder 8MHz
im Makefile einstelle, es verändert sich nichts.

2. Pin Change Interrupt
PORTA hab ich über DDRA = 0xf0 zur hälfte in Eingänge und Ausgänge
geteilt. Wenn ich jetzt ein simples Programm ausführe, (siehe Anhang)
und einen Pin auf HIGH schalte spring der µC sofort wieder in die erste
Programmzeile, obwohl ich keinen Interrupt programmiert hab.

Autor: Tobias Paul (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch die Beschaltung des tiny26.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mache nach der änderung im makefile erst einmal der reihe nach

1. make clean - Löscht alle erzeugten objekt files in welchen noch
bezüge auf die 1MHz stehen könnten.
2. make all - kompiliert alles neu.
3. programm auf den tiny26 raufschieben.

good luck

Werner

Autor: Tobias Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als ich zum ersten Mal den ATtiny26 programmiert habe, habe ich zwar im
Makefile F_CPU 8000000UL eingetragen, hatte aber nicht daran gedacht,
das man noch ein entsprechendes Fusebit setzen muss, da sonst der
interne Oscillator verwendet wird. Also im Makefile stand 8 MHz, der µC
lief aber mit 1 MHz, trotzdem stimmten die Zeiten.
Wenn ich jetzt das Fusebit auf ext. Oscillator umstelle, dann läuft das
ganze Programm viel schneller ab, was die _delay_ms () - Befehle
betrifft. Eigendlich müsste es aber erst jetzt korrekt sein, da Fusebit
8 MHz, und Makefile 8 MHz.

Noch eine Frage zum  Fusebit:
Ich verwende einen externen 8 MHz Quarz der zwischen XTAL1 und XTAL2
und mit je 15pF gegen GND geschaltet ist. Was für ein Fusebit muss ich
denn dann einstellen?
normal doch: ext Crystal High Frequency ....

Autor: Tobias Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass die delay_ms() Funktion von WinAVR nur bei einer
Taktfrequenz von 1 MHz funktioniert?
Desweiteren hab ich gelesen, dass die Funktion F_CPU nur rein
informativen Wert hat und der Takt nur über die Fusebits eingestellt
werden kann.

Dann noch zu dem seltsamen RESET bei Spannungsänderung an den
Eingangspins. Kann das evt. an dem RC-Glied liegen, das eigendlich ein
Prellen verhinden soll? (Schaltplan siehe weiter oben.)

Autor: Fasti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Also wenn ich nicht recht irre wird genau das dein Fehler sein. Woher
soll den der Compiler wissen welchen Quarz du an deinem AVR hast, wenn
du ihm nicht die Frequenz mittels F_CPU mitteilst? Schliesslich braucht
er ja einen Wert um die Millisekunden aus dem CPU-Takt zu errechnen.

mfg

Fasti

Autor: Tobias Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab grad mal den µC am Oszi angeschlossen um die delay_Zeiten zu
messen.

...
for (;;)
{
PORTA = 0xf0;
_delay_ms (1);
PORTA = 0x00;
}
...

Es ist dem µC sowas von egal was ich bei F_CPU hinschreibe. Den Takt
kann ich nur über die Fusebits veränden, und somit auch die Zeiten.
Aber 1 ms soll 1 ms bleiben, egal ob 1 MHz, 4 MHz oder 8 MHz.
Woran könnte dies liegen?

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.