AtTiny45V hängt sich auf (ADC / PWM)

OP #1735521
Lesenswert?

Hi,
ich versuche mit dem AtTiny45V am Port B2 (ADC1) einen Poti einzulesen, 
und dann eine PWM auf dem Timer 0b (PB1) auszugeben.

Das ganze läuft auf 3,3V, und es funktioniert auch ca 10-20 Sekunden, 
danach hängt sich der Tiny einfach auf. Nach einem reset gehts wieder 
ein paar Sekunden.

Aref (PB0) ist auf 3,3V gelegt und per software auf extern geschaltet, 
Abblock-Cs sind drin und Pull-Up für Reset auch.

Wäre nett wenn mal jemand über das Programm schauen könnte, ich finde 
das Problem nicht
Angehängte Dateien:
Moderator Persönliche Seite #1735555
Lesenswert?

Warum sich das aufhängen soll, erschließt sich mir nicht.
Allerdings ist manches etwas umständlich implementiert.  Wenn
du sowieso lückenlos den ADC anwerfen willst, warum dann das
umständliche Gepolle auf ADSC?  Schalt den free running mode
ein (ADATE-Bit), und gut ist's.  Den sleep-Mode muss man auch
nur einmal setzen und nicht immer wieder, und eigentlich selbst
das nicht einmal: IDLE ist ohnehin der default.

Damit könnte man die Funktion readADC1() entsorgen und main()
verkürzen zu:
1
int main(void)
2
{
3
  timer_inestellen();
4
  ADC_init();
5
  sei();
6

7
  // set_sleep_mode(SLEEP_MODE_IDLE);
8
  for (;;)
9
    sleep_mode();
10
}
#1735860
Lesenswert?

Jörg Wunsch schrieb:
> Doch, schon, auch wenn's nutzlos ist (wegen free running mode).

Free running beißt sich dann aber mit dem Sleep:

"Noise Reduction and Idle mode. To make use of this feature, the 
following procedure should be used:
• Make sure that the ADC is enabled and is not busy converting.
Single Conversion mode must be selected and the ADC conversion 
complete interrupt must be enabled.
• Enter ADC Noise Reduction mode (or Idle mode). The ADC will start a 
conversion once the CPU has been halted."


Peter
OP #1735884
Lesenswert?

Naja den sleep-modus hatte ich da schon reingemacht damit er
"Noise Reduction" bzw Idle macht, um störungen zu vermeiden.

Allerdings ist es bei meiner Anwendung jetz nicht kritisch weshalb bei 
mir auch der Free-Running Modus funktioniert.
Ich dachte ja zuerst auch das es was mit den Interrupts zu tun hat.

Anbei packe ich mal den Code der jetzt läuft, allerdings nur bei 5V, mit 
3,3V hängt er sich auf, warum auch immer.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren