Forum: Mikrocontroller und Digitale Elektronik atmega 8, Port C.0 als adc und 1-4 als out funktioniert nicht


von Michael W. (michi_gs)


Lesenswert?

Hallo zusammen,

ich hab da mal ne Frage als Anfgänger. Ich hab ein kleines Projekt mit 
12 digitalen Ausgängen und einem ADC Eingang, der zwischendurch gelesen 
werden soll.
Ich verwende einen ATmega8-16PU, nen Pollin-Funk-Evaluationsboard bzw. 
ne eigene Platine wo quasi nur Strom + poti drauf ist (noch).

Mein Problem:
Ich verwende PortB als Ausgänge - klappt alles super. PortC.0 als ADC 
Eingang - funktioniert auch super. Die Software wertet den Eingang aus, 
verwendet den wert und setzt die Ausgänge entsprechend.
Nun brauche ich aber noch weitere vier Ausgänge und dachte, ich nehm das 
PortC.1-4. Aber da passiert mal garnix, irgendwie.

Selbst wenn ich eine Software mache, die via DDRC = (1<<PC1) | ... | 
(1<<PC4) die 1-4 als Ausgänge setzt und die dann einfach alle 
einschalte, passiert nix. Schreibfehler ausgeschlossen - funktioniert so 
mit den anderen Ports ja auch ;)

Meine Vermutung: Trotz Forum-suche und Datenblatt gewälze (hat mich den 
ganzen Abend gekostet gestern), find ich nix, was da irgendwie auf den 
Ports liegen könnte und beim Auslieferungszustand da Probleme 
verursachen könnte.

Hätte jemand von euch eine Idee, was ich bei dem Ding noch beachten 
muss, wenn ich PortC.1-4 als Ausgänge verwenden möchte?

Besten Dank schonmal...

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
poste doch mal deinen Code.
Gruß Jannis

von Michael W. (michi_gs)


Lesenswert?

z.B.:
1
#include <avr/io.h>
2
#include <stdlib.h>       // utoa()
3
#include <string.h>       // strlen()
4
#include <util/delay.h>
5
6
int main(void)
7
{
8
  DDRC |= (1<<PC1);  
9
  PORTC = (1<<PC1);
10
  
11
  while(1);
12
}

von Rolf Magnus (Gast)


Lesenswert?

Ist im Makefile der richtige µC ausgewählt?

von Michael W. (michi_gs)


Angehängte Dateien:

Lesenswert?

Ah, ich vergaß:
Ich benutze Win AVR, da hab ich die makefile von dem projekt mal 
exportiert. Oben steht drin:
1
MCU = atmega8
Das hatte ich in den Einstellungen noch eingestellt, dass das ein 
atmega8 ist. Damit compiliere ich und mit avrdude schiebe ich das rüber 
auf den IC, weil ich irgendwie nicht die ISP mit dem WIN AVR bedienen 
kann?!
1
avrdude -p atmega8 -c ponyser -P com1 -e -U flash:w:text1.hex
klappt aber bisher auch ganz gut :)

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
ich wiederhole mich nur ungerne, aber dein Code währe an dieser Stelle 
schon interresant, nachdem das Makefile ausgeschlossen werden kann.
Gruß Jannis

von Michael W. (michi_gs)


Lesenswert?

Den quellcode den ich oben gepostet habe funktionierte schon nicht, 
deswegen fand ich's so merkwürdig. Darum gings mir ja ;)
jetzt allerdings (alles abstopseln, ausmachen wieder neu aufbauen, 
nochmal kompilieren und messen) funktionierts ... Weiß Gott warum :D 
Wahrscheinlich ein pebkac.... ;)

Daraufhin hab ich das in meinem Projekt nochmal probiert (ist ja quasi 
fast gleich bishier ...) und hab den fehler gefunden, dass ich in nem 
uint8_t ne 12 Bit Zahl verwende. Was jetzt noch nicht so der renner war, 
um ehrlich zu sein. Zwei unterschiedliche Probleme mit den selben 
Symthomen :D

Trotzdem schönen Dank für die schnellen Antworten :)

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.