Seit ca. 1/2 Jahr arbeite ich mit dem MyAVR-Board. Seit einigen Tagen
funktioniert dieses anscheinend nicht mehr vernünftig. Folgende Probleme
treten auf:
Der interne Takt des ATMEGA8 scheint viel zu gering, z.B folgendes
Testprogramm :
1 | #include <avr/io.h>
|
2 | #define F_CPU xxxUL
|
3 | #include <util/delay.h>
|
4 |
|
5 | int main(void) {
|
6 | DDRC = 0xff;
|
7 | PORTC=0b01010101;
|
8 | while(1){
|
9 | PORTC = 0;
|
10 | PORTC = 0xff;
|
11 | }
|
12 | return 0;
|
13 | }
|
Hier kann man ein deutliches Blinken der LED bei den Standard 3.86 MHz
feststellen, obwohl ich die richtige Taktrate definiert habe.
Also habe ich einen externen Quarzosziallator mit 1 MHz verwendet. Nun
ist der Takt in Ordnung, nur wird z.B. ein Delay zwischen den Zuständen
in der Endlosschleife unendlich lange ausgeführt.
Merkwürdig ist, das keines meiner ehemals lauffähigen Programme mehr
läuft, z.B. das LCD-Display empfängt gar keine Befehle mehr und wird
nicht mal mehr initialisiert.
Nun dachte ich, das ja auch hier die delay.h benutzt wird, und das in
irgend einer Form hier ein Fehler vorliegt, aber die Neuinstallation von
WINAVR hats auch nicht gebracht.
Leider kann ich nicht debuggen, mit dem myAVR-Board o.ä. Den uC habe
ich auch schon mal getauscht, was keine Änderung brachte. Netzteil,
Batterie, LPT bringt alles keine Änderungen.
Wo kann hier nur der Fehler liegen, bzw. was kann ich noch testen?
Achso, AVRDUDE sagt:
C:\DOKUME~1\STANDA~1>avrdude -c sp12 -p m8
AVRDUDE: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.00s
AVRDUDE: Device signature = 0x1e9307
AVRDUDE done. Thank you.
Ich habe absolut keine Ahnung, was hier schiefläuft.
Vielen Dank für eure Hilfe
Tom