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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.