Hallo µC-Spezialisten,
ich möchte mir langsam das Programmieren von µC beibringen.
Folgendes Zubehör habe ich:
- Pollin Evaluationsboard V2.0
- AVR Studio 4
- WinAVR
- Pony Prog
Nun hab ich gestern begonnen das AVR GCC Tutorial dieser Website
durchzuarbeiten.
Meine Vorgehensweise war folgende:
Ich hab das kleine Einführungsbeispiel in AVR Studio 4 (New Project, AVR
GCC, usw.) eingetippt, kompiliert und mit Hilfe dieser Software eine
.hex Datei erstellt. Diese hab ich dann mit Pony Prog geöffnet und über
die Serielle Schnittstelle an das Board geschickt. Laut Pony Prog hat
alles funktioniert. Auf dem Controller war davor auch ein Mini-Programm
(Taster 1 ==> LED1), welches nun nicht mehr läuft. Folglich hat der
Controller irgendetwas gefressen. Jedoch sind die im Tutorial
beschriebenen Werte nicht zu messen (PB0 und PB1 auf high, der Rest von
PB auf Low)
Kann mir jemand bzgl. meinem Problem weiterhelfen?
Super wären kleine C-Codes die zu diesem Board passen, die Funktionieren
und auf die ich nach und nach aufbauen kann.
Vielen Dank im Voraus für Eure Hilfe
Tom
Folgendes Mini-Programm:
#include <avr/io.h>
int main(void)
{
DDRB = 0xff;
PORTB = 0x03;
while(1)
{
;
}
return 0;
}
Das Programm hängt ja eigentlich nur in der Schleife und setzt PB0 und
PB1. Leider wie gesagt nicht messbar.
Die angesprochenen Fuse-Bits hab ich natürlich nicht beachtet. Kannst Du
mir da weiterhelfen?
Hey, Tom!
Leider nutze ich AVRStudio nicht, aber wenn ich mir das ansehe, würde
ich sagen, es hängt genau da. Denn das Programm sieht gut aus. An den
Fuses kannst du noch folgendes ändern: HAKEN bei CKSEL0 und CKSEL1,
damit ist der ext. Quarz als Quelle gewählt, im Moment läuft er mit
internem RC.
Das hat allerdings nichts mit Deinem Problem zu tun.
Um zu sehen, ob Pony artig war, kannst du ja einfach nach dem Flashen
den Chip auslesen. Eine Äbweichung würdest Du dann sehen.
Ich denke aber wie gesagt, dass bei den Einstellungen vom Studio
irgendwas schiefgelaufen ist.
Mach das ganze doch mal mit WinAVR, dann hast Du die Fehlerquelle
eingegrenzt.
Groeten, Jeroen
Henk wrote:
> Hey, Tom!>> Leider nutze ich AVRStudio nicht, aber wenn ich mir das ansehe, würde> ich sagen, es hängt genau da.
So ein Quatsch.
Das Programm ist in keinster Weise zeitkritisch.
> Denn das Programm sieht gut aus.
Das stimmt allerdings
> An den> Fuses kannst du noch folgendes ändern: HAKEN bei CKSEL0 und CKSEL1,
NICHT!
Im PonyProg ist externer Quarz: KEIN Haken bei CKSEL0 bis CKSEL3
Überlege dir gut was du mit den Haken bei den Fuses anrichtest. Jetzt
ist auf Quarz gestellt nicht auf internen RC-Oszillator. Siehe auch
hier: http://palmavr.sourceforge.net/cgi-bin/fc.cgi
Ein Haken ist nämlich 0 und kein Haken ist 1, das ist verwirrend und
daher mit Vorsicht zu geniessen.
Hubert
Hallo
@Tom
hast du in AVR Studio den Richtigen Kontroller eingestellt
sonst bringt dir das [#include <avr/io.h>] absolut nichts.
bezüglich dem Pollin bord kenn ich mich leider nicht aus
Aber stell nicht den Externen Quarz ein sollange du dich nicht
auskennst. Wenn dann irrgendwas an der HW nicht passt kannst du den uC
ganichtmehr progen, zumindest nicht mit deinen Mitteln.
ach ja und probier einfach mal einen aderen PORT aus
mfg Flo
Das Datenblatt zum Pollin Atmel Evaluations-Board Version 2.0 gibt es
hier:
http://www.pollin.de/shop/downloads/D810038B.PDF
Grundsätzlich kann man beim Atmega16 PB0 und PB1 so schalten, wie du es
in deinem Programm probierst. Diese Portpins sind General-IO fähig.
Bist du sicher, dass du beim Nachmessen (an J4 vom Board ?) die
richtigen Pins (9 oder 10 gegen z.B. 39 (GND)) abgreifst?
Vielen vielen Dank für die Resonanz!!
zu Euer aller Information: Es funktioniert immer noch nichts!
@Flo
die Häkchen müssten eigentlich passen. Und ich gehe ernsthaft davon aus,
dass die HW absolut i. O. ist. Es wurde ja schon mal damit gearbeitet.
Nur nicht von mir. Und ja, im AVR-Studio ist der atmega16 eingestellt,
jedoch keine Frequency.
@Stefan B.
...ja, ich hab richtig gemessen.
@Maxim
Ich hab auch diesen Quellcode getestet. Funktioniert auch nicht.
Kommando zurück!!
Es funktioniert. Ich hab nur eine kleine Einstellung ignoriert.
Danke einstweilen für Eure Unterstüztung.
Wenn noch jemand die Muse hat, mir noch mehr zu helfen:
Ich bin auf der Suche nach Idiotensicheren Quellcodes (gut kommentiert)
die ganz Primitiv diverse I/O´s ansprechen und vor allem: Auf die ich
aufbauen kann und durch Veräderung einfach Erfahrung sammeln kann.
Wäre cool.
Gruß
Tom
Tom wrote:
> Kommando zurück!!>> Es funktioniert. Ich hab nur eine kleine Einstellung ignoriert.
Darf man nachfragen, welche Einstellung fehlerhaft war und das Problem
verursacht hat? Es könnte Jemandem helfen, der sonst morgen mit dem
gleichen Problem kommt.
> Ich bin auf der Suche nach Idiotensicheren Quellcodes (gut kommentiert)> die ganz Primitiv diverse I/O´s ansprechen und vor allem: Auf die ich> aufbauen kann und durch Veräderung einfach Erfahrung sammeln kann.
Die findest Du im Datenblatt des AVRs. Zu jedem AVR-Feature ist ein
kommentierter Beispielcode in ASM und C vorhanden. Dort hast Du auch
noch den Vorteil, dass die Features (Timer, Interrupts, ADC, usw.) des
AVRs sehr genau erklärt werden.
Und wenn das nicht reicht, findest Du bei Atmel auf der HP noch jede
Menge AVR-Appnotes, die den Umgang mit dem AVR anhand kleiner
Code-Beispiele in ASM oder C erklären.
Das GCC-Tutorial dieser Webseite hier soll auch ganz gut sein.
In der Codesammlung (ein Forum hier) findest Du jede Menge gut erklärte
und diskutierte Codebeispiele in ASM und C.
>> Wäre cool.
Du musst also niemanden darum bitten, es ist alles schon da, Du brauchst
Dich nur noch zu bedienen. Also herunterladen, lesen, verstehen,
anwenden.
>> Gruß>> Tom
MFG, Blaubär