Forum: Mikrocontroller und Digitale Elektronik ATtiny 87 Ausgänge ansteuern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johannes (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Comunity,

Ich kann auf meinem Demoboard die Ausgänge des ATtiny87 nicht schalten.
Ich habe 4 LEDs an den Ausgängen PB0 - PB3. Die LEDs gehen auch sicher, 
da ich vor dem Auflöten des Prozessors direkt mal 5V an PB0 - PB3 gelegt 
habe.
Die LEDs werden aktiv mit High getrieben.
Der Controller läuft mit 8MHz internen RC Oszillator und ISP und Fuses 
lesen schreiben funktioniert problemlos.

Daher vermute ich, dass ich einen groben Fehler in meinem Code übersehen 
habe.

Kann mir jemand helfen? Irgendwie komme ich einfach nicht vorwärts.
1
#include <avr/io.h>
2
#include "main.h"
3
//#include "hwinit.h"
4
#include <avr/interrupt.h>
5
6
volatile uint8_t count = 0;
7
8
int main(void)
9
{
10
  //hw_init();
11
  DDRB |= 0x0F;              // setze PB0 - PB3 als OUT 
12
  TCCR1B |= (1 << CS11) | (1 << CS10);  // Prescaler 64
13
  TIMSK1 |= (1 << TOIE1);          //Timer 1 Overflow intterupt aktivieren
14
  sei();
15
  
16
  PORTB |= 0x0A;
17
    while (1) 
18
    {
19
20
    }
21
}
22
23
ISR(TIMER1_OVF_vect)
24
{
25
  PORTB = (count & 0x0F);
26
  count++;
27
}

In main.h ist nur das define F_CPU 8000000UL.

Danke schonmal!
LG Johannes

von Dietrich L. (dietrichl)


Bewertung
0 lesenswert
nicht lesenswert
Johannes schrieb:
> Daher vermute ich, dass ich einen groben Fehler in meinem Code übersehen
> habe.

Es könnte auch ein Fehler in der HW sein einschließlich Zusammenspiel 
von µC und Programmer.

Ich würde zum Test erstmal nur das Port setzen ohne Timer und ISR. Wenn 
dann nichts leuchet, ist es vermutlich die HW.

> In main.h ist nur das define F_CPU 8000000UL.

.. was in deinem Programmteil garnicht verwendet wird.

Noch was: ist der richtige µC eingestellt?

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Dietrich L. schrieb:
> Ich würde zum Test erstmal nur das Port setzen ohne Timer und ISR.
Das ist dann auch mehr oder weniger der einzige Platz wo mal ein delay() 
stehen darf... ?

von Johannes (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für eure Antworten.
Natürlich war es ein Hardwarefehler auch wenn ich das ja schon 
ausgeschlossen hatte. Nur eben nicht da wo sich das Problem gezeigt 
hat...

Jetzt läuft alles.
Danke :)

P.S.: Falls jemanden interessiert was war. Die Bauteilreferenzen für den 
Pull-up und den Kondensator nach GND am Reset Pin habe ich im Layout 
ausversehen vertauscht.
Da beide 0805 sind, ist dass dann auch erstmal nicht aufgefallen.
Aber so hat man natürlich einen Pull-down am Reset. Daher konnte ich den 
Prozessor zwar Flashen, aber er ist nie angelaufen Facepalm

von HildeK (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johannes schrieb:
> Falls jemanden interessiert was war.

Klar interessiert das. Auch aus den Fehlern anderer kann man lernen. 
Hier: als erstes mal den Resetpegel nachmessen ...

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]
  • [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.