Forum: Mikrocontroller und Digitale Elektronik Selbstgebautes Atmega16 Testboard Funktioniert nicht


von kevin m. (kevinm)


Lesenswert?

Gute Tag

In letzter Zeit beschäftige ich mich mit dem Thema Mikrocontroller. Habe 
mir dazu ein Testboard aufgebaut auf dem ein Atmega 16 angeschlossen 
ist.

Leider Funktioniert das Board nur teilweise. Ich kann mich mit dem ISP 
Programmer über AVR Studio 4 erfolgreich verbinden. Auch das auslesen 
der Signatur vom AVR, das setzen von FUSES und flashen des EEPROM/Flash 
speichers funktioniert ohne Fehlermeldung.

Zum Test wollte ich eine LED an einem Pin die ich gegen MASSE geschaltet 
habe leuchten lassen. Leider Funktioniert das nicht. Ich weiß auch nicht 
an was das liegen könnten bzw was ich prüfen könnte warum es nicht 
klappt.

Ich betreibe den AVR mit 5V Spannung an einem Netzteil und Externem 
Quarz. die Stromversorgung habe ich durchgemessen: An beiden Pins GND 
liegt Masse, an VCC und AVCC jeweils 5V. Nur an Aref liegt keine 
Spannung an (aref habe ich mit 100n auf MASSE angeschlossen). Die Pins 
vom Quarz hab ich ebenfalls mit einem Oszi durchgemessen und haben beide 
eine Wechselspannung.

Wenn ich einen Port auf ausgang stellen möchte und einen Pin auf HIGH 
dann bekomme ich aber keine Spannung an diesem PIN?!?

als Programmcode hab ich folgendes geschrieben:
1
    #include <avr/io.h>
2
    #include <avr/interrupt.h>
3
    #include <util/delay.h>
4
    #ifndef F_CPU
5
    #define F_CPU 1000000
6
    #endif
7
8
    void long_delay(uint16_t ms)
9
    {
10
      for(ms=ms; ms>0; ms--) _delay_ms(1);
11
    }
12
13
    int main( void )
14
    {
15
    DDRA = 0b11111111;
16
    DDRB = 0b11111111;
17
    DDRC = 0b11111111;
18
    DDRD = 0b11111111;
19
20
    PORTA = 0b00000000;
21
    PORTB = 0b00000000;
22
    PORTC = 0b00000000;
23
    PORTD = 0b00000000;
24
25
    while( 1 )                 
26
    {
27
    PORTC ^= 0b11111111;
28
    long_delay(5);       
29
    }
30
31
    return 0;
32
    }

von spess53 (Gast)


Lesenswert?

Hi

>    PORTC ^= 0b11111111;

Am PortC sind die Pins für das JTAG-Interface, das im Auslieferzustand 
aktiviert ist -> JTAG Fuse löschen.

MfG Spess

von kevin m. (kevinm)


Lesenswert?

Hallo Spess,

Ich habe gerade nochmal die Fuses überprüft und jtag hatte ich bereits 
gelöscht. In Avr studio hab ich folgende einstellungen:

OCDEN: deaktiviert
JTAGEN: deaktiviert
SPIEN: aktiviert
EESAVE: deaktiviert
BOOTSZ: Boot Flash size=1024 words start address=$1C00
BOOTRST: deaktiviert
CKOPT: aktiviert
BODLEVEL: Brown-out detection at VCC=2,7V
BODEN: deaktiviert
SUT_CKSEL: EXT. Crystal/Resonator High Freq.; Start-up time 16k ck + ms 
=> (mein quarz auf dem Testboard hat 14,7456 MH ist diese einstellung 
korrekt?)

Ich habe als nächstes Probiert ob ich bei PortA die LED zum leuchte 
bringe. Aber auch hier funktioniert es nicht. Als ich nachgemessen hatte 
ist mir aufgefallen das ich bei PIN 40 (PA0) 3,7V bei PIN 39 (PA1) 2,8V 
und bei PIN 38 (PA2) 1,6V habe egal ob ich den Speicher mit einem 
programm geflasht habe oder auf erase device geklickt hatte. Das soll 
doch auch nicht so sein oder?

von Karl H. (kbuchegg)


Lesenswert?

Lass doch mal dein erstes Testprogramm das hier sein
1
#include <avr/io.h>
2
3
int main( void )
4
{
5
  DDRB = 0xFF;
6
7
  PORTB = 0x55;
8
9
  while( 1 )
10
    ;
11
}

und dann gehst du mit deinem Multimeter die Pins durch.

Spannungsversorgungspins (Vcc, AVcc)
Reset-Pin (muss high sein)

und dann natürlich die Pins vom Port B, die abwechselnd High und Low 
sein müssen.

von kevin m. (kevinm)


Lesenswert?

Ne das Funktioniert einfach nicht :/... Also ich hab jetzt das Programm 
von dir auf den AVR aber leider ändert sich an den Pins wiedermal 
überhaupt nichts. Ich weiß nicht was ich falsch mache...

an den Vcc und AVcc hab ich jeweils 5V stromversorgung. Nach dem Flashen 
steck ich den ISP Programmer ab und die Stromversorgung vom avr-Board 
aus und wieder ein aber es ändert sich nichts an den Pins bei PortB.

Reset hab ich mit einem wiederstand (10kohm) nach + geschalten (high?). 
Mittlerweile zweifle ich auch daran das der Quarz richtig läuft ( aber 
auch wenn ich die internen Takt des atmega verwende ändert sich nichts 
an den pins). Von Xtal1 und Xtal2 zum Quarz über 18p transistoren nach 
Masse (Richtig so oder?).

von Karl H. (kbuchegg)


Lesenswert?

Lass den Quarz erst mal aussen vor.
Interner Takt reicht.


Der Mega16 läuft sofort los, sofern
* du an Vcc und AVcc 5V (gegenüber den GND Anschlüssen hast)
* und der reset-Pin auf High ist.

Das ist die Minimalkonfiguration. An Vcc und AVcc müssen jeweils 100nF 
gegen GND sein (obwohl es bei mir in der Schnellverdrahtung auch schon 
ohne ging).

WEnn er dann immer noch nicht läuft, dann hast du
* ihn mitlerweile verfust
* deine Versorgungsspannung ist nicht sauber.
* sonstigen Hardwarefehler, wie zb:
    bei den Pins verzählt
    IC steckt falsch rum im Sockel

von Müder (Gast)


Lesenswert?

Vielleicht den Vorwiderstand der LED vergessen und den Pin in den 
BBQ-Himmel befördert (gegrillt)?

von Sauger (Gast)


Lesenswert?

Moin,

Karl Heinz Buchegger schrieb:
> WEnn er dann immer noch nicht läuft, dann hast du
> * ihn mitlerweile verfust
> * deine Versorgungsspannung ist nicht sauber.
> * sonstigen Hardwarefehler, wie zb:
>     bei den Pins verzählt
>     IC steckt falsch rum im Sockel

... oder im AVR Studio 4 eine falsche *.hex eingestellt.

MfG

von kevin m. (kevinm)


Lesenswert?

Danke für eure super Ratschläge und für die antworten. Jetzt 
funktioniert mein AVR Board :)Habe gestern nochmal alles nachgemessen 
und festgestellt das meine Reset leitung nicht richtig angeschlossen 
war. das hab ich geändert und statt dem atmega16 einen atmega644 
verwendet. Und was soll ich sagen :) es funktioniert alles so wies soll. 
Ich kann alle Ports ansteuern und der externe Quarz funktioniert auch. 
Danke nochmal für die antworten werde eure hilfe wahrscheinlich nochmal 
brauchen :) aber vorerst kann ich selber wieder weiter probieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.