Forum: Mikrocontroller und Digitale Elektronik UCR/UCSRB vs. ADC


von Sven W. (sickone4)


Lesenswert?

Hallo Leute,

wenn ich mein Programm auf meinen Atmega 8 brenne funktioniert dies 
wunderbar.

will ich nun die werte in meinem Programm z.B. mit dem Control Center 
überwachen(ausgeben) dann spinnt meine ADC bzw mien Timer0 funktioniert 
nur bedingt/wie er will...

mach ich da was falsch, oder wird da ggf irgendwas doppelt beschrieben?
und welche möglichkeit hätte ich wenn das zu umgehen?

gruß sven

von Sebi2020 (Gast)


Lesenswert?

Sven Weinmann schrieb:
> Hallo Leute,
>
> wenn ich mein Programm auf meinen Atmega 8 brenne funktioniert dies
> wunderbar.
>
> will ich nun die werte in meinem Programm z.B. mit dem Control Center
> überwachen(ausgeben) dann spinnt meine ADC bzw mien Timer0 funktioniert
> nur bedingt/wie er will...
>
> mach ich da was falsch, oder wird da ggf irgendwas doppelt beschrieben?
> und welche möglichkeit hätte ich wenn das zu umgehen?
>
> gruß sven

Ohne genauer Beschreibung deiner Schaltung, und der Anwendung wird dir 
hier wohl keiner weiterhelfen können. Du erzählst gerade, hier ist nen 
Timer, der geht nicht. Was sollen wir damit anfangen? Eine genauere 
Beschreibung würde helfen...

von Sven W. (sickone4)


Lesenswert?

naja das problem ist, ich hab eine voll funktionsfähige ADC mit 
einzelkanalaufruf und ich hab einen sprinft befehl, welchen ich via 
UCSRA sende

->
[c]void sende (char buffer[])         // Funktionsaufruf
{               // zum Übermitteln einer Zeichenfolge
  for (int i=0; buffer[i]!=0; i++)     // For-Schleife: Abbruch wenn 
Zeichenfolge
    {               // zu Ende ist, sonst "i" inkrementieren
      while (bit_is_clear(UCSRA,5))    // Solange Zeichen noch nicht 
vollständig...
      {  ; }             // ...übermittelt wurde, tue nichts! (warte)

    UDR=buffer[i];           // Danach: Sende aktuelles ("i"-tes) 
Zeichen
    }
}
[/]

in kombination klappt das nicht!

warum verstehe ich nicht! manchmal ist es sogar so, dass ich wenn ich 
die ausgabe benutze sogar erst das control center "verbinden" muss damit 
mein programm läuft.

der quellcode von timer0 und adc sind korrekt. ich denke eher, dass sich 
da irgendwelche register beissen.

von Sebi2020 (Gast)


Lesenswert?

Moment, nur zum Verständnis, du schickst ein Signal über den UART raus, 
und wo kommt da der ADC in spiel, was soll den der ADC machen?!

Wenn ich den Quellcode richtig interpretiere (und meine grauen Zellen 
das noch so im Kopf haben...) liest du einfach aus einem charbuffer, 
zeichen für zeichen in das UDR ein? Sprich er schickt nach und nach ein 
Zeichen über den UART raus?

Was meinst du jetzt mit "Kombinieren", was möchtest du den wie 
Kombinieren?

von Sven W. (sickone4)


Lesenswert?

Sebi2020 schrieb:
> Wenn ich den Quellcode richtig interpretiere (und meine grauen Zellen
> das noch so im Kopf haben...) liest du einfach aus einem charbuffer,
> zeichen für zeichen in das UDR ein? Sprich er schickt nach und nach ein
> Zeichen über den UART raus?

völlig richtig, eine andere art eine variable am bildschirm anzuzeigen 
kenne ich nicht!

Sebi2020 schrieb:
> Moment, nur zum Verständnis, du schickst ein Signal über den UART raus,
> und wo kommt da der ADC in spiel, was soll den der ADC machen?!

auch da stimme ich dir zu! die adc liest mir nur einen potiwert ein, wie 
und warum hat der was mit dem UART zutun! das ist mein problem.

kommentiere ich die zeilen hier aus:
1
sprintf (puffer, "Permanent: %d , Timerwert: %d , B: %d , A: %d , I: %d \n", position_Y, timerwert, B, A, I);
2
sende (puffer);

funktioniert mein programm wunderbar. lasse ich sie über uart senden 
"steht" mein timer oder er gibt nur müll aus oder die adc gibt eben 
sachen aus die nicht stimmen etc....

das macht doch kombiniert keinen sinn! ich habe auch schon alle register 
die ich nutze gecheckt und verglichen.
weder timer0 noch adc noch uart nuzten irgendwas gemeinsam. wie kann das 
denn sein?

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.